5 // Atsushi Enomoto <atsushi@ximian.com>
7 // Copyright (C) 2005 Novell, Inc. http://www.novell.com
13 using NUnit.Framework;
15 namespace MonoTests.I18N.CJK
20 void AssertEncode (string utf8file, string decfile, int codepage)
22 string decoded = null;
23 byte [] encoded = null;
24 using (StreamReader sr = new StreamReader (utf8file,
26 decoded = sr.ReadToEnd ();
28 using (FileStream fs = File.OpenRead (decfile)) {
29 encoded = new byte [fs.Length];
30 fs.Read (encoded, 0, (int) fs.Length);
32 Encoding enc = Encoding.GetEncoding (codepage);
36 //Assert.AreEqual (encoded.Length,
37 // enc.GetByteCount (decoded),
38 // "GetByteCount(string)");
39 actual = enc.GetBytes (decoded);
40 Assert.AreEqual (encoded, actual,
44 Assert.AreEqual (encoded.Length,
45 enc.GetByteCount (decoded.ToCharArray (), 0, decoded.Length),
46 "GetByteCount(char[], 0, len)");
47 actual = enc.GetBytes (decoded.ToCharArray (), 0, decoded.Length);
48 Assert.AreEqual (encoded, actual,
49 "GetBytes(char[], 0, len)");
52 void AssertDecode (string utf8file, string decfile, int codepage)
54 string decoded = null;
55 byte [] encoded = null;
56 using (StreamReader sr = new StreamReader (utf8file,
58 decoded = sr.ReadToEnd ();
60 using (FileStream fs = File.OpenRead (decfile)) {
61 encoded = new byte [fs.Length];
62 fs.Read (encoded, 0, (int) fs.Length);
64 Encoding enc = Encoding.GetEncoding (codepage);
67 Assert.AreEqual (decoded.Length,
68 enc.GetCharCount (encoded, 0, encoded.Length),
69 "GetCharCount(byte[], 0, len)");
70 actual = enc.GetChars (encoded, 0, encoded.Length);
71 Assert.AreEqual (decoded.ToCharArray (), actual,
72 "GetChars(byte[], 0, len)");
80 public void CP936_Encode ()
82 AssertEncode ("Test/texts/chinese-utf8.txt", "Test/texts/chinese-936.txt", 936);
86 public void CP936_Decode ()
88 AssertDecode ("Test/texts/chinese-utf8.txt", "Test/texts/chinese-936.txt", 936);
94 public void CP950_Encode ()
96 AssertEncode ("Test/texts/chinese2-utf8.txt", "Test/texts/chinese2-950.txt", 950);
100 public void CP950_Decode ()
102 AssertDecode ("Test/texts/chinese2-utf8.txt", "Test/texts/chinese2-950.txt", 950);
108 public void CP54936_Encode ()
110 AssertEncode ("Test/texts/chinese-utf8.txt", "Test/texts/chinese-54936.txt", 54936);
114 public void CP54936_Decode ()
116 AssertDecode ("Test/texts/chinese-utf8.txt", "Test/texts/chinese-54936.txt", 54936);
126 public void CP932_Encode ()
128 AssertEncode ("Test/texts/japanese-utf8.txt", "Test/texts/japanese-932.txt", 932);
132 public void CP932_Decode ()
134 AssertDecode ("Test/texts/japanese-utf8.txt", "Test/texts/japanese-932.txt", 932);
140 public void CP51932_Encode ()
142 AssertEncode ("Test/texts/japanese-utf8.txt", "Test/texts/japanese-51932.txt", 51932);
146 public void CP51932_Decode ()
148 AssertDecode ("Test/texts/japanese-utf8.txt", "Test/texts/japanese-51932.txt", 51932);
154 public void CP50220_Encode ()
156 AssertEncode ("Test/texts/japanese2-utf8.txt", "Test/texts/japanese2-50220.txt", 50220);
160 public void CP50220_Decode ()
162 AssertDecode ("Test/texts/japanese2-utf8.txt", "Test/texts/japanese2-50220.txt", 50220);
166 public void CP50221_Encode ()
168 AssertEncode ("Test/texts/japanese-utf8.txt", "Test/texts/japanese-50221.txt", 50221);
172 public void CP50221_Decode ()
174 AssertDecode ("Test/texts/japanese-utf8.txt", "Test/texts/japanese-50221.txt", 50221);
179 [Category ("NotDotNet")] // MS is buggy here
181 public void CP50222_Encode ()
183 AssertEncode ("Test/texts/japanese-utf8.txt", "Test/texts/japanese-50222.txt", 50222);
188 [Category ("NotDotNet")] // MS is buggy here
190 public void CP50222_Decode ()
192 AssertDecode ("Test/texts/japanese-utf8.txt", "Test/texts/japanese-50222.txt", 50222);
196 public void Bug77723 ()
198 Encoding e = Encoding.GetEncoding (51932);
199 for (int i = 0; i < 0x10000; i++)
200 e.GetBytes (new char [] { (char)i });
204 public void Bug77224 ()
206 Encoding e = Encoding.GetEncoding (932);
207 for (int i = 0; i < 0x10000; i++)
208 e.GetBytes (new char [] {(char) i});
212 public void Bug77238 ()
214 Encoding e = Encoding.GetEncoding (51932);
215 byte [] bytes = new byte [2];
216 for (int i0 = 0; i0 < 0x100; i0++) {
217 bytes [0] = (byte) i0;
218 for (int i1 = 0; i1 < 0x100; i1++) {
219 bytes [1] = (byte) i1;
230 public void CP949_Encode ()
232 AssertEncode ("Test/texts/korean-utf8.txt", "Test/texts/korean-949.txt", 949);
236 public void CP949_Decode ()
238 AssertDecode ("Test/texts/korean-utf8.txt", "Test/texts/korean-949.txt", 949);