[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 ();
}
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
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,
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]
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 ()
{
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 ()
{
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 ()
{
}
[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);
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;
}
[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;
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;
[Test]
public void Decoder51932Refresh ()
{
- Encoding e = Encoding.GetEncoding (51932);
+ Encoding e = Manager.GetEncoding (51932);
Decoder d = e.GetDecoder ();
char [] chars;
[Test]
public void Decoder936Refresh ()
{
- Encoding e = Encoding.GetEncoding (936);
+ Encoding e = Manager.GetEncoding (936);
Decoder d = e.GetDecoder ();
char [] chars;
[Test]
public void Decoder949Refresh ()
{
- Encoding e = Encoding.GetEncoding (949);
+ Encoding e = Manager.GetEncoding (949);
Decoder d = e.GetDecoder ();
char [] chars;
[Test]
public void Decoder950Refresh ()
{
- Encoding e = Encoding.GetEncoding (950);
+ Encoding e = Manager.GetEncoding (950);
Decoder d = e.GetDecoder ();
char [] chars;
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;
[Test]
public void Decoder936NoRefresh ()
{
- Encoding e = Encoding.GetEncoding (936);
+ Encoding e = Manager.GetEncoding (936);
Decoder d = e.GetDecoder ();
char [] chars;
[Test]
public void Decoder949NoRefresh ()
{
- Encoding e = Encoding.GetEncoding (949);
+ Encoding e = Manager.GetEncoding (949);
Decoder d = e.GetDecoder ();
char [] chars;
[Test]
public void Decoder950NoRefresh ()
{
- Encoding e = Encoding.GetEncoding (950);
+ Encoding e = Manager.GetEncoding (950);
Decoder d = e.GetDecoder ();
char [] chars;
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