10a8c90248264a8b26970b4473770bcc3df8515fJosh Gao#!/usr/bin/env python
20a8c90248264a8b26970b4473770bcc3df8515fJosh Gao#
30a8c90248264a8b26970b4473770bcc3df8515fJosh Gao# Codec encoding tests for ISO 2022 encodings.
40a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
50a8c90248264a8b26970b4473770bcc3df8515fJosh Gaofrom test import test_support
60a8c90248264a8b26970b4473770bcc3df8515fJosh Gaofrom test import test_multibytecodec_support
70a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoimport unittest
80a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
90a8c90248264a8b26970b4473770bcc3df8515fJosh GaoCOMMON_CODEC_TESTS = (
100a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        # invalid bytes
110a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        (b'ab\xFFcd', 'replace', u'ab\uFFFDcd'),
120a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        (b'ab\x1Bdef', 'replace', u'ab\x1Bdef'),
130a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        (b'ab\x1B$def', 'replace', u'ab\uFFFD'),
140a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    )
150a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
160a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoclass Test_ISO2022_JP(test_multibytecodec_support.TestBase, unittest.TestCase):
170a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    encoding = 'iso2022_jp'
180a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    tstring = test_multibytecodec_support.load_teststring('iso2022_jp')
190a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    codectests = COMMON_CODEC_TESTS + (
200a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        (b'ab\x1BNdef', 'replace', u'ab\x1BNdef'),
210a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    )
220a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
230a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoclass Test_ISO2022_JP2(test_multibytecodec_support.TestBase, unittest.TestCase):
240a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    encoding = 'iso2022_jp_2'
250a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    tstring = test_multibytecodec_support.load_teststring('iso2022_jp')
260a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    codectests = COMMON_CODEC_TESTS + (
270a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        (b'ab\x1BNdef', 'replace', u'abdef'),
280a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    )
290a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
300a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoclass Test_ISO2022_KR(test_multibytecodec_support.TestBase, unittest.TestCase):
310a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    encoding = 'iso2022_kr'
320a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    tstring = test_multibytecodec_support.load_teststring('iso2022_kr')
330a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    codectests = COMMON_CODEC_TESTS + (
340a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        (b'ab\x1BNdef', 'replace', u'ab\x1BNdef'),
350a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    )
360a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
370a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    # iso2022_kr.txt cannot be used to test "chunk coding": the escape
380a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    # sequence is only written on the first line
390a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    def test_chunkcoding(self):
400a8c90248264a8b26970b4473770bcc3df8515fJosh Gao        pass
410a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
420a8c90248264a8b26970b4473770bcc3df8515fJosh Gaodef test_main():
430a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    test_support.run_unittest(__name__)
440a8c90248264a8b26970b4473770bcc3df8515fJosh Gao
450a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoif __name__ == "__main__":
460a8c90248264a8b26970b4473770bcc3df8515fJosh Gao    test_main()
47