Home | History | Annotate | Download | only in test
      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()
    106