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_codecmaps_jp.py b/Lib/test/test_codecmaps_jp.py
new file mode 100644
index 0000000..ef49178
--- /dev/null
+++ b/Lib/test/test_codecmaps_jp.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+#
+# test_codecmaps_jp.py
+#   Codec mapping tests for Japanese encodings
+#
+# $CJKCodecs: test_codecmaps_jp.py,v 1.2 2004/01/17 12:47:19 perky Exp $
+
+from test import test_support
+from test import test_multibytecodec_support
+import unittest
+
+class TestCP932Map(test_multibytecodec_support.TestBase_Mapping,
+                   unittest.TestCase):
+    encoding = 'cp932'
+    mapfilename = 'CP932.TXT'
+    mapfileurl = 'http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/' \
+                 'WINDOWS/CP932.TXT'
+    supmaps = [
+        ('\x80', u'\u0080'),
+        ('\xa0', u'\uf8f0'),
+        ('\xfd', u'\uf8f1'),
+        ('\xfe', u'\uf8f2'),
+        ('\xff', u'\uf8f3'),
+    ]
+    for i in range(0xa1, 0xe0):
+        supmaps.append((chr(i), unichr(i+0xfec0)))
+
+
+class TestEUCJPCOMPATMap(test_multibytecodec_support.TestBase_Mapping,
+                         unittest.TestCase):
+    encoding = 'euc_jp'
+    mapfilename = 'EUC-JP.TXT'
+    mapfileurl = 'http://people.freebsd.org/~perky/i18n/EUC-JP.TXT'
+
+
+class TestSJISCOMPATMap(test_multibytecodec_support.TestBase_Mapping,
+                        unittest.TestCase):
+    encoding = 'shift_jis'
+    mapfilename = 'SHIFTJIS.TXT'
+    mapfileurl = 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE' \
+                 '/EASTASIA/JIS/SHIFTJIS.TXT'
+    pass_enctest = [
+        ('\x81_', u'\\'),
+    ]
+    pass_dectest = [
+        ('\\', u'\xa5'),
+        ('~', u'\u203e'),
+        ('\x81_', u'\\'),
+    ]
+
+
+class TestSJISSTRICTMap(test_multibytecodec_support.TestBase_Mapping,
+                        unittest.TestCase):
+    encoding = 'shift_jis_strict'
+    mapfilename = 'SHIFTJIS.TXT'
+    mapfileurl = 'http://www.unicode.org/Public/MAPPINGS/OBSOLETE' \
+                 '/EASTASIA/JIS/SHIFTJIS.TXT'
+
+
+class TestEUCJISX0213Map(test_multibytecodec_support.TestBase_Mapping,
+                         unittest.TestCase):
+    encoding = 'euc_jisx0213'
+    mapfilename = 'EUC-JISX0213.TXT'
+    mapfileurl = 'http://people.freebsd.org/~perky/i18n/EUC-JISX0213.TXT'
+
+
+class TestSJISX0213Map(test_multibytecodec_support.TestBase_Mapping,
+                       unittest.TestCase):
+    encoding = 'shift_jisx0213'
+    mapfilename = 'SHIFT_JISX0213.TXT'
+    mapfileurl = 'http://people.freebsd.org/~perky/i18n/SHIFT_JISX0213.TXT'
+
+
+def test_main():
+    suite = unittest.TestSuite()
+    suite.addTest(unittest.makeSuite(TestCP932Map))
+    suite.addTest(unittest.makeSuite(TestEUCJPCOMPATMap))
+    suite.addTest(unittest.makeSuite(TestSJISCOMPATMap))
+    if test_multibytecodec_support.__cjkcodecs__:
+        suite.addTest(unittest.makeSuite(TestSJISSTRICTMap))
+    suite.addTest(unittest.makeSuite(TestEUCJISX0213Map))
+    suite.addTest(unittest.makeSuite(TestSJISX0213Map))
+    test_support.run_suite(suite)
+
+test_multibytecodec_support.register_skip_expected(TestCP932Map,
+    TestEUCJPCOMPATMap, TestSJISCOMPATMap, TestEUCJISX0213Map,
+    TestSJISX0213Map)
+if __name__ == "__main__":
+    test_main()
+