17db96d56Sopenharmony_ci#
27db96d56Sopenharmony_ci# test_codecencodings_jp.py
37db96d56Sopenharmony_ci#   Codec encoding tests for Japanese encodings.
47db96d56Sopenharmony_ci#
57db96d56Sopenharmony_ci
67db96d56Sopenharmony_cifrom test import multibytecodec_support
77db96d56Sopenharmony_ciimport unittest
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ciclass Test_CP932(multibytecodec_support.TestBase, unittest.TestCase):
107db96d56Sopenharmony_ci    encoding = 'cp932'
117db96d56Sopenharmony_ci    tstring = multibytecodec_support.load_teststring('shift_jis')
127db96d56Sopenharmony_ci    codectests = (
137db96d56Sopenharmony_ci        # invalid bytes
147db96d56Sopenharmony_ci        (b"abc\x81\x00\x81\x00\x82\x84", "strict",  None),
157db96d56Sopenharmony_ci        (b"abc\xf8", "strict",  None),
167db96d56Sopenharmony_ci        (b"abc\x81\x00\x82\x84", "replace", "abc\ufffd\x00\uff44"),
177db96d56Sopenharmony_ci        (b"abc\x81\x00\x82\x84\x88", "replace", "abc\ufffd\x00\uff44\ufffd"),
187db96d56Sopenharmony_ci        (b"abc\x81\x00\x82\x84", "ignore",  "abc\x00\uff44"),
197db96d56Sopenharmony_ci        (b"ab\xEBxy", "replace", "ab\uFFFDxy"),
207db96d56Sopenharmony_ci        (b"ab\xF0\x39xy", "replace", "ab\uFFFD9xy"),
217db96d56Sopenharmony_ci        (b"ab\xEA\xF0xy", "replace", 'ab\ufffd\ue038y'),
227db96d56Sopenharmony_ci        # sjis vs cp932
237db96d56Sopenharmony_ci        (b"\\\x7e", "replace", "\\\x7e"),
247db96d56Sopenharmony_ci        (b"\x81\x5f\x81\x61\x81\x7c", "replace", "\uff3c\u2225\uff0d"),
257db96d56Sopenharmony_ci    )
267db96d56Sopenharmony_ci
277db96d56Sopenharmony_cieuc_commontests = (
287db96d56Sopenharmony_ci    # invalid bytes
297db96d56Sopenharmony_ci    (b"abc\x80\x80\xc1\xc4", "strict",  None),
307db96d56Sopenharmony_ci    (b"abc\x80\x80\xc1\xc4", "replace", "abc\ufffd\ufffd\u7956"),
317db96d56Sopenharmony_ci    (b"abc\x80\x80\xc1\xc4\xc8", "replace", "abc\ufffd\ufffd\u7956\ufffd"),
327db96d56Sopenharmony_ci    (b"abc\x80\x80\xc1\xc4", "ignore",  "abc\u7956"),
337db96d56Sopenharmony_ci    (b"abc\xc8", "strict",  None),
347db96d56Sopenharmony_ci    (b"abc\x8f\x83\x83", "replace", "abc\ufffd\ufffd\ufffd"),
357db96d56Sopenharmony_ci    (b"\x82\xFCxy", "replace", "\ufffd\ufffdxy"),
367db96d56Sopenharmony_ci    (b"\xc1\x64", "strict", None),
377db96d56Sopenharmony_ci    (b"\xa1\xc0", "strict", "\uff3c"),
387db96d56Sopenharmony_ci    (b"\xa1\xc0\\", "strict", "\uff3c\\"),
397db96d56Sopenharmony_ci    (b"\x8eXY", "replace", "\ufffdXY"),
407db96d56Sopenharmony_ci)
417db96d56Sopenharmony_ci
427db96d56Sopenharmony_ciclass Test_EUC_JIS_2004(multibytecodec_support.TestBase,
437db96d56Sopenharmony_ci                        unittest.TestCase):
447db96d56Sopenharmony_ci    encoding = 'euc_jis_2004'
457db96d56Sopenharmony_ci    tstring = multibytecodec_support.load_teststring('euc_jisx0213')
467db96d56Sopenharmony_ci    codectests = euc_commontests
477db96d56Sopenharmony_ci    xmlcharnametest = (
487db96d56Sopenharmony_ci        "\xab\u211c\xbb = \u2329\u1234\u232a",
497db96d56Sopenharmony_ci        b"\xa9\xa8ℜ\xa9\xb2 = ⟨ሴ⟩"
507db96d56Sopenharmony_ci    )
517db96d56Sopenharmony_ci
527db96d56Sopenharmony_ciclass Test_EUC_JISX0213(multibytecodec_support.TestBase,
537db96d56Sopenharmony_ci                        unittest.TestCase):
547db96d56Sopenharmony_ci    encoding = 'euc_jisx0213'
557db96d56Sopenharmony_ci    tstring = multibytecodec_support.load_teststring('euc_jisx0213')
567db96d56Sopenharmony_ci    codectests = euc_commontests
577db96d56Sopenharmony_ci    xmlcharnametest = (
587db96d56Sopenharmony_ci        "\xab\u211c\xbb = \u2329\u1234\u232a",
597db96d56Sopenharmony_ci        b"\xa9\xa8ℜ\xa9\xb2 = ⟨ሴ⟩"
607db96d56Sopenharmony_ci    )
617db96d56Sopenharmony_ci
627db96d56Sopenharmony_ciclass Test_EUC_JP_COMPAT(multibytecodec_support.TestBase,
637db96d56Sopenharmony_ci                         unittest.TestCase):
647db96d56Sopenharmony_ci    encoding = 'euc_jp'
657db96d56Sopenharmony_ci    tstring = multibytecodec_support.load_teststring('euc_jp')
667db96d56Sopenharmony_ci    codectests = euc_commontests + (
677db96d56Sopenharmony_ci        ("\xa5", "strict", b"\x5c"),
687db96d56Sopenharmony_ci        ("\u203e", "strict", b"\x7e"),
697db96d56Sopenharmony_ci    )
707db96d56Sopenharmony_ci
717db96d56Sopenharmony_cishiftjis_commonenctests = (
727db96d56Sopenharmony_ci    (b"abc\x80\x80\x82\x84", "strict",  None),
737db96d56Sopenharmony_ci    (b"abc\xf8", "strict",  None),
747db96d56Sopenharmony_ci    (b"abc\x80\x80\x82\x84def", "ignore",  "abc\uff44def"),
757db96d56Sopenharmony_ci)
767db96d56Sopenharmony_ci
777db96d56Sopenharmony_ciclass Test_SJIS_COMPAT(multibytecodec_support.TestBase, unittest.TestCase):
787db96d56Sopenharmony_ci    encoding = 'shift_jis'
797db96d56Sopenharmony_ci    tstring = multibytecodec_support.load_teststring('shift_jis')
807db96d56Sopenharmony_ci    codectests = shiftjis_commonenctests + (
817db96d56Sopenharmony_ci        (b"abc\x80\x80\x82\x84", "replace", "abc\ufffd\ufffd\uff44"),
827db96d56Sopenharmony_ci        (b"abc\x80\x80\x82\x84\x88", "replace", "abc\ufffd\ufffd\uff44\ufffd"),
837db96d56Sopenharmony_ci
847db96d56Sopenharmony_ci        (b"\\\x7e", "strict", "\\\x7e"),
857db96d56Sopenharmony_ci        (b"\x81\x5f\x81\x61\x81\x7c", "strict", "\uff3c\u2016\u2212"),
867db96d56Sopenharmony_ci        (b"abc\x81\x39", "replace",  "abc\ufffd9"),
877db96d56Sopenharmony_ci        (b"abc\xEA\xFC", "replace",  "abc\ufffd\ufffd"),
887db96d56Sopenharmony_ci        (b"abc\xFF\x58", "replace",  "abc\ufffdX"),
897db96d56Sopenharmony_ci    )
907db96d56Sopenharmony_ci
917db96d56Sopenharmony_ciclass Test_SJIS_2004(multibytecodec_support.TestBase, unittest.TestCase):
927db96d56Sopenharmony_ci    encoding = 'shift_jis_2004'
937db96d56Sopenharmony_ci    tstring = multibytecodec_support.load_teststring('shift_jis')
947db96d56Sopenharmony_ci    codectests = shiftjis_commonenctests + (
957db96d56Sopenharmony_ci        (b"\\\x7e", "strict", "\xa5\u203e"),
967db96d56Sopenharmony_ci        (b"\x81\x5f\x81\x61\x81\x7c", "strict", "\\\u2016\u2212"),
977db96d56Sopenharmony_ci        (b"abc\xEA\xFC", "strict",  "abc\u64bf"),
987db96d56Sopenharmony_ci        (b"\x81\x39xy", "replace",  "\ufffd9xy"),
997db96d56Sopenharmony_ci        (b"\xFF\x58xy", "replace",  "\ufffdXxy"),
1007db96d56Sopenharmony_ci        (b"\x80\x80\x82\x84xy", "replace", "\ufffd\ufffd\uff44xy"),
1017db96d56Sopenharmony_ci        (b"\x80\x80\x82\x84\x88xy", "replace", "\ufffd\ufffd\uff44\u5864y"),
1027db96d56Sopenharmony_ci        (b"\xFC\xFBxy", "replace", '\ufffd\u95b4y'),
1037db96d56Sopenharmony_ci    )
1047db96d56Sopenharmony_ci    xmlcharnametest = (
1057db96d56Sopenharmony_ci        "\xab\u211c\xbb = \u2329\u1234\u232a",
1067db96d56Sopenharmony_ci        b"\x85Gℜ\x85Q = ⟨ሴ⟩"
1077db96d56Sopenharmony_ci    )
1087db96d56Sopenharmony_ci
1097db96d56Sopenharmony_ciclass Test_SJISX0213(multibytecodec_support.TestBase, unittest.TestCase):
1107db96d56Sopenharmony_ci    encoding = 'shift_jisx0213'
1117db96d56Sopenharmony_ci    tstring = multibytecodec_support.load_teststring('shift_jisx0213')
1127db96d56Sopenharmony_ci    codectests = shiftjis_commonenctests + (
1137db96d56Sopenharmony_ci        (b"abc\x80\x80\x82\x84", "replace", "abc\ufffd\ufffd\uff44"),
1147db96d56Sopenharmony_ci        (b"abc\x80\x80\x82\x84\x88", "replace", "abc\ufffd\ufffd\uff44\ufffd"),
1157db96d56Sopenharmony_ci
1167db96d56Sopenharmony_ci        # sjis vs cp932
1177db96d56Sopenharmony_ci        (b"\\\x7e", "replace", "\xa5\u203e"),
1187db96d56Sopenharmony_ci        (b"\x81\x5f\x81\x61\x81\x7c", "replace", "\x5c\u2016\u2212"),
1197db96d56Sopenharmony_ci    )
1207db96d56Sopenharmony_ci    xmlcharnametest = (
1217db96d56Sopenharmony_ci        "\xab\u211c\xbb = \u2329\u1234\u232a",
1227db96d56Sopenharmony_ci        b"\x85Gℜ\x85Q = ⟨ሴ⟩"
1237db96d56Sopenharmony_ci    )
1247db96d56Sopenharmony_ci
1257db96d56Sopenharmony_ciif __name__ == "__main__":
1267db96d56Sopenharmony_ci    unittest.main()
127