Add CJK codecs support as discussed on python-dev. (SF #873597)

Several style fixes are suggested by Martin v. Loewis and
Marc-Andre Lemburg. Thanks!
diff --git a/Lib/test/test_codecencodings_cn.py b/Lib/test/test_codecencodings_cn.py
new file mode 100644
index 0000000..3960c9c
--- /dev/null
+++ b/Lib/test/test_codecencodings_cn.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+#
+# test_codecencodings_cn.py
+#   Codec encoding tests for PRC encodings.
+#
+# $CJKCodecs: test_codecencodings_cn.py,v 1.1 2003/12/19 03:00:05 perky Exp $
+
+from test import test_support
+from test import test_multibytecodec_support
+import unittest
+
+class Test_GB2312(test_multibytecodec_support.TestBase, unittest.TestCase):
+    encoding = 'gb2312'
+    tstring = test_multibytecodec_support.load_teststring('gb2312')
+    codectests = (
+        # invalid bytes
+        ("abc\x81\x81\xc1\xc4", "strict",  None),
+        ("abc\xc8", "strict",  None),
+        ("abc\x81\x81\xc1\xc4", "replace", u"abc\ufffd\u804a"),
+        ("abc\x81\x81\xc1\xc4\xc8", "replace", u"abc\ufffd\u804a\ufffd"),
+        ("abc\x81\x81\xc1\xc4", "ignore",  u"abc\u804a"),
+        ("\xc1\x64", "strict", None),
+    )
+
+class Test_GBK(test_multibytecodec_support.TestBase, unittest.TestCase):
+    encoding = 'gbk'
+    tstring = test_multibytecodec_support.load_teststring('gbk')
+    codectests = (
+        # invalid bytes
+        ("abc\x80\x80\xc1\xc4", "strict",  None),  
+        ("abc\xc8", "strict",  None),  
+        ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u804a"),
+        ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u804a\ufffd"),
+        ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\u804a"),
+        ("\x83\x34\x83\x31", "strict", None),
+    )
+
+class Test_GB18030(test_multibytecodec_support.TestBase, unittest.TestCase):
+    encoding = 'gb18030'
+    tstring = test_multibytecodec_support.load_teststring('gb18030')
+    codectests = (
+        # invalid bytes
+        ("abc\x80\x80\xc1\xc4", "strict",  None),
+        ("abc\xc8", "strict",  None),
+        ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u804a"),
+        ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u804a\ufffd"),
+        ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\u804a"),
+        ("abc\x84\x39\x84\x39\xc1\xc4", "replace", u"abc\ufffd\u804a"),
+    )
+    has_iso10646 = True
+
+def test_main():
+    suite = unittest.TestSuite()
+    suite.addTest(unittest.makeSuite(Test_GB2312))
+    suite.addTest(unittest.makeSuite(Test_GBK))
+    suite.addTest(unittest.makeSuite(Test_GB18030))
+    test_support.run_suite(suite)
+
+if __name__ == "__main__":
+    test_main()
+