Add tests for incremental codecs with an errors

argument.
This commit is contained in:
Walter Dörwald 2006-10-29 23:02:27 +00:00
parent 92911bfc6a
commit 98c70acf47
1 changed files with 24 additions and 0 deletions

View File

@ -1064,6 +1064,12 @@ broken_unicode_with_streams = [
] ]
broken_incremental_coders = broken_unicode_with_streams[:] broken_incremental_coders = broken_unicode_with_streams[:]
# The following encodings only support "strict" mode
only_strict_mode = [
"idna",
"zlib_codec",
]
try: try:
import bz2 import bz2
except ImportError: except ImportError:
@ -1153,6 +1159,24 @@ class BasicUnicodeTest(unittest.TestCase):
result = u"".join(codecs.iterdecode(codecs.iterencode(u"", encoding), encoding)) result = u"".join(codecs.iterdecode(codecs.iterencode(u"", encoding), encoding))
self.assertEqual(result, u"") self.assertEqual(result, u"")
if encoding not in only_strict_mode:
# check incremental decoder/encoder with errors argument
try:
encoder = codecs.getincrementalencoder(encoding)("ignore")
cencoder = _testcapi.codec_incrementalencoder(encoding, "ignore")
except LookupError: # no IncrementalEncoder
pass
else:
encodedresult = "".join(encoder.encode(c) for c in s)
decoder = codecs.getincrementaldecoder(encoding)("ignore")
decodedresult = u"".join(decoder.decode(c) for c in encodedresult)
self.assertEqual(decodedresult, s, "%r != %r (encoding=%r)" % (decodedresult, s, encoding))
encodedresult = "".join(cencoder.encode(c) for c in s)
cdecoder = _testcapi.codec_incrementaldecoder(encoding, "ignore")
decodedresult = u"".join(cdecoder.decode(c) for c in encodedresult)
self.assertEqual(decodedresult, s, "%r != %r (encoding=%r)" % (decodedresult, s, encoding))
def test_seek(self): def test_seek(self):
# all codecs should be able to encode these # all codecs should be able to encode these
s = u"%s\n%s\n" % (100*u"abc123", 100*u"def456") s = u"%s\n%s\n" % (100*u"abc123", 100*u"def456")