Merge pull request #767 from ovatsus/Bug14922
[mono.git] / mcs / class / corlib / Test / System.Text / DecoderReplacementFallbackBufferTest.cs
index 9aab4b8147cdc0d6ef45b545e24c42b6243f4f32..2a597ae1a22245ac6689a155ad42727e3259b251 100644 (file)
@@ -40,9 +40,19 @@ namespace MonoTests.System.Text
                }
 
                [Test]
-               public void FallbackEmptyForEncodingUTF8 ()
+               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");
@@ -85,6 +95,20 @@ namespace MonoTests.System.Text
                        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");
+               }
        }
 }