python (3.11.7)

(root)/
lib/
python3.11/
test/
test_codecencodings_iso2022.py
       1  # Codec encoding tests for ISO 2022 encodings.
       2  
       3  from test import multibytecodec_support
       4  import unittest
       5  
       6  COMMON_CODEC_TESTS = (
       7          # invalid bytes
       8          (b'ab\xFFcd', 'replace', 'ab\uFFFDcd'),
       9          (b'ab\x1Bdef', 'replace', 'ab\x1Bdef'),
      10          (b'ab\x1B$def', 'replace', 'ab\uFFFD'),
      11      )
      12  
      13  class ESC[4;38;5;81mTest_ISO2022_JP(ESC[4;38;5;149mmultibytecodec_supportESC[4;38;5;149m.ESC[4;38;5;149mTestBase, ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
      14      encoding = 'iso2022_jp'
      15      tstring = multibytecodec_support.load_teststring('iso2022_jp')
      16      codectests = COMMON_CODEC_TESTS + (
      17          (b'ab\x1BNdef', 'replace', 'ab\x1BNdef'),
      18      )
      19  
      20  class ESC[4;38;5;81mTest_ISO2022_JP2(ESC[4;38;5;149mmultibytecodec_supportESC[4;38;5;149m.ESC[4;38;5;149mTestBase, ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
      21      encoding = 'iso2022_jp_2'
      22      tstring = multibytecodec_support.load_teststring('iso2022_jp')
      23      codectests = COMMON_CODEC_TESTS + (
      24          (b'ab\x1BNdef', 'replace', 'abdef'),
      25      )
      26  
      27  class ESC[4;38;5;81mTest_ISO2022_JP3(ESC[4;38;5;149mmultibytecodec_supportESC[4;38;5;149m.ESC[4;38;5;149mTestBase, ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
      28      encoding = 'iso2022_jp_3'
      29      tstring = multibytecodec_support.load_teststring('iso2022_jp')
      30      codectests = COMMON_CODEC_TESTS + (
      31          (b'ab\x1BNdef', 'replace', 'ab\x1BNdef'),
      32          (b'\x1B$(O\x2E\x23\x1B(B', 'strict', '\u3402'      ),
      33          (b'\x1B$(O\x2E\x22\x1B(B', 'strict', '\U0002000B'  ),
      34          (b'\x1B$(O\x24\x77\x1B(B', 'strict', '\u304B\u309A'),
      35          (b'\x1B$(P\x21\x22\x1B(B', 'strict', '\u4E02'      ),
      36          (b'\x1B$(P\x7E\x76\x1B(B', 'strict', '\U0002A6B2'  ),
      37          ('\u3402',       'strict', b'\x1B$(O\x2E\x23\x1B(B'),
      38          ('\U0002000B',   'strict', b'\x1B$(O\x2E\x22\x1B(B'),
      39          ('\u304B\u309A', 'strict', b'\x1B$(O\x24\x77\x1B(B'),
      40          ('\u4E02',       'strict', b'\x1B$(P\x21\x22\x1B(B'),
      41          ('\U0002A6B2',   'strict', b'\x1B$(P\x7E\x76\x1B(B'),
      42          (b'ab\x1B$(O\x2E\x21\x1B(Bdef', 'replace', 'ab\uFFFDdef'),
      43          ('ab\u4FF1def', 'replace', b'ab?def'),
      44      )
      45      xmlcharnametest = (
      46          '\xAB\u211C\xBB = \u2329\u1234\u232A',
      47          b'\x1B$(O\x29\x28\x1B(Bℜ\x1B$(O\x29\x32\x1B(B = ⟨ሴ⟩'
      48      )
      49  
      50  class ESC[4;38;5;81mTest_ISO2022_JP2004(ESC[4;38;5;149mmultibytecodec_supportESC[4;38;5;149m.ESC[4;38;5;149mTestBase, ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
      51      encoding = 'iso2022_jp_2004'
      52      tstring = multibytecodec_support.load_teststring('iso2022_jp')
      53      codectests = COMMON_CODEC_TESTS + (
      54          (b'ab\x1BNdef', 'replace', 'ab\x1BNdef'),
      55          (b'\x1B$(Q\x2E\x23\x1B(B', 'strict', '\u3402'      ),
      56          (b'\x1B$(Q\x2E\x22\x1B(B', 'strict', '\U0002000B'  ),
      57          (b'\x1B$(Q\x24\x77\x1B(B', 'strict', '\u304B\u309A'),
      58          (b'\x1B$(P\x21\x22\x1B(B', 'strict', '\u4E02'      ),
      59          (b'\x1B$(P\x7E\x76\x1B(B', 'strict', '\U0002A6B2'  ),
      60          ('\u3402',       'strict', b'\x1B$(Q\x2E\x23\x1B(B'),
      61          ('\U0002000B',   'strict', b'\x1B$(Q\x2E\x22\x1B(B'),
      62          ('\u304B\u309A', 'strict', b'\x1B$(Q\x24\x77\x1B(B'),
      63          ('\u4E02',       'strict', b'\x1B$(P\x21\x22\x1B(B'),
      64          ('\U0002A6B2',   'strict', b'\x1B$(P\x7E\x76\x1B(B'),
      65          (b'ab\x1B$(Q\x2E\x21\x1B(Bdef', 'replace', 'ab\u4FF1def'),
      66          ('ab\u4FF1def', 'replace', b'ab\x1B$(Q\x2E\x21\x1B(Bdef'),
      67      )
      68      xmlcharnametest = (
      69          '\xAB\u211C\xBB = \u2329\u1234\u232A',
      70          b'\x1B$(Q\x29\x28\x1B(Bℜ\x1B$(Q\x29\x32\x1B(B = ⟨ሴ⟩'
      71      )
      72  
      73  class ESC[4;38;5;81mTest_ISO2022_KR(ESC[4;38;5;149mmultibytecodec_supportESC[4;38;5;149m.ESC[4;38;5;149mTestBase, ESC[4;38;5;149munittestESC[4;38;5;149m.ESC[4;38;5;149mTestCase):
      74      encoding = 'iso2022_kr'
      75      tstring = multibytecodec_support.load_teststring('iso2022_kr')
      76      codectests = COMMON_CODEC_TESTS + (
      77          (b'ab\x1BNdef', 'replace', 'ab\x1BNdef'),
      78      )
      79  
      80      # iso2022_kr.txt cannot be used to test "chunk coding": the escape
      81      # sequence is only written on the first line
      82      @unittest.skip('iso2022_kr.txt cannot be used to test "chunk coding"')
      83      def test_chunkcoding(self):
      84          pass
      85  
      86  if __name__ == "__main__":
      87      unittest.main()