blob: 483b7dbe12886d99c85b93db77eaab12a9cd3e56 [file] [log] [blame]
Hye-Shik Chang3e2a3062004-01-17 14:29:29 +00001#!/usr/bin/env python
2#
3# test_codecencodings_jp.py
4# Codec encoding tests for Japanese encodings.
5#
Hye-Shik Chang2bb146f2004-07-18 03:06:29 +00006# $CJKCodecs: test_codecencodings_jp.py,v 1.3 2004/06/19 06:09:55 perky Exp $
Hye-Shik Chang3e2a3062004-01-17 14:29:29 +00007
8from test import test_support
9from test import test_multibytecodec_support
10import unittest
11
12class Test_CP932(test_multibytecodec_support.TestBase, unittest.TestCase):
13 encoding = 'cp932'
14 tstring = test_multibytecodec_support.load_teststring('shift_jis')
15 codectests = (
16 # invalid bytes
17 ("abc\x81\x00\x81\x00\x82\x84", "strict", None),
18 ("abc\xf8", "strict", None),
19 ("abc\x81\x00\x82\x84", "replace", u"abc\ufffd\uff44"),
20 ("abc\x81\x00\x82\x84\x88", "replace", u"abc\ufffd\uff44\ufffd"),
21 ("abc\x81\x00\x82\x84", "ignore", u"abc\uff44"),
22 # sjis vs cp932
23 ("\\\x7e", "replace", u"\\\x7e"),
24 ("\x81\x5f\x81\x61\x81\x7c", "replace", u"\uff3c\u2225\uff0d"),
25 )
26
27class Test_EUC_JISX0213(test_multibytecodec_support.TestBase,
28 unittest.TestCase):
29 encoding = 'euc_jisx0213'
30 tstring = test_multibytecodec_support.load_teststring('euc_jisx0213')
31 codectests = (
32 # invalid bytes
33 ("abc\x80\x80\xc1\xc4", "strict", None),
34 ("abc\xc8", "strict", None),
35 ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u7956"),
36 ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u7956\ufffd"),
37 ("abc\x80\x80\xc1\xc4", "ignore", u"abc\u7956"),
38 ("abc\x8f\x83\x83", "replace", u"abc\ufffd"),
39 ("\xc1\x64", "strict", None),
40 ("\xa1\xc0", "strict", u"\uff3c"),
41 )
42 xmlcharnametest = (
43 u"\xab\u211c\xbb = \u2329\u1234\u232a",
44 "\xa9\xa8ℜ\xa9\xb2 = ⟨ሴ⟩"
45 )
46
47eucjp_commontests = (
48 ("abc\x80\x80\xc1\xc4", "strict", None),
49 ("abc\xc8", "strict", None),
50 ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\u7956"),
51 ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\u7956\ufffd"),
52 ("abc\x80\x80\xc1\xc4", "ignore", u"abc\u7956"),
53 ("abc\x8f\x83\x83", "replace", u"abc\ufffd"),
54 ("\xc1\x64", "strict", None),
55)
56
57class Test_EUC_JP_COMPAT(test_multibytecodec_support.TestBase,
58 unittest.TestCase):
59 encoding = 'euc_jp'
60 tstring = test_multibytecodec_support.load_teststring('euc_jp')
61 codectests = eucjp_commontests + (
62 ("\xa1\xc0\\", "strict", u"\uff3c\\"),
63 (u"\xa5", "strict", "\x5c"),
64 (u"\u203e", "strict", "\x7e"),
65 )
66
Hye-Shik Chang3e2a3062004-01-17 14:29:29 +000067shiftjis_commonenctests = (
68 ("abc\x80\x80\x82\x84", "strict", None),
69 ("abc\xf8", "strict", None),
70 ("abc\x80\x80\x82\x84", "replace", u"abc\ufffd\uff44"),
71 ("abc\x80\x80\x82\x84\x88", "replace", u"abc\ufffd\uff44\ufffd"),
72 ("abc\x80\x80\x82\x84def", "ignore", u"abc\uff44def"),
73)
74
75class Test_SJIS_COMPAT(test_multibytecodec_support.TestBase, unittest.TestCase):
76 encoding = 'shift_jis'
77 tstring = test_multibytecodec_support.load_teststring('shift_jis')
78 codectests = shiftjis_commonenctests + (
79 ("\\\x7e", "strict", u"\\\x7e"),
80 ("\x81\x5f\x81\x61\x81\x7c", "strict", u"\uff3c\u2016\u2212"),
81 )
82
Hye-Shik Chang3e2a3062004-01-17 14:29:29 +000083class Test_SJISX0213(test_multibytecodec_support.TestBase, unittest.TestCase):
84 encoding = 'shift_jisx0213'
85 tstring = test_multibytecodec_support.load_teststring('shift_jisx0213')
86 codectests = (
87 # invalid bytes
88 ("abc\x80\x80\x82\x84", "strict", None),
89 ("abc\xf8", "strict", None),
90 ("abc\x80\x80\x82\x84", "replace", u"abc\ufffd\uff44"),
91 ("abc\x80\x80\x82\x84\x88", "replace", u"abc\ufffd\uff44\ufffd"),
92 ("abc\x80\x80\x82\x84def", "ignore", u"abc\uff44def"),
93 # sjis vs cp932
94 ("\\\x7e", "replace", u"\xa5\u203e"),
95 ("\x81\x5f\x81\x61\x81\x7c", "replace", u"\x5c\u2016\u2212"),
96 )
97 xmlcharnametest = (
98 u"\xab\u211c\xbb = \u2329\u1234\u232a",
99 "\x85Gℜ\x85Q = ⟨ሴ⟩"
100 )
101
102def test_main():
103 suite = unittest.TestSuite()
104 suite.addTest(unittest.makeSuite(Test_CP932))
105 suite.addTest(unittest.makeSuite(Test_EUC_JISX0213))
106 suite.addTest(unittest.makeSuite(Test_EUC_JP_COMPAT))
107 suite.addTest(unittest.makeSuite(Test_SJIS_COMPAT))
Hye-Shik Chang3e2a3062004-01-17 14:29:29 +0000108 suite.addTest(unittest.makeSuite(Test_SJISX0213))
109 test_support.run_suite(suite)
110
111if __name__ == "__main__":
112 test_main()