Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add check test
Signed-off-by: kalyanr <kalyan.ben10@live.com>
  • Loading branch information
rawwar committed Nov 1, 2023
commit ebb84ac838f38aa8507a98f8c7499ed553d11800
35 changes: 35 additions & 0 deletions Lib/test/test_capi/test_tuple.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import unittest
import sys
from test.support import import_helper
_testcapi = import_helper.import_module('_testcapi')

NULL = None
PY_SSIZE_T_MIN = _testcapi.PY_SSIZE_T_MIN
PY_SSIZE_T_MAX = _testcapi.PY_SSIZE_T_MAX


class CAPITest(unittest.TestCase):
def test_check(self):
# Test PyList_Check()
check = _testcapi.tuple_check
self.assertTrue(check((1, 2)))
self.assertTrue(check(()))
self.assertFalse(check({1: 2}))
self.assertFalse(check([1, 2]))
self.assertFalse(check(42))
self.assertFalse(check(object()))

# CRASHES check(NULL)


# def test_list_check_exact(self):
# # Test PyList_CheckExact()
# check = _testcapi.tuple_checkexact
# self.assertTrue(check([1]))
# self.assertTrue(check([]))
# self.assertFalse(check(ListSubclass([1])))
# self.assertFalse(check(UserList([1, 2])))
# self.assertFalse(check({1: 2}))
# self.assertFalse(check(object()))

# CRASHES check(NULL)
16 changes: 16 additions & 0 deletions Modules/_testcapi/tuple.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,23 @@
#include "util.h"


static PyObject *
tuple_check(PyObject* Py_UNUSED(module), PyObject *obj)
{
NULLABLE(obj);
return PyLong_FromLong(PyTuple_Check(obj));
}

static PyObject *
tuple_checkexact(PyObject* Py_UNUSED(module), PyObject *obj)
{
NULLABLE(obj);
return PyLong_FromLong(PyTuple_CheckExact(obj));
}

static PyMethodDef test_methods[] = {
{"tuple_check", tuple_check, METH_O},
{"tuple_check_exact", tuple_checkexact, METH_O},
{NULL},
};

Expand Down