New test.
[mono.git] / mcs / class / I18N / CJK / Test / I18N.CJK.Test.cs
old mode 100755 (executable)
new mode 100644 (file)
index 90c2e96..dc093c8
@@ -289,6 +289,217 @@ namespace MonoTests.I18N.CJK
                                bytes, "#6");
                }
 
+#if NET_2_0
+               [Test]
+               public void Decoder932Refresh ()
+               {
+                       Encoding e = Encoding.GetEncoding (932);
+                       Decoder d = e.GetDecoder ();
+                       char [] chars;
+
+                       chars = new char [1];
+                       Assert.AreEqual (0, d.GetChars (new byte [] {0x81}, 0, 1, chars, 0, false), "#1");
+                       Assert.AreEqual (new char [] {'\0'}, chars, "#2");
+
+                       chars = new char [1];
+                       Assert.AreEqual (1, d.GetChars (new byte [] {0x81}, 0, 1, chars, 0, true), "#3");
+                       Assert.AreEqual (new char [] {'\uFF1D'}, chars, "#4");
+
+                       chars = new char [1];
+                       Assert.AreEqual (1, d.GetChars (new byte [] {0x81}, 0, 1, chars, 0, true), "#5");
+                       Assert.AreEqual (new char [] {'\u30FB'}, chars, "#6");
+               }
+
+               [Test]
+               public void Decoder51932Refresh ()
+               {
+                       Encoding e = Encoding.GetEncoding (51932);
+                       Decoder d = e.GetDecoder ();
+                       char [] chars;
+
+                       // invalid one
+                       chars = new char [1];
+                       Assert.AreEqual (1, d.GetChars (new byte [] {0x81}, 0, 1, chars, 0, false), "#0.1");
+                       Assert.AreEqual (new char [] {'\u30FB'}, chars, "#0.2");
+
+                       // incomplete
+                       chars = new char [1];
+                       Assert.AreEqual (0, d.GetChars (new byte [] {0xA1}, 0, 1, chars, 0, false), "#1");
+                       Assert.AreEqual (new char [] {'\0'}, chars, "#2");
+
+                       // became complete
+                       chars = new char [1];
+                       Assert.AreEqual (1, d.GetChars (new byte [] {0xA1}, 0, 1, chars, 0, true), "#3");
+                       Assert.AreEqual (new char [] {'\u3000'}, chars, "#4");
+
+                       // incomplete but refreshed
+                       chars = new char [1];
+                       Assert.AreEqual (1, d.GetChars (new byte [] {0xA1}, 0, 1, chars, 0, true), "#5");
+                       Assert.AreEqual (new char [] {'\u30FB'}, chars, "#6");
+               }
+
+               [Test]
+               public void Decoder936Refresh ()
+               {
+                       Encoding e = Encoding.GetEncoding (936);
+                       Decoder d = e.GetDecoder ();
+                       char [] chars;
+
+                       // incomplete
+                       chars = new char [1];
+                       Assert.AreEqual (0, d.GetChars (new byte [] {0xB0}, 0, 1, chars, 0, false), "#1");
+                       Assert.AreEqual (new char [] {'\0'}, chars, "#2");
+
+                       // became complete
+                       chars = new char [1];
+                       Assert.AreEqual (1, d.GetChars (new byte [] {0xA1}, 0, 1, chars, 0, false), "#3");
+                       Assert.AreEqual (new char [] {'\u554A'}, chars, "#4");
+
+                       // incomplete but refreshed
+                       chars = new char [1];
+                       Assert.AreEqual (1, d.GetChars (new byte [] {0xB0}, 0, 1, chars, 0, true), "#5");
+                       Assert.AreEqual (new char [] {'?'}, chars, "#6");
+               }
+
+               [Test]
+               public void Decoder949Refresh ()
+               {
+                       Encoding e = Encoding.GetEncoding (949);
+                       Decoder d = e.GetDecoder ();
+                       char [] chars;
+
+                       // incomplete
+                       chars = new char [1];
+                       Assert.AreEqual (0, d.GetChars (new byte [] {0x81}, 0, 1, chars, 0, false), "#1");
+                       Assert.AreEqual (new char [] {'\0'}, chars, "#2");
+
+                       // became complete
+                       chars = new char [1];
+                       Assert.AreEqual (1, d.GetChars (new byte [] {0x41}, 0, 1, chars, 0, false), "#3");
+                       Assert.AreEqual (new char [] {'\uAC02'}, chars, "#4");
+
+                       // incomplete but refreshed
+                       chars = new char [1];
+                       Assert.AreEqual (1, d.GetChars (new byte [] {0x81}, 0, 1, chars, 0, true), "#5");
+                       Assert.AreEqual (new char [] {'?'}, chars, "#6");
+               }
+
+               [Test]
+               public void Decoder950Refresh ()
+               {
+                       Encoding e = Encoding.GetEncoding (950);
+                       Decoder d = e.GetDecoder ();
+                       char [] chars;
+
+                       // incomplete
+                       chars = new char [1];
+                       Assert.AreEqual (0, d.GetChars (new byte [] {0xF9}, 0, 1, chars, 0, false), "#1");
+                       Assert.AreEqual (new char [] {'\0'}, chars, "#2");
+
+                       // became complete
+                       chars = new char [1];
+                       Assert.AreEqual (1, d.GetChars (new byte [] {0x40}, 0, 1, chars, 0, false), "#3");
+                       Assert.AreEqual (new char [] {'\u7E98'}, chars, "#4");
+
+                       // incomplete but refreshed
+                       chars = new char [1];
+                       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);
+                       Decoder d = e.GetDecoder ();
+                       char [] chars;
+
+                       // incomplete
+                       chars = new char [1];
+                       Assert.AreEqual (0, d.GetChars (new byte [] {0xA1}, 0, 1, chars, 0), "#1");
+                       Assert.AreEqual (new char [] {'\0'}, chars, "#2");
+
+                       // became complete
+                       chars = new char [1];
+                       Assert.AreEqual (1, d.GetChars (new byte [] {0xA1}, 0, 1, chars, 0), "#3");
+                       Assert.AreEqual (new char [] {'\u3000'}, chars, "#4");
+
+                       // incomplete but refreshed
+                       chars = new char [1];
+                       Assert.AreEqual (0, d.GetChars (new byte [] {0xA1}, 0, 1, chars, 0), "#5");
+                       Assert.AreEqual (new char [] {'\0'}, chars, "#6");
+               }
+
+               [Test]
+               public void Decoder936NoRefresh ()
+               {
+                       Encoding e = Encoding.GetEncoding (936);
+                       Decoder d = e.GetDecoder ();
+                       char [] chars;
+
+                       // incomplete
+                       chars = new char [1];
+                       Assert.AreEqual (0, d.GetChars (new byte [] {0xB0}, 0, 1, chars, 0), "#1");
+                       Assert.AreEqual (new char [] {'\0'}, chars, "#2");
+
+                       // became complete
+                       chars = new char [1];
+                       Assert.AreEqual (1, d.GetChars (new byte [] {0xA1}, 0, 1, chars, 0), "#3");
+                       Assert.AreEqual (new char [] {'\u554A'}, chars, "#4");
+
+                       // incomplete but refreshed
+                       chars = new char [1];
+                       Assert.AreEqual (0, d.GetChars (new byte [] {0xB0}, 0, 1, chars, 0), "#5");
+                       Assert.AreEqual (new char [] {'\0'}, chars, "#6");
+               }
+
+               [Test]
+               public void Decoder949NoRefresh ()
+               {
+                       Encoding e = Encoding.GetEncoding (949);
+                       Decoder d = e.GetDecoder ();
+                       char [] chars;
+
+                       // incomplete
+                       chars = new char [1];
+                       Assert.AreEqual (0, d.GetChars (new byte [] {0x81}, 0, 1, chars, 0), "#1");
+                       Assert.AreEqual (new char [] {'\0'}, chars, "#2");
+
+                       // became complete
+                       chars = new char [1];
+                       Assert.AreEqual (1, d.GetChars (new byte [] {0x41}, 0, 1, chars, 0), "#3");
+                       Assert.AreEqual (new char [] {'\uAC02'}, chars, "#4");
+
+                       // incomplete but refreshed
+                       chars = new char [1];
+                       Assert.AreEqual (0, d.GetChars (new byte [] {0x81}, 0, 1, chars, 0), "#5");
+                       Assert.AreEqual (new char [] {'\0'}, chars, "#6");
+               }
+
+               [Test]
+               public void Decoder950NoRefresh ()
+               {
+                       Encoding e = Encoding.GetEncoding (950);
+                       Decoder d = e.GetDecoder ();
+                       char [] chars;
+
+                       // incomplete
+                       chars = new char [1];
+                       Assert.AreEqual (0, d.GetChars (new byte [] {0xF9}, 0, 1, chars, 0), "#1");
+                       Assert.AreEqual (new char [] {'\0'}, chars, "#2");
+
+                       // became complete
+                       chars = new char [1];
+                       Assert.AreEqual (1, d.GetChars (new byte [] {0x40}, 0, 1, chars, 0), "#3");
+                       Assert.AreEqual (new char [] {'\u7E98'}, chars, "#4");
+
+                       // incomplete but refreshed
+                       chars = new char [1];
+                       Assert.AreEqual (0, d.GetChars (new byte [] {0xF9}, 0, 1, chars, 0), "#5");
+                       Assert.AreEqual (new char [] {'\0'}, chars, "#6");
+               }
                #endregion
 
                #region Korean