1 #include "parts.h"
2
3
4 static PyObject *
test_PyOS_mystrnicmp(PyObject * self,PyObject * Py_UNUSED (ignored))5 test_PyOS_mystrnicmp(PyObject *self, PyObject *Py_UNUSED(ignored))
6 {
7 assert(PyOS_mystrnicmp("", "", 0) == 0);
8 assert(PyOS_mystrnicmp("", "", 1) == 0);
9
10 assert(PyOS_mystrnicmp("insert", "ins", 3) == 0);
11 assert(PyOS_mystrnicmp("ins", "insert", 3) == 0);
12 assert(PyOS_mystrnicmp("insect", "insert", 3) == 0);
13
14 assert(PyOS_mystrnicmp("insert", "insert", 6) == 0);
15 assert(PyOS_mystrnicmp("Insert", "insert", 6) == 0);
16 assert(PyOS_mystrnicmp("INSERT", "insert", 6) == 0);
17 assert(PyOS_mystrnicmp("insert", "insert", 10) == 0);
18
19 assert(PyOS_mystrnicmp("invert", "insert", 6) == ('v' - 's'));
20 assert(PyOS_mystrnicmp("insert", "invert", 6) == ('s' - 'v'));
21 assert(PyOS_mystrnicmp("insert", "ins\0rt", 6) == 'e');
22
23 // GH-21845
24 assert(PyOS_mystrnicmp("insert\0a", "insert\0b", 8) == 0);
25
26 Py_RETURN_NONE;
27 }
28
29 static PyObject *
test_PyOS_mystricmp(PyObject * self,PyObject * Py_UNUSED (ignored))30 test_PyOS_mystricmp(PyObject *self, PyObject *Py_UNUSED(ignored))
31 {
32 assert(PyOS_mystricmp("", "") == 0);
33 assert(PyOS_mystricmp("insert", "insert") == 0);
34 assert(PyOS_mystricmp("Insert", "insert") == 0);
35 assert(PyOS_mystricmp("INSERT", "insert") == 0);
36 assert(PyOS_mystricmp("insert", "ins") == 'e');
37 assert(PyOS_mystricmp("ins", "insert") == -'e');
38
39 // GH-21845
40 assert(PyOS_mystricmp("insert", "ins\0rt") == 'e');
41 assert(PyOS_mystricmp("invert", "insert") == ('v' - 's'));
42
43 Py_RETURN_NONE;
44 }
45
46 static PyMethodDef test_methods[] = {
47 {"test_PyOS_mystrnicmp", test_PyOS_mystrnicmp, METH_NOARGS, NULL},
48 {"test_PyOS_mystricmp", test_PyOS_mystricmp, METH_NOARGS, NULL},
49 {NULL},
50 };
51
52 int
_PyTestLimitedCAPI_Init_PyOS(PyObject * mod)53 _PyTestLimitedCAPI_Init_PyOS(PyObject *mod)
54 {
55 if (PyModule_AddFunctions(mod, test_methods) < 0) {
56 return -1;
57 }
58
59 return 0;
60 }
61