You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
4.6 KiB
152 lines
4.6 KiB
/* 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);
|
|
|
|
}
|