]> granicus.if.org Git - python/commitdiff
Issue #12057: Add tests for ISO 2022 codecs
authorVictor Stinner <victor.stinner@haypocalc.com>
Mon, 30 May 2011 21:58:21 +0000 (23:58 +0200)
committerVictor Stinner <victor.stinner@haypocalc.com>
Mon, 30 May 2011 21:58:21 +0000 (23:58 +0200)
iso2022_jp, iso2022_jp_2 and iso2022_kr

Lib/test/cjkencodings/iso2022_jp-utf8.txt [new file with mode: 0644]
Lib/test/cjkencodings/iso2022_jp.txt [new file with mode: 0644]
Lib/test/cjkencodings/iso2022_kr-utf8.txt [new file with mode: 0644]
Lib/test/cjkencodings/iso2022_kr.txt [new file with mode: 0644]
Lib/test/test_codecencodings_iso2022.py [new file with mode: 0644]
Lib/test/test_multibytecodec_support.py
Misc/NEWS

diff --git a/Lib/test/cjkencodings/iso2022_jp-utf8.txt b/Lib/test/cjkencodings/iso2022_jp-utf8.txt
new file mode 100644 (file)
index 0000000..7763250
--- /dev/null
@@ -0,0 +1,7 @@
+Python の開発は、1990 年ごろから開始されています。
+開発者の Guido van Rossum は教育用のプログラミング言語「ABC」の開発に参加していましたが、ABC は実用上の目的にはあまり適していませんでした。
+このため、Guido はより実用的なプログラミング言語の開発を開始し、英国 BBS 放送のコメディ番組「モンティ パイソン」のファンである Guido はこの言語を「Python」と名づけました。
+このような背景から生まれた Python の言語設計は、「シンプル」で「習得が容易」という目標に重点が置かれています。
+多くのスクリプト系言語ではユーザの目先の利便性を優先して色々な機能を言語要素として取り入れる場合が多いのですが、Python ではそういった小細工が追加されることはあまりありません。
+言語自体の機能は最小限に押さえ、必要な機能は拡張モジュールとして追加する、というのが Python のポリシーです。
+
diff --git a/Lib/test/cjkencodings/iso2022_jp.txt b/Lib/test/cjkencodings/iso2022_jp.txt
new file mode 100644 (file)
index 0000000..fc398d6
--- /dev/null
@@ -0,0 +1,7 @@
+Python \e$B$N3+H/$O!"\e(B1990 \e$BG/$4$m$+$i3+;O$5$l$F$$$^$9!#\e(B
+\e$B3+H/<T$N\e(B Guido van Rossum \e$B$O650iMQ$N%W%m%0%i%_%s%08@8l!V\e(BABC\e$B!W$N3+H/$K;22C$7$F$$$^$7$?$,!"\e(BABC \e$B$O<BMQ>e$NL\E*$K$O$"$^$jE,$7$F$$$^$;$s$G$7$?!#\e(B
+\e$B$3$N$?$a!"\e(BGuido \e$B$O$h$j<BMQE*$J%W%m%0%i%_%s%08@8l$N3+H/$r3+;O$7!"1Q9q\e(B BBS \e$BJ|Aw$N%3%a%G%#HVAH!V%b%s%F%#\e(B \e$B%Q%$%=%s!W$N%U%!%s$G$"$k\e(B Guido \e$B$O$3$N8@8l$r!V\e(BPython\e$B!W$HL>$E$1$^$7$?!#\e(B
+\e$B$3$N$h$&$JGX7J$+$i@8$^$l$?\e(B Python \e$B$N8@8l@_7W$O!"!V%7%s%W%k!W$G!V=,F@$,MF0W!W$H$$$&L\I8$K=EE@$,CV$+$l$F$$$^$9!#\e(B
+\e$BB?$/$N%9%/%j%W%H7O8@8l$G$O%f!<%6$NL\@h$NMxJX@-$rM%@h$7$F?'!9$J5!G=$r8@8lMWAG$H$7$F<h$jF~$l$k>l9g$,B?$$$N$G$9$,!"\e(BPython \e$B$G$O$=$&$$$C$?>.:Y9)$,DI2C$5$l$k$3$H$O$"$^$j$"$j$^$;$s!#\e(B
+\e$B8@8l<+BN$N5!G=$O:G>.8B$K2!$5$(!"I,MW$J5!G=$O3HD%%b%8%e!<%k$H$7$FDI2C$9$k!"$H$$$&$N$,\e(B Python \e$B$N%]%j%7!<$G$9!#\e(B
+
diff --git a/Lib/test/cjkencodings/iso2022_kr-utf8.txt b/Lib/test/cjkencodings/iso2022_kr-utf8.txt
new file mode 100644 (file)
index 0000000..d5c9d6e
--- /dev/null
@@ -0,0 +1,7 @@
+◎ 파이썬(Python)은 배우기 쉽고, 강력한 프로그래밍 언어입니다. 파이썬은
+효율적인 고수준 데이터 구조와 간단하지만 효율적인 객체지향프로그래밍을
+지원합니다. 파이썬의 우아(優雅)한 문법과 동적 타이핑, 그리고 인터프리팅
+환경은 파이썬을 스크립팅과 여러 분야에서와 대부분의 플랫폼에서의 빠른
+애플리케이션 개발을 할 수 있는 이상적인 언어로 만들어줍니다.
+
+☆첫가끝: 날아라 쓩~ 큼! 금없이 전니다. 그런거 다.
diff --git a/Lib/test/cjkencodings/iso2022_kr.txt b/Lib/test/cjkencodings/iso2022_kr.txt
new file mode 100644 (file)
index 0000000..2cece21
--- /dev/null
@@ -0,0 +1,7 @@
+\e$)C\ e!]\ f \ eFD@L=c\ f(Python)\ e@:\ f \ e9h?l1b\ f \ e=10m\ f\ e0-7BGQ\ f \ eGA7N1W7!9V\ f \ e>p>n@T4O4Y\ f\ eFD@L=c@:\ f
+\ eH?@2@{@N\ f \ e0m<vAX\ f \ e5%@LEM\ f \ e18A6?M\ f \ e0#4\GOAv88\ f \ eH?@2@{@N\ f \ e04C<AvGbGA7N1W7!9V@;\ f
+\ eAv?xGU4O4Y\ f\ eFD@L=c@G\ f \ e?l>F\ f(\ eiPd:\ f)\ eGQ\ f \ e9.9}0z\ f \ e5?@{\ f \ eE8@LGN\ f\ e1W8.0m\ f \ e@NEMGA8.FC\ f
+\ eH/0f@:\ f \ eFD@L=c@;\ f \ e=:E)83FC0z\ f \ e?)7/\ f \ e:P>_?!<-?M\ f \ e4k:N:P@G\ f \ eGC7'F{?!<-@G\ f \ e:|8%\ f
+\ e>VGC8.DI@L<G\ f \ e039_@;\ f \ eGR\ f \ e<v\ f \ e@V4B\ f \ e@L;s@{@N\ f \ e>p>n7N\ f \ e885i>nA]4O4Y\ f.
+
+\ e!YC90!3!\ f\ e3/>F6s\ f \ e>1\ f\ eE-\ f\ e1]>x@L\ f \ e@|4O4Y\ f\ e1W710E\ f \ e4Y\ f.
diff --git a/Lib/test/test_codecencodings_iso2022.py b/Lib/test/test_codecencodings_iso2022.py
new file mode 100644 (file)
index 0000000..9d1d2af
--- /dev/null
@@ -0,0 +1,46 @@
+#!/usr/bin/env python
+#
+# Codec encoding tests for ISO 2022 encodings.
+
+from test import test_support
+from test import test_multibytecodec_support
+import unittest
+
+COMMON_CODEC_TESTS = (
+        # invalid bytes
+        (b'ab\xFFcd', 'replace', u'ab\uFFFDcd'),
+        (b'ab\x1Bdef', 'replace', u'ab\x1Bdef'),
+        (b'ab\x1B$def', 'replace', u'ab\uFFFD'),
+    )
+
+class Test_ISO2022_JP(test_multibytecodec_support.TestBase, unittest.TestCase):
+    encoding = 'iso2022_jp'
+    tstring = test_multibytecodec_support.load_teststring('iso2022_jp')
+    codectests = COMMON_CODEC_TESTS + (
+        (b'ab\x1BNdef', 'replace', u'ab\x1BNdef'),
+    )
+
+class Test_ISO2022_JP2(test_multibytecodec_support.TestBase, unittest.TestCase):
+    encoding = 'iso2022_jp_2'
+    tstring = test_multibytecodec_support.load_teststring('iso2022_jp')
+    codectests = COMMON_CODEC_TESTS + (
+        (b'ab\x1BNdef', 'replace', u'abdef'),
+    )
+
+class Test_ISO2022_KR(test_multibytecodec_support.TestBase, unittest.TestCase):
+    encoding = 'iso2022_kr'
+    tstring = test_multibytecodec_support.load_teststring('iso2022_kr')
+    codectests = COMMON_CODEC_TESTS + (
+        (b'ab\x1BNdef', 'replace', u'ab\x1BNdef'),
+    )
+
+    # iso2022_kr.txt cannot be used to test "chunk coding": the escape
+    # sequence is only written on the first line
+    def test_chunkcoding(self):
+        pass
+
+def test_main():
+    test_support.run_unittest(__name__)
+
+if __name__ == "__main__":
+    test_main()
index 94529096d2f792ba0fb9b1bcf6ef61a6b82ccff0..7d3159df473cba5132a9b49eb39fb392075f3818 100644 (file)
@@ -50,7 +50,9 @@ class TestBase:
                 func = self.encode
             if expected:
                 result = func(source, scheme)[0]
-                self.assertEqual(result, expected)
+                self.assertEqual(result, expected,
+                                 '%r.decode(%r)=%r != %r'
+                                 % (source, self.encoding, result, expected))
             else:
                 self.assertRaises(UnicodeError, func, source, scheme)
 
index f741bda1e56ff543e3c413fbed353e58866c29e8..517a6e51b26b94c38cbab26e9f9ae85ed65ea024 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -16,6 +16,12 @@ Core and Builtins
 Library
 -------
 
+Tests
+-----
+
+- Issue #12057: Add tests for ISO 2022 codecs (iso2022_jp, iso2022_jp_2,
+  iso2022_kr).
+
 
 What's New in Python 2.7.2?
 ===========================