17db96d56Sopenharmony_ci# Codec encoding tests for ISO 2022 encodings.
27db96d56Sopenharmony_ci
37db96d56Sopenharmony_cifrom test import multibytecodec_support
47db96d56Sopenharmony_ciimport unittest
57db96d56Sopenharmony_ci
67db96d56Sopenharmony_ciCOMMON_CODEC_TESTS = (
77db96d56Sopenharmony_ci        # invalid bytes
87db96d56Sopenharmony_ci        (b'ab\xFFcd', 'replace', 'ab\uFFFDcd'),
97db96d56Sopenharmony_ci        (b'ab\x1Bdef', 'replace', 'ab\x1Bdef'),
107db96d56Sopenharmony_ci        (b'ab\x1B$def', 'replace', 'ab\uFFFD'),
117db96d56Sopenharmony_ci    )
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_ciclass Test_ISO2022_JP(multibytecodec_support.TestBase, unittest.TestCase):
147db96d56Sopenharmony_ci    encoding = 'iso2022_jp'
157db96d56Sopenharmony_ci    tstring = multibytecodec_support.load_teststring('iso2022_jp')
167db96d56Sopenharmony_ci    codectests = COMMON_CODEC_TESTS + (
177db96d56Sopenharmony_ci        (b'ab\x1BNdef', 'replace', 'ab\x1BNdef'),
187db96d56Sopenharmony_ci    )
197db96d56Sopenharmony_ci
207db96d56Sopenharmony_ciclass Test_ISO2022_JP2(multibytecodec_support.TestBase, unittest.TestCase):
217db96d56Sopenharmony_ci    encoding = 'iso2022_jp_2'
227db96d56Sopenharmony_ci    tstring = multibytecodec_support.load_teststring('iso2022_jp')
237db96d56Sopenharmony_ci    codectests = COMMON_CODEC_TESTS + (
247db96d56Sopenharmony_ci        (b'ab\x1BNdef', 'replace', 'abdef'),
257db96d56Sopenharmony_ci    )
267db96d56Sopenharmony_ci
277db96d56Sopenharmony_ciclass Test_ISO2022_KR(multibytecodec_support.TestBase, unittest.TestCase):
287db96d56Sopenharmony_ci    encoding = 'iso2022_kr'
297db96d56Sopenharmony_ci    tstring = multibytecodec_support.load_teststring('iso2022_kr')
307db96d56Sopenharmony_ci    codectests = COMMON_CODEC_TESTS + (
317db96d56Sopenharmony_ci        (b'ab\x1BNdef', 'replace', 'ab\x1BNdef'),
327db96d56Sopenharmony_ci    )
337db96d56Sopenharmony_ci
347db96d56Sopenharmony_ci    # iso2022_kr.txt cannot be used to test "chunk coding": the escape
357db96d56Sopenharmony_ci    # sequence is only written on the first line
367db96d56Sopenharmony_ci    @unittest.skip('iso2022_kr.txt cannot be used to test "chunk coding"')
377db96d56Sopenharmony_ci    def test_chunkcoding(self):
387db96d56Sopenharmony_ci        pass
397db96d56Sopenharmony_ci
407db96d56Sopenharmony_ciif __name__ == "__main__":
417db96d56Sopenharmony_ci    unittest.main()
42