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