8000 add 2 tests · python/cpython@17d60d1 · GitHub
[go: up one dir, main page]

Skip to content

Commit 17d60d1

Browse files
committed
add 2 tests
1 parent bd9415d commit 17d60d1

File tree

2 files changed

+40
-4
lines changed

2 files changed

+40
-4
lines changed

Lib/test/test_capi/test_list.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,40 @@
11
import unittest
22
import sys
33
from test.support import import_helper
4+
from collections import UserList
45

56
_testcapi = import_helper.import_module('_testcapi')
67

78
NULL = None
89

10+
class ListSubclass(list):
11+
...
12+
913
class CAPITest(unittest.TestCase):
1014
def test_check(self):
1115
# Test PyList_Check()
1216
check = _testcapi.list_check
1317
self.assertTrue(check([1, 2]))
1418
self.assertTrue(check([]))
19+
self.assertTrue(check(ListSubclass([1, 2])))
1520
self.assertFalse(check({1: 2}))
1621
self.assertFalse(check((1, 2)))
17-
self.assertFalse(check('abc'))
18-
self.assertFalse(check(b'abc'))
1922
self.assertFalse(check(42))
2023
self.assertFalse(check(object()))
24+
25+
def test_list_check_exact(self):
26+
check = _testcapi.list_check_exact
27+
self.assertTrue(check([1]))
28+
self.assertTrue(check([]))
29+
self.assertFalse(check(ListSubclass([1])))
30+
self.assertFalse(check(UserList([1, 2])))
31+
self.assertFalse(check({1: 2}))
32+
self.assertFalse(check(object()))
33+
34+
def test_list_new(self):
35+
list_new = _testcapi.list_new
36+
lst = list_new()
37+
self.assertEqual(lst, [])
38+
self.assertIs(type(lst), list)
39+
lst2 = list_new()
40+
self.assertIsNot(lst2, lst)

Modules/_testcapi/list.c

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,30 @@
22
#include "util.h"
33

44
static PyObject *
5-
list_check(PyObject* self, PyObject *obj)
5+
list_check(PyObject* Py_UNUSED(module), PyObject *obj)
66
{
77
NULLABLE(obj);
88
return PyLong_FromLong(PyList_Check(obj));
99
}
1010

11+
static PyObject *
12+
list_check_exact(PyObject* Py_UNUSED(module), PyObject *obj)
13+
{
14+
NULLABLE(obj);
15+
return PyLong_FromLong(PyList_CheckExact(obj));
16+
}
17+
18+
static PyObject *
19+
list_new(PyObject *self, PyObject *obj)
20+
{
21+
return PyList_New(obj);
22+
}
23+
24+
1125
static PyMethodDef test_methods[] = {
12-
{"list_check", list_check, METH_O}
26+
{"list_check", list_check, METH_O},
27+
{"list_check_exact", list_check_exact, METH_O},
28+
{"list_new", list_new, METH_NOARGS},
1329
};
1430

1531
int

0 commit comments

Comments
 (0)
0