Skip to content

Commit 96adc39

Browse files
committed
Implement isdigit method
1 parent d80c705 commit 96adc39

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/cstring.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,17 @@ PyObject *cstring_isalpha(PyObject *self, PyObject *args) {
370370
Py_RETURN_TRUE;
371371
}
372372

373+
PyDoc_STRVAR(isdigit__doc__, "");
374+
PyObject *cstring_isdigit(PyObject *self, PyObject *args) {
375+
const char *p = CSTRING_VALUE(self);
376+
while(*p) {
377+
if(!isdigit(*p))
378+
Py_RETURN_FALSE;
379+
++p;
380+
}
381+
Py_RETURN_TRUE;
382+
}
383+
373384
PyDoc_STRVAR(rfind__doc__, "");
374385
PyObject *cstring_rfind(PyObject *self, PyObject *args) {
375386
struct _substr_params params;
@@ -452,7 +463,7 @@ static PyMethodDef cstring_methods[] = {
452463
{"isalpha", cstring_isalpha, METH_VARARGS, isalpha__doc__},
453464
/* TODO: isascii */
454465
/* TODO: isdecimal */
455-
/* TODO: isdigit */
466+
{"isdigit", cstring_isdigit, METH_VARARGS, isdigit__doc__},
456467
/* TODO: isidentifier */
457468
/* TODO: islower */
458469
/* TODO: isnumeric */

test/test_methods.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,16 @@ def test_isalpha_False():
6363
assert target.isalpha() == False
6464

6565

66+
def test_isdigit_True():
67+
target = cstring('123')
68+
assert target.isdigit() == True
69+
70+
71+
def test_isdigit_False():
72+
target = cstring('123.4')
73+
assert target.isdigit() == False
74+
75+
6676
def test_rfind():
6777
target = cstring('hello')
6878
assert target.rfind('o') == 4

0 commit comments

Comments
 (0)