| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- //
- // DecoderReplacementFallbackBuffer.cs
- //
- // Author:
- // Atsushi Enomoto <[email protected]>
- //
- // Copyright (C) 2005 Novell, Inc. http://www.novell.com
- //
- #if NET_2_0
- using System;
- using System.IO;
- using System.Text;
- using NUnit.Framework;
- using Buffer = System.Text.DecoderReplacementFallbackBuffer;
- namespace MonoTests.System.Text
- {
- [TestFixture]
- public class DecoderReplacementFallbackBufferTest
- {
- private Buffer NewInstance ()
- {
- return new Buffer (new DecoderReplacementFallback ());
- }
- [Test]
- public void FallbackEmptyDefault ()
- {
- Buffer b = NewInstance ();
- Assert.IsTrue (b.Fallback (new byte [] {}, 0), "#0");
- Assert.IsFalse (b.MovePrevious (), "#1");
- Assert.AreEqual (1, b.Remaining, "#2");
- Assert.AreEqual ('?', b.GetNextChar (), "#3");
- Assert.AreEqual (0, b.Remaining, "#4");
- // the string is already consumed.
- Assert.AreEqual (char.MinValue, b.GetNextChar (), "#5");
- }
- [Test]
- public void FallbackDefaultEncodingUTF8 ()
- {
- Buffer b = Encoding.UTF8.DecoderFallback.CreateFallbackBuffer () as Buffer;
- Assert.IsTrue (b.Fallback (new byte [] {}, 0), "#1");
- Assert.IsFalse (b.MovePrevious (), "#2");
- Assert.AreEqual (1, b.Remaining, "#3");
- Assert.AreEqual ('\uFFFD', b.GetNextChar (), "#4");
- }
- [Test]
- public void FallbackEmptyForEncodingUTF8 ()
- {
- Buffer b = new DecoderReplacementFallbackBuffer (new DecoderReplacementFallback (String.Empty));
- Assert.IsFalse (b.Fallback (new byte [] {}, 0), "#1");
- Assert.IsFalse (b.MovePrevious (), "#2");
- Assert.AreEqual (0, b.Remaining, "#3");
- // the string does not exist.
- Assert.AreEqual (char.MinValue, b.GetNextChar (), "#4");
- }
- [Test]
- public void FallbackSequential ()
- {
- Buffer b = NewInstance ();
- b.Fallback (new byte [] {}, 0);
- b.GetNextChar ();
- b.Fallback (new byte [] {}, 0);
- }
- [Test]
- [ExpectedException (typeof (ArgumentException))]
- public void FallbackRecursiveError ()
- {
- Buffer b = NewInstance ();
- b.Fallback (new byte [] {}, 0);
- b.Fallback (new byte [] {}, 0);
- }
- [Test]
- [Category ("NotWorking")]
- public void Iterate ()
- {
- Assert.AreEqual ('\0', Encoding.UTF8.DecoderFallback
- .CreateFallbackBuffer ().GetNextChar (), "#1");
- Buffer b = NewInstance ();
- // Assert.AreEqual (1, b.Remaining, "#2");
- // Assert.AreEqual ('?', b.GetNextChar (), "#3");
- Assert.AreEqual (0, b.Remaining, "#4");
- Assert.AreEqual ('\0', b.GetNextChar (), "#5");
- // Assert.IsTrue (b.MovePrevious (), "#6");
- // Assert.AreEqual (1, b.Remaining, "#7");
- Assert.IsFalse (b.MovePrevious (), "#8");
- // Assert.AreEqual ('?', b.GetNextChar (), "#9");
- }
- [Test]
- public void Reset ()
- {
- DecoderReplacementFallback f = new DecoderReplacementFallback ("X");
- DecoderReplacementFallbackBuffer b = new DecoderReplacementFallbackBuffer (f);
- b.Fallback (new byte [0], 0);
- Assert.AreEqual (1, b.Remaining, "#1");
- b.Reset ();
- Assert.AreEqual (0, b.Remaining, "#2");
- b.Fallback (new byte [0], 0); // do not raise an error
- b.Reset ();
- Assert.AreEqual (0, (int) b.GetNextChar (), "#3");
- }
- }
- }
- #endif
|