X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FI18N%2FCJK%2FTest%2FI18N.CJK.Test.cs;h=12a9d47bb622417260d6ce808e5e0b9ea7a38aa1;hb=0b4bc83e79ca3057693089dc7f926004bb9d9592;hp=3e483be33434a17390a8fd5d7d754d2de9b0d0af;hpb=6b2b2a1f2ceb55082031e2d1a69f481c3202a5a3;p=mono.git diff --git a/mcs/class/I18N/CJK/Test/I18N.CJK.Test.cs b/mcs/class/I18N/CJK/Test/I18N.CJK.Test.cs index 3e483be3343..12a9d47bb62 100644 --- a/mcs/class/I18N/CJK/Test/I18N.CJK.Test.cs +++ b/mcs/class/I18N/CJK/Test/I18N.CJK.Test.cs @@ -17,11 +17,13 @@ namespace MonoTests.I18N.CJK [TestFixture] public class TestCJK { + private global::I18N.Common.Manager Manager = global::I18N.Common.Manager.PrimaryManager; + void AssertEncode (string utf8file, string decfile, int codepage) { string decoded = null; byte [] encoded = null; - using (StreamReader sr = new StreamReader (utf8file, + using (StreamReader sr = new StreamReader (utf8file, Encoding.UTF8)) { decoded = sr.ReadToEnd (); } @@ -29,7 +31,7 @@ namespace MonoTests.I18N.CJK encoded = new byte [fs.Length]; fs.Read (encoded, 0, (int) fs.Length); } - Encoding enc = Encoding.GetEncoding (codepage); + Encoding enc = Manager.GetEncoding (codepage); byte [] actual; // simple string case @@ -61,7 +63,7 @@ namespace MonoTests.I18N.CJK encoded = new byte [fs.Length]; fs.Read (encoded, 0, (int) fs.Length); } - Encoding enc = Encoding.GetEncoding (codepage); + Encoding enc = Manager.GetEncoding (codepage); char [] actual; Assert.AreEqual (decoded.Length, @@ -82,12 +84,31 @@ namespace MonoTests.I18N.CJK AssertEncode ("Test/texts/chinese-utf8.txt", "Test/texts/chinese-936.txt", 936); } + [Test] + public void CP936_Encode3 () + { + AssertEncode("Test/texts/chinese3-utf8.txt", "Test/texts/chinese3-936.txt", 936); + } + [Test] public void CP936_Decode () { AssertDecode ("Test/texts/chinese-utf8.txt", "Test/texts/chinese-936.txt", 936); } + [Test] + public void Bug_1531() + { + string str = @"wqk="; + byte[] utf8 = Convert.FromBase64String(str); + char[] data = Encoding.UTF8.GetChars(utf8); + + var encoding = Manager.GetEncoding("GB2312"); + var result = encoding.GetBytes(data); + + Assert.AreEqual(new byte[] { 63 }, result); + } + // BIG5 [Test] @@ -96,6 +117,12 @@ namespace MonoTests.I18N.CJK AssertEncode ("Test/texts/chinese2-utf8.txt", "Test/texts/chinese2-950.txt", 950); } + [Test] + public void CP950_Encode4 () + { + AssertEncode("Test/texts/chinese4-utf8.txt", "Test/texts/chinese4-950.txt", 950); + } + [Test] public void CP950_Decode () { @@ -156,6 +183,12 @@ namespace MonoTests.I18N.CJK AssertEncode ("Test/texts/japanese2-utf8.txt", "Test/texts/japanese2-50220.txt", 50220); } + [Test] + public void CP50220_Encode_3 () + { + AssertEncode("Test/texts/japanese3-utf8.txt", "Test/texts/japanese3-50220.txt", 50220); + } + [Test] public void CP50220_Decode () { @@ -168,6 +201,12 @@ namespace MonoTests.I18N.CJK AssertEncode ("Test/texts/japanese-utf8.txt", "Test/texts/japanese-50221.txt", 50221); } + [Test] + public void CP50221_Encode_3() + { + AssertEncode("Test/texts/japanese3-utf8.txt", "Test/texts/japanese3-50221.txt", 50221); + } + [Test] public void CP50221_Decode () { @@ -175,27 +214,38 @@ namespace MonoTests.I18N.CJK } [Test] -#if !NET_2_0 - [Category ("NotDotNet")] // MS is buggy here -#endif public void CP50222_Encode () { AssertEncode ("Test/texts/japanese-utf8.txt", "Test/texts/japanese-50222.txt", 50222); } [Test] -#if !NET_2_0 - [Category ("NotDotNet")] // MS is buggy here -#endif public void CP50222_Decode () { AssertDecode ("Test/texts/japanese-utf8.txt", "Test/texts/japanese-50222.txt", 50222); } [Test] -#if !NET_2_0 - [Category ("NotDotNet")] // MS bug -#endif + public void CP50220BrokenESC () + { + Assert.AreEqual ("\u001B$0", Manager.GetEncoding (50220).GetString (new byte [] {0x1B, 0x24, 0x30}), "#1"); + } + + [Test] + public void CP50220BrokenESC2 () + { + // it does not really invoke fallback ... + Assert.AreEqual ("\u001B$0", Encoding.GetEncoding (50220, new EncoderReplacementFallback (), new DecoderReplacementFallback ("")).GetString (new byte [] {0x1B, 0x24, 0x30}), "#1"); + } + + [Test] + public void CP50220BrokenESC3 () + { + // neither ... + Assert.AreEqual ("\u001B$0", Encoding.GetEncoding (50220, new EncoderExceptionFallback (), new DecoderExceptionFallback ()).GetString (new byte [] {0x1B, 0x24, 0x30}), "#2"); + } + + [Test] public void Bug77723 () { GetBytesAllSingleChars (51932); @@ -215,14 +265,14 @@ namespace MonoTests.I18N.CJK void GetBytesAllSingleChars (int enc) { - Encoding e = Encoding.GetEncoding (enc); + Encoding e = Manager.GetEncoding (enc); for (int i = 0; i < 0x10000; i++) e.GetBytes (new char [] { (char)i }); } void GetCharsAllBytePairs (int enc) { - Encoding e = Encoding.GetEncoding (enc); + Encoding e = Manager.GetEncoding (enc); byte [] bytes = new byte [2]; for (int i0 = 0; i0 < 0x100; i0++) { bytes [0] = (byte) i0; @@ -264,12 +314,9 @@ namespace MonoTests.I18N.CJK } [Test] -#if !NET_2_0 - [Category ("NotDotNet")] // MS bug -#endif public void Encoder54936Refresh () { - Encoding e = Encoding.GetEncoding ("gb18030"); + Encoding e = Manager.GetEncoding ("gb18030"); Encoder d = e.GetEncoder (); byte [] bytes; @@ -293,14 +340,13 @@ namespace MonoTests.I18N.CJK public void Bug491799 () { Assert.AreEqual (new byte [] {0xEE, 0xFC}, - Encoding.GetEncoding (932).GetBytes ("\uFF02")); + Manager.GetEncoding (932).GetBytes ("\uFF02")); } -#if NET_2_0 [Test] public void Decoder932Refresh () { - Encoding e = Encoding.GetEncoding (932); + Encoding e = Manager.GetEncoding (932); Decoder d = e.GetDecoder (); char [] chars; @@ -320,7 +366,7 @@ namespace MonoTests.I18N.CJK [Test] public void Decoder51932Refresh () { - Encoding e = Encoding.GetEncoding (51932); + Encoding e = Manager.GetEncoding (51932); Decoder d = e.GetDecoder (); char [] chars; @@ -348,7 +394,7 @@ namespace MonoTests.I18N.CJK [Test] public void Decoder936Refresh () { - Encoding e = Encoding.GetEncoding (936); + Encoding e = Manager.GetEncoding (936); Decoder d = e.GetDecoder (); char [] chars; @@ -371,7 +417,7 @@ namespace MonoTests.I18N.CJK [Test] public void Decoder949Refresh () { - Encoding e = Encoding.GetEncoding (949); + Encoding e = Manager.GetEncoding (949); Decoder d = e.GetDecoder (); char [] chars; @@ -394,7 +440,7 @@ namespace MonoTests.I18N.CJK [Test] public void Decoder950Refresh () { - Encoding e = Encoding.GetEncoding (950); + Encoding e = Manager.GetEncoding (950); Decoder d = e.GetDecoder (); char [] chars; @@ -413,13 +459,12 @@ namespace MonoTests.I18N.CJK Assert.AreEqual (1, d.GetChars (new byte [] {0xF9}, 0, 1, chars, 0, true), "#5"); Assert.AreEqual (new char [] {'?'}, chars, "#6"); } -#endif [Test] public void Decoder51932NoRefresh () { - Encoding e = Encoding.GetEncoding (51932); + Encoding e = Manager.GetEncoding (51932); Decoder d = e.GetDecoder (); char [] chars; @@ -442,7 +487,7 @@ namespace MonoTests.I18N.CJK [Test] public void Decoder936NoRefresh () { - Encoding e = Encoding.GetEncoding (936); + Encoding e = Manager.GetEncoding (936); Decoder d = e.GetDecoder (); char [] chars; @@ -465,7 +510,7 @@ namespace MonoTests.I18N.CJK [Test] public void Decoder949NoRefresh () { - Encoding e = Encoding.GetEncoding (949); + Encoding e = Manager.GetEncoding (949); Decoder d = e.GetDecoder (); char [] chars; @@ -488,7 +533,7 @@ namespace MonoTests.I18N.CJK [Test] public void Decoder950NoRefresh () { - Encoding e = Encoding.GetEncoding (950); + Encoding e = Manager.GetEncoding (950); Decoder d = e.GetDecoder (); char [] chars; @@ -512,10 +557,18 @@ namespace MonoTests.I18N.CJK public void HandleObsoletedESCJ () // bug #398273 { byte [] b = new byte [] {0x64, 0x6f, 0x6e, 0x1b, 0x24, 0x42, 0x21, 0x47, 0x1b, 0x28, 0x4a, 0x74}; - string s = Encoding.GetEncoding ("ISO-2022-JP").GetString (b); + string s = Manager.GetEncoding ("ISO-2022-JP").GetString (b); Assert.AreEqual ("don\u2019t", s); } + + [Test] + public void Bug14591 () + { + var expected = "\u4f50\u85e4\u8c4a"; + var text = Encoding.GetEncoding ("iso-2022-jp").GetString (Convert.FromBase64String ("GyRAOjRGI0stGyhK")); + Assert.AreEqual (expected, text, "#1"); + } #endregion #region Korean