Add tests for the C APIs PyCodec_IncrementalEncoder() and

PyCodec_IncrementalDecoder().
This commit is contained in:
Walter Dörwald 2006-03-18 14:22:26 +00:00
parent ba8e180f3b
commit 9ae019bf5b
2 changed files with 38 additions and 2 deletions

View file

@ -1,7 +1,7 @@
from test import test_support
import unittest
import codecs
import sys, StringIO
import sys, StringIO, _testcapi
class Queue(object):
"""
@ -1032,9 +1032,11 @@ class BasicUnicodeTest(unittest.TestCase):
decodedresult += reader.read()
self.assertEqual(decodedresult, s, "%r != %r (encoding=%r)" % (decodedresult, s, encoding))
# check incremental decoder/encoder and iterencode()/iterdecode()
# check incremental decoder/encoder (fetched via the Python
# and C API) and iterencode()/iterdecode()
try:
encoder = codecs.getincrementalencoder(encoding)()
cencoder = _testcapi.codec_incrementalencoder(encoding)
except LookupError: # no IncrementalEncoder
pass
else:
@ -1048,6 +1050,16 @@ class BasicUnicodeTest(unittest.TestCase):
decodedresult += decoder.decode(c)
self.assertEqual(decodedresult, s, "%r != %r (encoding=%r)" % (decodedresult, s, encoding))
# check C API
encodedresult = ""
for c in s:
encodedresult += cencoder.encode(c)
cdecoder = _testcapi.codec_incrementaldecoder(encoding)
decodedresult = u""
for c in encodedresult:
decodedresult += cdecoder.decode(c)
self.assertEqual(decodedresult, s, "%r != %r (encoding=%r)" % (decodedresult, s, encoding))
# check iterencode()/iterdecode()
result = u"".join(codecs.iterdecode(codecs.iterencode(s, encoding), encoding))
self.assertEqual(result, s, "%r != %r (encoding=%r)" % (result, s, encoding))