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