Skip to content

Commit 3e4ed25

Browse files
committed
add more tests and remove debug code
1 parent 3270fb4 commit 3e4ed25

3 files changed

Lines changed: 22 additions & 74 deletions

File tree

py/objint.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,9 @@ static mp_obj_t int_make_new(mp_obj_t type_in, int n_args, const mp_obj_t *args)
1919
return MP_OBJ_NEW_SMALL_INT(0);
2020

2121
case 1:
22-
// TODO allow string as arg and parse it
2322
return MP_OBJ_NEW_SMALL_INT(mp_obj_get_int(args[0]));
2423

2524
case 2:
26-
// TODO make args[0] and args[1] correct
2725
return MP_OBJ_NEW_SMALL_INT(mp_obj_get_int_base(args[1], args[0]));
2826

2927
default:

py/strtonum.c

Lines changed: 1 addition & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22

33
#include <ctype.h>
44
#include <errno.h>
5-
#include <stdio.h>
65
#include <stdlib.h>
7-
#include <string.h>
86

97
#include "misc.h"
108
#include "mpconfig.h"
@@ -21,8 +19,7 @@ long strtonum(const char *restrict s, int base) {
2119

2220
// check radix base
2321
if ((base != 0 && base < 2) || base > 36) {
24-
printf("ValueError: int() arg 2 must be >=2 and <= 36\n");
25-
return 0;
22+
nlr_jump(mp_obj_new_exception_msg(MP_QSTR_ValueError, "ValueError: int() arg 2 must be >=2 and <= 36"));
2623
}
2724
// skip surrounded whitespace
2825
while (isspace((c = *(p++))));
@@ -87,75 +84,8 @@ long strtonum(const char *restrict s, int base) {
8784

8885
value_error:
8986
nlr_jump(mp_obj_new_exception_msg_2_args(MP_QSTR_ValueError, "invalid literal for int() with base %d: '%s'", (void*)(machine_uint_t)base, s));
90-
//printf("invalid literal for int() with base %d: '%s'\n", base, s);
91-
//return 0;
9287
}
9388

94-
/*
95-
int main(void) {
96-
printf(" 0 %ld\n", strtonum("0", 0));
97-
printf(" 1 %ld\n", strtonum("1", 0));
98-
printf(" 1 %ld\n", strtonum("+1", 0));
99-
printf(" -1 %ld\n", strtonum("-1", 0));
100-
printf(" 0 %ld\n", strtonum("+0", 0));
101-
printf(" 0 %ld\n", strtonum("-0", 0));
102-
printf(" 1 %ld\n", strtonum("01", 0));
103-
printf(" 9 %ld\n", strtonum("9", 0));
104-
printf(" 10 %ld\n", strtonum("10", 0));
105-
printf(" 10 %ld\n", strtonum("+10", 0));
106-
printf("-10 %ld\n", strtonum("-10", 0));
107-
printf(" 12 %ld\n", strtonum("12", 0));
108-
printf("-12 %ld\n", strtonum("-12", 0));
109-
printf(" 99 %ld\n", strtonum("99", 0));
110-
printf("100 %ld\n", strtonum("100", 0));
111-
printf("314 %ld\n", strtonum("314", 0));
112-
printf("314 %ld\n", strtonum(" 314", 0));
113-
printf("314 %ld\n", strtonum("314 ", 0));
114-
printf("314 %ld\n", strtonum(" \t\t 314 \t\t ", 0));
115-
printf(" 1 %ld\n", strtonum(" 1 ", 0));
116-
printf(" -3 %ld\n", strtonum(" -3 ", 0));
117-
printf(" 83 %ld\n", strtonum("0o123", 0));
118-
printf(" 18 %ld\n", strtonum("0x12", 0));
119-
printf(" 10 %ld\n", strtonum("0o12", 0));
120-
printf(" 10 %ld\n", strtonum("0o12", 0));
121-
printf(" 10 %ld\n", strtonum(" \t 0o12", 0));
122-
printf(" 10 %ld\n", strtonum("0o12 \t ", 0));
123-
printf(" 10 %ld\n", strtonum("0O12", 0));
124-
printf(" 5 %ld\n", strtonum("0b101", 0));
125-
printf(" 5 %ld\n", strtonum("0b101", 0));
126-
127-
printf(" 0 %ld\n", strtonum("0", 10));
128-
printf(" 1 %ld\n", strtonum("1", 10));
129-
printf(" 1 %ld\n", strtonum(" \t 1 \t ", 10));
130-
printf(" 11 %ld\n", strtonum("11", 10));
131-
printf(" 17 %ld\n", strtonum("11", 16));
132-
printf(" 9 %ld\n", strtonum("11", 8));
133-
printf(" 3 %ld\n", strtonum("11", 2));
134-
printf(" 37 %ld\n", strtonum("11", 36));
135-
printf("4294967296 %ld\n", strtonum("4294967296", 0));
136-
137-
printf("%ld\n", strtonum("x", 0));
138-
printf("%ld\n", strtonum("1x", 0));
139-
printf("%ld\n", strtonum(" 1x", 0));
140-
printf("%ld\n", strtonum(" 1\02 ", 0));
141-
printf("%ld\n", strtonum("", 0));
142-
printf("%ld\n", strtonum(" ", 0));
143-
printf("%ld\n", strtonum(" \t\t ", 0));
144-
printf("%ld\n", strtonum("0x", 0));
145-
printf("%ld\n", strtonum("0x", 16));
146-
printf("%ld\n", strtonum("0o", 0));
147-
printf("%ld\n", strtonum("0o", 8));
148-
printf("%ld\n", strtonum("0b", 0));
149-
printf("%ld\n", strtonum("0b", 2));
150-
printf("%ld\n", strtonum("0b2", 2));
151-
printf("%ld\n", strtonum("0o8", 8));
152-
printf("%ld\n", strtonum("0xg", 16));
153-
154-
printf("%ld\n", strtonum("1 1", 0));
155-
printf("%ld\n", strtonum("18446744073709551616", 0));
156-
}
157-
*/
158-
15989
#else /* defined(UNIX) */
16090

16191
long strtonum(const char *restrict s, int base) {

tests/basics/tests/int1.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@
99
print(int('1'))
1010
print(int('+1'))
1111
print(int('-1'))
12+
print(int('01'))
1213
print(int('9'))
1314
print(int('10'))
1415
print(int('+10'))
1516
print(int('-10'))
17+
print(int('12'))
18+
print(int('-12'))
1619
print(int('99'))
1720
print(int('100'))
1821
print(int('314'))
@@ -22,12 +25,26 @@
2225
print(int(' 1 '))
2326
print(int(' -3 '))
2427

25-
print(int('10', 16))
28+
print(int('0', 10))
29+
print(int('1', 10))
30+
print(int(' \t 1 \t ', 10))
31+
print(int('11', 10))
32+
print(int('11', 16))
33+
print(int('11', 8))
34+
print(int('11', 2))
35+
print(int('11', 36))
2636
print(int('0o123', 0))
37+
print(int('8388607'))
2738
print(int('0x123', 16))
2839
print(int('0X123', 16))
40+
print(int('0o123', 8))
2941
print(int('0O123', 8))
42+
print(int('0123', 8))
43+
print(int('0b100', 2))
3044
print(int('0B100', 2))
45+
print(int('0100', 2))
46+
print(int(' \t 0o12', 8))
47+
print(int('0o12 \t ', 8))
3148

3249

3350
def test(value, base):
@@ -37,6 +54,8 @@ def test(value, base):
3754
print('ValueError')
3855

3956

57+
test('x', 0)
58+
test('1x', 0)
4059
test(' 1x', 0)
4160
test(' 1' + chr(2) + ' ', 0)
4261
test('', 0)
@@ -52,3 +71,4 @@ def test(value, base):
5271
test('0b2', 2)
5372
test('0o8', 8)
5473
test('0xg', 16)
74+
test('1 1', 16)

0 commit comments

Comments
 (0)