[Python-checkins] r81178 - in python/branches/py3k-jit: Modules/_testcapimodule.c Unittests/GetArgsTest.cc
collin.winter
python-checkins at python.org
Fri May 14 23:40:31 CEST 2010
Author: collin.winter
Date: Fri May 14 23:40:31 2010
New Revision: 81178
Log:
Revert r79815.
Modified:
python/branches/py3k-jit/Modules/_testcapimodule.c
python/branches/py3k-jit/Unittests/GetArgsTest.cc
Modified: python/branches/py3k-jit/Modules/_testcapimodule.c
==============================================================================
--- python/branches/py3k-jit/Modules/_testcapimodule.c (original)
+++ python/branches/py3k-jit/Modules/_testcapimodule.c Fri May 14 23:40:31 2010
@@ -807,58 +807,6 @@
}
#endif
-/* Test Z and Z# codes for PyArg_ParseTuple */
-static PyObject *
-test_Z_code(PyObject *self)
-{
- PyObject *tuple, *obj;
- Py_UNICODE *value1, *value2;
- Py_ssize_t len1, len2;
-
- tuple = PyTuple_New(2);
- if (tuple == NULL)
- return NULL;
-
- obj = PyUnicode_FromString("test");
- PyTuple_SET_ITEM(tuple, 0, obj);
- Py_INCREF(Py_None);
- PyTuple_SET_ITEM(tuple, 1, Py_None);
-
- /* swap values on purpose */
- value1 = NULL;
- value2 = PyUnicode_AS_UNICODE(obj);
-
- /* Test Z for both values */
- if (PyArg_ParseTuple(tuple, "ZZ:test_Z_code", &value1, &value2) < 0)
- return NULL;
- if (value1 != PyUnicode_AS_UNICODE(obj))
- return raiseTestError("test_Z_code",
- "Z code returned wrong value for 'test'");
- if (value2 != NULL)
- return raiseTestError("test_Z_code",
- "Z code returned wrong value for None");
-
- value1 = NULL;
- value2 = PyUnicode_AS_UNICODE(obj);
- len1 = -1;
- len2 = -1;
-
- /* Test Z# for both values */
- if (PyArg_ParseTuple(tuple, "Z#Z#:test_Z_code", &value1, &len1,
- &value2, &len2) < 0)
- return NULL;
- if (value1 != PyUnicode_AS_UNICODE(obj) ||
- len1 != PyUnicode_GET_SIZE(obj))
- return raiseTestError("test_Z_code",
- "Z# code returned wrong values for 'test'");
- if (value2 != NULL ||
- len2 != 0)
- return raiseTestError("test_Z_code",
- "Z# code returned wrong values for None'");
-
- Py_DECREF(tuple);
- Py_RETURN_NONE;
-}
static PyObject *
test_widechar(PyObject *self)
@@ -1646,7 +1594,6 @@
{"codec_incrementaldecoder",
(PyCFunction)codec_incrementaldecoder, METH_VARARGS},
#endif
- {"test_Z_code", (PyCFunction)test_Z_code, METH_NOARGS},
{"test_widechar", (PyCFunction)test_widechar, METH_NOARGS},
#ifdef WITH_THREAD
{"_test_thread_state", test_thread_state, METH_VARARGS},
Modified: python/branches/py3k-jit/Unittests/GetArgsTest.cc
==============================================================================
--- python/branches/py3k-jit/Unittests/GetArgsTest.cc (original)
+++ python/branches/py3k-jit/Unittests/GetArgsTest.cc Fri May 14 23:40:31 2010
@@ -183,3 +183,42 @@
Py_DECREF(tuple);
}
+
+
+// Test the Z and Z# codes for PyArg_ParseTuple.
+TEST_F(GetArgsTest, FormatCode_Z)
+{
+ PyObject *tuple = PyTuple_New(2);
+ ASSERT_TRUE(tuple != NULL);
+
+ PyObject *obj = PyUnicode_FromString("test");
+ PyTuple_SET_ITEM(tuple, 0, obj);
+ Py_INCREF(Py_None);
+ PyTuple_SET_ITEM(tuple, 1, Py_None);
+
+ // Swap values on purpose.
+ Py_UNICODE *value1 = NULL;
+ Py_UNICODE *value2 = PyUnicode_AS_UNICODE(obj);
+
+ /* Test Z for both values. */
+ EXPECT_GE(PyArg_ParseTuple(tuple, "ZZ:FormatCode_Z", &value1, &value2), 0);
+ EXPECT_EQ(value1, PyUnicode_AS_UNICODE(obj))
+ << "Z code returned wrong value for 'test'";
+ EXPECT_TRUE(value2 == NULL) << "Z code returned wrong value for None";
+
+ value1 = NULL;
+ value2 = PyUnicode_AS_UNICODE(obj);
+ Py_ssize_t len1 = -1;
+ Py_ssize_t len2 = -1;
+
+ // Test Z# for both values.
+ EXPECT_GE(PyArg_ParseTuple(tuple, "Z#Z#:FormatCode_Z", &value1, &len1,
+ &value2, &len2), 0);
+ EXPECT_EQ(PyUnicode_AS_UNICODE(obj), value1);
+ EXPECT_EQ(PyUnicode_GET_SIZE(obj), len1);
+ EXPECT_TRUE(value2 == NULL);
+ EXPECT_EQ(0, len2);
+
+ Py_DECREF(tuple);
+
+}
More information about the Python-checkins
mailing list