2 // DecoderReplacementFallbackBuffer.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.DecoderReplacementFallbackBuffer;
19 namespace MonoTests.System.Text
22 public class DecoderReplacementFallbackBufferTest
24 private Buffer NewInstance ()
26 return new Buffer (new DecoderReplacementFallback ());
30 public void FallbackEmptyDefault ()
32 Buffer b = NewInstance ();
33 Assert.IsTrue (b.Fallback (new byte [] {}, 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 FallbackDefaultEncodingUTF8 ()
45 Buffer b = Encoding.UTF8.DecoderFallback.CreateFallbackBuffer () as Buffer;
46 Assert.IsTrue (b.Fallback (new byte [] {}, 0), "#1");
47 Assert.IsFalse (b.MovePrevious (), "#2");
48 Assert.AreEqual (1, b.Remaining, "#3");
49 Assert.AreEqual ('\uFFFD', b.GetNextChar (), "#4");
53 public void FallbackEmptyForEncodingUTF8 ()
55 Buffer b = new DecoderReplacementFallbackBuffer (new DecoderReplacementFallback (String.Empty));
56 Assert.IsFalse (b.Fallback (new byte [] {}, 0), "#1");
57 Assert.IsFalse (b.MovePrevious (), "#2");
58 Assert.AreEqual (0, b.Remaining, "#3");
59 // the string does not exist.
60 Assert.AreEqual (char.MinValue, b.GetNextChar (), "#4");
64 public void FallbackSequential ()
66 Buffer b = NewInstance ();
67 b.Fallback (new byte [] {}, 0);
69 b.Fallback (new byte [] {}, 0);
73 [ExpectedException (typeof (ArgumentException))]
74 public void FallbackRecursiveError ()
76 Buffer b = NewInstance ();
77 b.Fallback (new byte [] {}, 0);
78 b.Fallback (new byte [] {}, 0);
82 [Category ("NotWorking")]
83 public void Iterate ()
85 Assert.AreEqual ('\0', Encoding.UTF8.DecoderFallback
86 .CreateFallbackBuffer ().GetNextChar (), "#1");
88 Buffer b = NewInstance ();
89 // Assert.AreEqual (1, b.Remaining, "#2");
90 // Assert.AreEqual ('?', b.GetNextChar (), "#3");
91 Assert.AreEqual (0, b.Remaining, "#4");
92 Assert.AreEqual ('\0', b.GetNextChar (), "#5");
93 // Assert.IsTrue (b.MovePrevious (), "#6");
94 // Assert.AreEqual (1, b.Remaining, "#7");
95 Assert.IsFalse (b.MovePrevious (), "#8");
96 // Assert.AreEqual ('?', b.GetNextChar (), "#9");
102 DecoderReplacementFallback f = new DecoderReplacementFallback ("X");
103 DecoderReplacementFallbackBuffer b = new DecoderReplacementFallbackBuffer (f);
104 b.Fallback (new byte [0], 0);
105 Assert.AreEqual (1, b.Remaining, "#1");
107 Assert.AreEqual (0, b.Remaining, "#2");
108 b.Fallback (new byte [0], 0); // do not raise an error
110 Assert.AreEqual (0, (int) b.GetNextChar (), "#3");