14adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao#!/usr/bin/env python
24adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao#
34adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao# test_codecencodings_kr.py
44adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao#   Codec encoding tests for ROK encodings.
54adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao#
64adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
74adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaofrom test import test_support
84adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaofrom test import test_multibytecodec_support
94adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoimport unittest
104adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
114adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass Test_CP949(test_multibytecodec_support.TestBase, unittest.TestCase):
124adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    encoding = 'cp949'
134adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    tstring = test_multibytecodec_support.load_teststring('cp949')
144adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    codectests = (
154adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        # invalid bytes
164adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\x80\x80\xc1\xc4", "strict",  None),
174adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\xc8", "strict",  None),
184adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\uc894"),
194adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\uc894\ufffd"),
204adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\uc894"),
214adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    )
224adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
234adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass Test_EUCKR(test_multibytecodec_support.TestBase, unittest.TestCase):
244adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    encoding = 'euc_kr'
254adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    tstring = test_multibytecodec_support.load_teststring('euc_kr')
264adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    codectests = (
274adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        # invalid bytes
284adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\x80\x80\xc1\xc4", "strict",  None),
294adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\xc8", "strict",  None),
304adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\uc894"),
314adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\uc894\ufffd"),
324adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\uc894"),
334adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
344adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        # composed make-up sequence errors
354adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xa4\xd4", "strict", None),
364adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xa4\xd4\xa4", "strict", None),
374adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xa4\xd4\xa4\xb6", "strict", None),
384adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xa4\xd4\xa4\xb6\xa4", "strict", None),
394adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xa4\xd4\xa4\xb6\xa4\xd0", "strict", None),
404adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xa4\xd4\xa4\xb6\xa4\xd0\xa4", "strict", None),
414adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xa4\xd4\xa4\xb6\xa4\xd0\xa4\xd4", "strict", u"\uc4d4"),
424adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xa4\xd4\xa4\xb6\xa4\xd0\xa4\xd4x", "strict", u"\uc4d4x"),
434adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("a\xa4\xd4\xa4\xb6\xa4", "replace", u"a\ufffd"),
444adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xa4\xd4\xa3\xb6\xa4\xd0\xa4\xd4", "strict", None),
454adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xa4\xd4\xa4\xb6\xa3\xd0\xa4\xd4", "strict", None),
464adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xa4\xd4\xa4\xb6\xa4\xd0\xa3\xd4", "strict", None),
474adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xa4\xd4\xa4\xff\xa4\xd0\xa4\xd4", "replace", u"\ufffd"),
484adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xa4\xd4\xa4\xb6\xa4\xff\xa4\xd4", "replace", u"\ufffd"),
494adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xa4\xd4\xa4\xb6\xa4\xd0\xa4\xff", "replace", u"\ufffd"),
504adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("\xc1\xc4", "strict", u"\uc894"),
514adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    )
524adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
534adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoclass Test_JOHAB(test_multibytecodec_support.TestBase, unittest.TestCase):
544adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    encoding = 'johab'
554adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    tstring = test_multibytecodec_support.load_teststring('johab')
564adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    codectests = (
574adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        # invalid bytes
584adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\x80\x80\xc1\xc4", "strict",  None),
594adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\xc8", "strict",  None),
604adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\x80\x80\xc1\xc4", "replace", u"abc\ufffd\ucd27"),
614adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\x80\x80\xc1\xc4\xc8", "replace", u"abc\ufffd\ucd27\ufffd"),
624adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao        ("abc\x80\x80\xc1\xc4", "ignore",  u"abc\ucd27"),
634adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    )
644adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
654adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaodef test_main():
664adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    test_support.run_unittest(__name__)
674adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao
684adfde8bc82dd39f59e0445588c3e599ada477dJosh Gaoif __name__ == "__main__":
694adfde8bc82dd39f59e0445588c3e599ada477dJosh Gao    test_main()
70