Skip to content

Commit fb17e34

Browse files
committed
Add tests for newly added C functions
1 parent 97d8eb8 commit fb17e34

File tree

3 files changed

+72
-0
lines changed

3 files changed

+72
-0
lines changed

graalpython/com.oracle.graal.python.test/src/tests/cpyext/test_list.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,11 @@ def _reference_setitem(args):
6868
return listObj
6969

7070

71+
def _reference_reverse(args):
72+
args[0].reverse()
73+
return args[0]
74+
75+
7176
def _reference_SET_ITEM(args):
7277
listObj = args[0]
7378
pos = args[1]
@@ -323,3 +328,25 @@ def compile_module(self, name):
323328
arguments=["PyObject* o"],
324329
cmpfunc=unhandled_error_compare
325330
)
331+
332+
test_PyList_Reverse = CPyExtFunction(
333+
_reference_reverse,
334+
lambda: (
335+
([],),
336+
([1, 2, 3],),
337+
([1, "a", 0.1],),
338+
),
339+
code='''PyObject* wrap_PyList_Reverse(PyObject* list) {
340+
if (PyList_Reverse(list)) {
341+
return NULL;
342+
}
343+
Py_INCREF(list);
344+
return list;
345+
}
346+
''',
347+
resultspec="O",
348+
argspec='O',
349+
arguments=["PyObject* list"],
350+
callfunction="wrap_PyList_Reverse",
351+
cmpfunc=unhandled_error_compare
352+
)

graalpython/com.oracle.graal.python.test/src/tests/cpyext/test_set.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,12 @@ def _reference_contains(args):
5757
except TypeError:
5858
return raise_Py6_SystemError()
5959

60+
61+
def _reference_clear(args):
62+
args[0].clear()
63+
return args[0]
64+
65+
6066
class FrozenSetSubclass(frozenset):
6167
pass
6268

@@ -202,3 +208,24 @@ def compile_module(self, name):
202208
cmpfunc=unhandled_error_compare
203209
)
204210

211+
test_PySet_Clear = CPyExtFunction(
212+
_reference_clear,
213+
lambda: (
214+
({1, 2, 3},),
215+
({1, "a", 0.1},),
216+
),
217+
code='''PyObject* wrap_PySet_Clear(PyObject* set) {
218+
if (PySet_Clear(set)) {
219+
return NULL;
220+
}
221+
Py_INCREF(set);
222+
return set;
223+
}
224+
''',
225+
resultspec="O",
226+
argspec='O',
227+
arguments=["PyObject* set"],
228+
callfunction="wrap_PySet_Clear",
229+
cmpfunc=unhandled_error_compare
230+
)
231+

graalpython/com.oracle.graal.python.test/src/tests/cpyext/test_unicode.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,12 @@ def _reference_readchar(args):
9393
return ord(s[i])
9494

9595

96+
def _reference_contains(args):
97+
if not isinstance(args[0], str) or not isinstance(args[1], str):
98+
raise TypeError
99+
return args[1] in args[0]
100+
101+
96102
class CustomString(str):
97103
pass
98104

@@ -635,4 +641,16 @@ def compile_module(self, name):
635641
cmpfunc=unhandled_error_compare
636642
)
637643

644+
test_PyUnicode_Contains = CPyExtFunction(
645+
_reference_contains,
646+
lambda: (
647+
("aaa", "bbb"),
648+
("aaa", "a"),
649+
),
650+
resultspec="i",
651+
argspec='OO',
652+
arguments=["PyObject* haystack", "PyObject* needle"],
653+
cmpfunc=unhandled_error_compare
654+
)
655+
638656

0 commit comments

Comments
 (0)