Add tests for the C APIs PyCodec_IncrementalEncoder() and
PyCodec_IncrementalDecoder().
This commit is contained in:
parent
ba8e180f3b
commit
9ae019bf5b
|
@ -1,7 +1,7 @@
|
||||||
from test import test_support
|
from test import test_support
|
||||||
import unittest
|
import unittest
|
||||||
import codecs
|
import codecs
|
||||||
import sys, StringIO
|
import sys, StringIO, _testcapi
|
||||||
|
|
||||||
class Queue(object):
|
class Queue(object):
|
||||||
"""
|
"""
|
||||||
|
@ -1032,9 +1032,11 @@ class BasicUnicodeTest(unittest.TestCase):
|
||||||
decodedresult += reader.read()
|
decodedresult += reader.read()
|
||||||
self.assertEqual(decodedresult, s, "%r != %r (encoding=%r)" % (decodedresult, s, encoding))
|
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:
|
try:
|
||||||
encoder = codecs.getincrementalencoder(encoding)()
|
encoder = codecs.getincrementalencoder(encoding)()
|
||||||
|
cencoder = _testcapi.codec_incrementalencoder(encoding)
|
||||||
except LookupError: # no IncrementalEncoder
|
except LookupError: # no IncrementalEncoder
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
|
@ -1048,6 +1050,16 @@ class BasicUnicodeTest(unittest.TestCase):
|
||||||
decodedresult += decoder.decode(c)
|
decodedresult += decoder.decode(c)
|
||||||
self.assertEqual(decodedresult, s, "%r != %r (encoding=%r)" % (decodedresult, s, encoding))
|
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()
|
# check iterencode()/iterdecode()
|
||||||
result = u"".join(codecs.iterdecode(codecs.iterencode(s, encoding), encoding))
|
result = u"".join(codecs.iterdecode(codecs.iterencode(s, encoding), encoding))
|
||||||
self.assertEqual(result, s, "%r != %r (encoding=%r)" % (result, s, encoding))
|
self.assertEqual(result, s, "%r != %r (encoding=%r)" % (result, s, encoding))
|
||||||
|
|
|
@ -478,6 +478,26 @@ test_u_code(PyObject *self)
|
||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
PyObject *codec_incrementalencoder(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
const char *encoding, *errors = NULL;
|
||||||
|
if (!PyArg_ParseTuple(args, "s|s:test_incrementalencoder",
|
||||||
|
&encoding, &errors))
|
||||||
|
return NULL;
|
||||||
|
return PyCodec_IncrementalEncoder(encoding, errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
PyObject *codec_incrementaldecoder(PyObject *self, PyObject *args)
|
||||||
|
{
|
||||||
|
const char *encoding, *errors = NULL;
|
||||||
|
if (!PyArg_ParseTuple(args, "s|s:test_incrementaldecoder",
|
||||||
|
&encoding, &errors))
|
||||||
|
return NULL;
|
||||||
|
return PyCodec_IncrementalDecoder(encoding, errors);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Simple test of _PyLong_NumBits and _PyLong_Sign. */
|
/* Simple test of _PyLong_NumBits and _PyLong_Sign. */
|
||||||
|
@ -623,6 +643,10 @@ static PyMethodDef TestMethods[] = {
|
||||||
{"getargs_K", (PyCFunction)getargs_K, METH_VARARGS},
|
{"getargs_K", (PyCFunction)getargs_K, METH_VARARGS},
|
||||||
{"test_longlong_api", (PyCFunction)test_longlong_api, METH_NOARGS},
|
{"test_longlong_api", (PyCFunction)test_longlong_api, METH_NOARGS},
|
||||||
{"test_L_code", (PyCFunction)test_L_code, METH_NOARGS},
|
{"test_L_code", (PyCFunction)test_L_code, METH_NOARGS},
|
||||||
|
{"codec_incrementalencoder",
|
||||||
|
(PyCFunction)codec_incrementalencoder, METH_VARARGS},
|
||||||
|
{"codec_incrementaldecoder",
|
||||||
|
(PyCFunction)codec_incrementaldecoder, METH_VARARGS},
|
||||||
#endif
|
#endif
|
||||||
#ifdef Py_USING_UNICODE
|
#ifdef Py_USING_UNICODE
|
||||||
{"test_u_code", (PyCFunction)test_u_code, METH_NOARGS},
|
{"test_u_code", (PyCFunction)test_u_code, METH_NOARGS},
|
||||||
|
|
Loading…
Reference in New Issue