2 // EncoderReplacementFallback.cs
5 // Atsushi Enomoto <atsushi@ximian.com>
7 // Copyright (C) 2005 Novell, Inc. http://www.novell.com
15 using NUnit.Framework;
17 namespace MonoTests.System.Text
20 public class EncoderReplacementFallbackTest
23 public void Defaults ()
25 EncoderReplacementFallback f =
26 new EncoderReplacementFallback ();
27 Assert.AreEqual ("?", f.DefaultString, "#1");
28 Assert.AreEqual (1, f.MaxCharCount, "#2");
30 f = new EncoderReplacementFallback (String.Empty);
31 Assert.AreEqual (String.Empty, f.DefaultString, "#3");
32 Assert.AreEqual (0, f.MaxCharCount, "#4");
34 f = Encoding.UTF8.EncoderFallback as EncoderReplacementFallback;
35 Assert.IsNotNull (f, "#5");
36 Assert.AreEqual (String.Empty, f.DefaultString, "#6");
37 Assert.AreEqual (0, f.MaxCharCount, "#7");
39 // after beta2 this test became invalid.
40 //f = new MyEncoding ().EncoderFallback as EncoderReplacementFallback;
41 //Assert.IsNotNull (f, "#8");
42 //Assert.AreEqual (String.Empty, f.DefaultString, "#9");
43 //Assert.AreEqual (0, f.MaxCharCount, "#10");
45 f = EncoderFallback.ReplacementFallback as EncoderReplacementFallback;
46 Assert.AreEqual ("?", f.DefaultString, "#11");
47 Assert.AreEqual (1, f.MaxCharCount, "#12");
51 [ExpectedException (typeof (InvalidOperationException))]
52 public void DontChangeReadOnlyUTF8EncoderFallback ()
54 Encoding.UTF8.EncoderFallback =
55 new EncoderReplacementFallback ();
59 [ExpectedException (typeof (InvalidOperationException))]
60 public void DontChangeReadOnlyCodePageEncoderFallback ()
62 Encoding.GetEncoding (932).EncoderFallback =
63 new EncoderReplacementFallback ();
67 [ExpectedException (typeof (InvalidOperationException))]
68 public void CustomEncodingSetEncoderFallback ()
70 new MyEncoding ().EncoderFallback =
71 new EncoderReplacementFallback ();
75 [ExpectedException (typeof (InvalidOperationException))]
76 public void EncodingSetNullEncoderFallback ()
78 Encoding.Default.EncoderFallback = null;
82 // Don't throw an exception
83 public void SetEncoderFallback ()
85 Encoding.Default.GetEncoder ().Fallback =
86 new EncoderReplacementFallback ();
90 [ExpectedException (typeof (ArgumentNullException))]
91 public void EncoderSetNullFallback ()
93 Encoding.Default.GetEncoder ().Fallback = null;
97 public void Latin1Replacement ()
98 // coz Latin1 is easy single byte encoding.
100 Encoding enc = Encoding.GetEncoding (28591); // Latin1
101 byte [] reference = new byte [] {0x58, 0x58, 0x3F, 0x3F, 0x3F, 0x5A, 0x5A};
102 byte [] bytes = enc.GetBytes ("XX\u3007\u4E00\u9780ZZ");
103 Assert.AreEqual (reference, bytes, "#1");