diff options
Diffstat (limited to 'private/crt32/convert/testconv.c')
-rw-r--r-- | private/crt32/convert/testconv.c | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/private/crt32/convert/testconv.c b/private/crt32/convert/testconv.c new file mode 100644 index 000000000..6749cce26 --- /dev/null +++ b/private/crt32/convert/testconv.c @@ -0,0 +1,152 @@ +/* incomplete test suite for convert functions + + Current functions tested: + all isxxxxx functions + toupper + tolower + atoi + atol + strtol + strtoul + swab + itoa + ltoa + ultoa +*/ + +#include <stdlib.h> +#include <stdio.h> +#include <limits.h> +#include <errno.h> + +fail(int n) +{ + printf("Test #%d failed.\n", n); +} + +main() +{ + char s[512]; + char t[512]; + char *p; + + /* test isxxxx functions */ + if (!iscntrl(0x7)) fail(1); + if (iscntrl('c')) fail(2); + if (!isdigit('0')) fail(3); + if (isdigit('A')) fail(4); + if (!isgraph(';')) fail(5); + if (isgraph(' ')) fail(6); + if (!islower('f')) fail(7); + if (islower('F')) fail(8); + if (!isprint('S')) fail(9); + if (isprint('\v')) fail(10); + if (!ispunct('.')) fail(11); + if (ispunct('A')) fail(12); + if (!isspace('\v')) fail(13); + if (isspace('D')) fail(14); + if (!isupper('D')) fail(15); + if (isupper('z')) fail(16); + if (!isxdigit('D')) fail(17); + if (isxdigit('G')) fail(18); + if (!isalnum('7')) fail(19); + if (isalnum(';')) fail(20); + if (!isalpha('j')) fail(21); + if (isalpha('$')) fail(22); + if (!isascii(0x3)) fail(23); + if (isascii(234)) fail(24); + if (!iscsym('d')) fail(25); + if (iscsym('$')) fail(26); + if (!iscsymf('A')) fail(27); + if (iscsymf('5')) fail(28); + + + /* test toupper and tolower */ + if (tolower('C') != 'c') fail(29); + if (tolower('d') != 'd') fail(30); + if (tolower('$') != '$') fail(31); + if (toupper('q') != 'Q') fail(32); + if (toupper('A') != 'A') fail(33); + if (toupper(';') != ';') fail(34); + + + /* test atol/atoi */ + if (atol("-123") != -123) fail(35); + if (atoi("32767") != 32767) fail(36); + if (atoi("-32767") != -32767) fail(36); + if (atol("0") != 0) fail(37); + if (atol("2147483647") != 2147483647) fail(38); + if (atol("-2147483647") != -2147483647) fail(39); + if (atol("123456") != 123456) fail(40); + if (atol("-123456") != -123456) fail(41); + + /* test strtol */ + if (strtol("-123", NULL, 10) != -123) fail(42); + if (strtol(" 2147483646", NULL, 10) != 2147483646) fail(43); + if (strtol("-2147483646$$", NULL, 10) != -2147483646) fail(44); + if (strtol(" 2147483648x", NULL, 10) != LONG_MAX) fail(45); + if (strtol(" -2147483648", NULL, 10) != LONG_MIN) fail(46); + if (strtol("0", NULL, 10) != 0) fail(47); + if (strtol("981235b", NULL, 10) != 981235) fail(48); + if (strtol(" -1234567a", NULL, 10) != -1234567) fail(49); + if (strtol("FFDE", NULL, 16) != 0xFFDE) fail(50); + if (strtol("7FFFFFFE", NULL, 16) != 0x7FFFFFFE) fail(51); + if (strtol("-0x45", NULL, 16) != -0x45) fail(52); + if (strtol("23478", NULL, 8) != 02347) fail(53); + if (strtol(" -0x123D", NULL, 0) != -0x123d) fail(54); + if (strtol(" 01238", NULL, 0) != 0123) fail(55); + if (strtol(" -678899", NULL, 0) != -678899) fail(56); + + errno = 0; + strtol("2147483647", NULL, 10); + if (errno != 0) fail(57); + errno = 0; + strtol("2147483648", NULL, 10); + if (errno != ERANGE) fail(58); + errno = 0; + strtol("63234283743", NULL, 10); + if (errno != ERANGE) fail(59); + strcpy(s, " 8983"); + strtol(s, &p, 8); + if (s != p) fail(60); + strcpy(s, "12345678901234567890XX"); + strtol(s, &p, 0); + if (p != s+20) fail(61); + strcpy(s, " 111"); + strtol(s, &p, 1); + if (p != s) fail(62); + + errno = 0; + if (strtoul("4294967295", NULL, 10) != ULONG_MAX) fail(63); + if (errno != 0) fail(64); + errno = 0; + strtoul("4294967296", NULL, 10); + if (errno != ERANGE) fail(65); + errno = 0; + strtoul("63234283743", NULL, 10); + if (errno != ERANGE) fail(66); + + /* test swab */ + strcpy(s, "abcdefghijklmn"); + swab(s, t, 14); + if (strcmp(t, "badcfehgjilknm") != 0) fail(67); + strcpy(t, s); + swab(s, t, 7); + if (strcmp(t, "badcfeghijklmn") != 0) fail(68); + strcpy(t, s); + swab(s, t, -5); + if (strcmp(s, t) != 0) fail(69); + + /* test itoa/ltoa/ultoa */ + if (strcmp(itoa(345, s, 10), "345") != 0) fail(70); + if (strcmp(itoa(-345, s, 10), "-345") != 0) fail(71); + if (strcmp(itoa(33, s, 36), "x") != 0) fail(72); + if (strcmp(itoa(65535U, s, 16), "ffff") != 0) fail(73); + if (strcmp(ltoa(123457, s, 10), "123457") != 0) fail(74); + if (strcmp(ltoa(-123457, s, 10), "-123457") != 0) fail(75); + if (strcmp(ltoa(076512L, s, 8), "76512") != 0) fail(76); + if (strcmp(ltoa(-1L, s, 10), "-1") != 0) fail(77); + if (strcmp(ltoa(-1L, s, 16), "ffffffff") != 0) fail(78); + if (strcmp(ultoa(-1L, s, 10), "4294967295") != 0) fail(79); + +} |