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