1 // 2 // EncoderReplacementFallbackBuffer.cs 3 // 4 // Author: 5 // Atsushi Enomoto <atsushi@ximian.com> <atsushi@xamarin.com> 6 // 7 // Copyright (C) 2005 Novell, Inc. http://www.novell.com 8 // Copyright (C) 2011 Xamain, Inc. http://xamarin.com 9 // Copyright 2011 Xamarin Inc (http://www.xamarin.com). 10 // 11 12 13 using System; 14 using System.IO; 15 using System.Text; 16 using NUnit.Framework; 17 18 using Buffer = System.Text.EncoderReplacementFallbackBuffer; 19 20 namespace MonoTests.System.Text 21 { 22 [TestFixture] 23 public class EncoderReplacementFallbackBufferTest 24 { NewInstance()25 private Buffer NewInstance () 26 { 27 return new Buffer (new EncoderReplacementFallback ()); 28 } 29 30 [Test] FallbackEmptyDefault()31 public void FallbackEmptyDefault () 32 { 33 Buffer b = NewInstance (); 34 Assert.IsTrue (b.Fallback ('X', 0), "#0"); 35 Assert.IsFalse (b.MovePrevious (), "#1"); 36 Assert.AreEqual (1, b.Remaining, "#2"); 37 Assert.AreEqual ('?', b.GetNextChar (), "#3"); 38 Assert.AreEqual (0, b.Remaining, "#4"); 39 // the string is already consumed. 40 Assert.AreEqual (char.MinValue, b.GetNextChar (), "#5"); 41 } 42 43 [Test] FallbackEmptyForEncodingUTF8()44 public void FallbackEmptyForEncodingUTF8 () 45 { 46 Buffer b = Encoding.UTF8.EncoderFallback.CreateFallbackBuffer () as Buffer; 47 Assert.IsTrue (b.Fallback ('X', 0), "#1"); 48 Assert.IsFalse (b.MovePrevious (), "#2"); 49 Assert.AreEqual (1, b.Remaining, "#3"); 50 // the string does not exist. 51 Assert.AreEqual ('\uFFFD', b.GetNextChar (), "#4"); 52 } 53 54 [Test] FallbackSequential()55 public void FallbackSequential () 56 { 57 Buffer b = NewInstance (); 58 b.Fallback ('X', 0); 59 b.GetNextChar (); 60 b.Fallback ('X', 0); 61 } 62 63 [Test] 64 [ExpectedException (typeof (ArgumentException))] FallbackRecursiveError()65 public void FallbackRecursiveError () 66 { 67 Buffer b = NewInstance (); 68 b.Fallback ('X', 0); 69 b.Fallback ('X', 0); 70 } 71 72 [Test] 73 [Category ("NotWorking")] Iterate()74 public void Iterate () 75 { 76 Assert.AreEqual ('\0', Encoding.UTF8.EncoderFallback 77 .CreateFallbackBuffer ().GetNextChar (), "#1"); 78 79 Buffer b = NewInstance (); 80 // Assert.AreEqual (1, b.Remaining, "#2"); 81 // Assert.AreEqual ('?', b.GetNextChar (), "#3"); 82 Assert.AreEqual (0, b.Remaining, "#4"); 83 Assert.AreEqual ('\0', b.GetNextChar (), "#5"); 84 // Assert.IsTrue (b.MovePrevious (), "#6"); 85 // Assert.AreEqual (1, b.Remaining, "#7"); 86 Assert.IsFalse (b.MovePrevious (), "#8"); 87 // Assert.AreEqual ('?', b.GetNextChar (), "#9"); 88 } 89 90 [Test] Reset()91 public void Reset () 92 { 93 // Xamarin bug #545 94 Encoding.UTF8.GetBytes ("\uDE7E\uDE7E"); 95 } 96 } 97 } 98 99 100