2 // EncoderReplacementFallbackBuffer.cs
5 // Atsushi Enomoto <atsushi@ximian.com>
7 // Copyright (C) 2005 Novell, Inc. http://www.novell.com
15 using NUnit.Framework;
17 using Buffer = System.Text.EncoderReplacementFallbackBuffer;
19 namespace MonoTests.System.Text
22 public class EncoderReplacementFallbackBufferTest
24 private Buffer NewInstance ()
26 return new Buffer (new EncoderReplacementFallback ());
30 public void FallbackEmptyDefault ()
32 Buffer b = NewInstance ();
33 Assert.IsTrue (b.Fallback ('X', 0), "#0");
34 Assert.IsFalse (b.MovePrevious (), "#1");
35 Assert.AreEqual (1, b.Remaining, "#2");
36 Assert.AreEqual ('?', b.GetNextChar (), "#3");
37 Assert.AreEqual (0, b.Remaining, "#4");
38 // the string is already consumed.
39 Assert.AreEqual (char.MinValue, b.GetNextChar (), "#5");
43 public void FallbackEmptyForEncodingUTF8 ()
45 Buffer b = Encoding.UTF8.EncoderFallback.CreateFallbackBuffer () as Buffer;
46 Assert.IsFalse (b.Fallback ('X', 0), "#1");
47 Assert.IsFalse (b.MovePrevious (), "#2");
48 Assert.AreEqual (0, b.Remaining, "#3");
49 // the string does not exist.
50 Assert.AreEqual (char.MinValue, b.GetNextChar (), "#4");
54 public void FallbackSequential ()
56 Buffer b = NewInstance ();
63 [ExpectedException (typeof (ArgumentException))]
64 public void FallbackRecursiveError ()
66 Buffer b = NewInstance ();
72 public void Iterate ()
74 Assert.AreEqual ('\0', Encoding.UTF8.EncoderFallback
75 .CreateFallbackBuffer ().GetNextChar (), "#1");
77 Buffer b = NewInstance ();
78 Assert.AreEqual (1, b.Remaining, "#2");
79 Assert.AreEqual ('?', b.GetNextChar (), "#3");
80 Assert.AreEqual (0, b.Remaining, "#4");
81 Assert.AreEqual ('\0', b.GetNextChar (), "#5");
82 Assert.IsTrue (b.MovePrevious (), "#6");
83 Assert.AreEqual (1, b.Remaining, "#7");
84 Assert.IsFalse (b.MovePrevious (), "#8");
85 Assert.AreEqual ('?', b.GetNextChar (), "#9");