add tests for PyInstanceMethod_Type
This commit is contained in:
parent
a3b341f142
commit
9b6df6afe0
@ -2,10 +2,34 @@
|
|||||||
# these are all functions _testcapi exports whose name begins with 'test_'.
|
# these are all functions _testcapi exports whose name begins with 'test_'.
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
import unittest
|
||||||
from test import support
|
from test import support
|
||||||
import _testcapi
|
import _testcapi
|
||||||
|
|
||||||
|
def testfunction(self):
|
||||||
|
"""some doc"""
|
||||||
|
return self
|
||||||
|
|
||||||
|
class InstanceMethod:
|
||||||
|
id = _testcapi.instancemethod(id)
|
||||||
|
testfunction = _testcapi.instancemethod(testfunction)
|
||||||
|
|
||||||
|
class CAPITest(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_instancemethod(self):
|
||||||
|
inst = InstanceMethod()
|
||||||
|
self.assertEqual(id(inst), inst.id())
|
||||||
|
self.assert_(inst.testfunction() is inst)
|
||||||
|
self.assertEqual(inst.testfunction.__doc__, testfunction.__doc__)
|
||||||
|
self.assertEqual(InstanceMethod.testfunction.__doc__, testfunction.__doc__)
|
||||||
|
|
||||||
|
InstanceMethod.testfunction.attribute = "test"
|
||||||
|
self.assertEqual(testfunction.attribute, "test")
|
||||||
|
self.assertRaises(AttributeError, setattr, inst.testfunction, "attribute", "test")
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
|
support.run_unittest(CAPITest)
|
||||||
|
|
||||||
for name in dir(_testcapi):
|
for name in dir(_testcapi):
|
||||||
if name.startswith('test_'):
|
if name.startswith('test_'):
|
||||||
@ -47,5 +71,6 @@ def test_main():
|
|||||||
t.start()
|
t.start()
|
||||||
t.join()
|
t.join()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
test_main()
|
||||||
|
@ -1231,6 +1231,8 @@ PyInit__testcapi(void)
|
|||||||
PyModule_AddObject(m, "PY_SSIZE_T_MAX", PyLong_FromSsize_t(PY_SSIZE_T_MAX));
|
PyModule_AddObject(m, "PY_SSIZE_T_MAX", PyLong_FromSsize_t(PY_SSIZE_T_MAX));
|
||||||
PyModule_AddObject(m, "PY_SSIZE_T_MIN", PyLong_FromSsize_t(PY_SSIZE_T_MIN));
|
PyModule_AddObject(m, "PY_SSIZE_T_MIN", PyLong_FromSsize_t(PY_SSIZE_T_MIN));
|
||||||
PyModule_AddObject(m, "SIZEOF_PYGC_HEAD", PyLong_FromSsize_t(sizeof(PyGC_Head)));
|
PyModule_AddObject(m, "SIZEOF_PYGC_HEAD", PyLong_FromSsize_t(sizeof(PyGC_Head)));
|
||||||
|
Py_INCREF(&PyInstanceMethod_Type);
|
||||||
|
PyModule_AddObject(m, "instancemethod", (PyObject *)&PyInstanceMethod_Type);
|
||||||
|
|
||||||
TestError = PyErr_NewException("_testcapi.error", NULL, NULL);
|
TestError = PyErr_NewException("_testcapi.error", NULL, NULL);
|
||||||
Py_INCREF(TestError);
|
Py_INCREF(TestError);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user