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_'.
|
||||
|
||||
import sys
|
||||
import unittest
|
||||
from test import support
|
||||
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():
|
||||
support.run_unittest(CAPITest)
|
||||
|
||||
for name in dir(_testcapi):
|
||||
if name.startswith('test_'):
|
||||
@ -47,5 +71,6 @@ def test_main():
|
||||
t.start()
|
||||
t.join()
|
||||
|
||||
|
||||
if __name__ == "__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_MIN", PyLong_FromSsize_t(PY_SSIZE_T_MIN));
|
||||
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);
|
||||
Py_INCREF(TestError);
|
||||
|
Loading…
x
Reference in New Issue
Block a user