blob: 5b43a9b0c89c5d9ceeab3edba9cef9b75de17cfc [file] [log] [blame]
#include <stdlib.h>
#include <stdio.h>
const char *strings[]={
/* some simple stuff */
"0", "1", "10",
"100", "1000", "10000", "100000", "1000000",
"10000000", "100000000", "1000000000",
/* negative */
"-0", "-1", "-10",
"-100", "-1000", "-10000", "-100000", "-1000000",
"-10000000", "-100000000", "-1000000000",
/* test base>10 */
"a", "b", "f", "g", "z",
/* test hex */
"0x0", "0x1", "0xa", "0xf", "0x10",
/* test octal */
"00", "01", "07", "08", "0a", "010",
/* other */
"0x8000000",
/* check overflow cases: (for 32 bit) */
"2147483645",
"2147483646",
"2147483647",
"2147483648",
"2147483649",
"-2147483645",
"-2147483646",
"-2147483647",
"-2147483648",
"-2147483649",
"4294967293",
"4294967294",
"4294967295",
"4294967296",
"4294967297",
"-4294967293",
"-4294967294",
"-4294967295",
"-4294967296",
"-4294967297",
/* bad input tests */
"",
"00",
"0x",
"0x0",
"-",
"+",
" ",
" -",
" - 0",
};
int n_tests=sizeof(strings)/sizeof(strings[0]);
void do_test(int base);
void do_utest(int base);
int main(int argc,char *argv[])
{
do_test(0);
do_test(8);
do_test(10);
do_test(16);
do_test(36);
do_utest(0);
do_utest(8);
do_utest(10);
do_utest(16);
do_utest(36);
return 0;
}
void do_test(int base)
{
int i;
long n;
char *endptr;
for(i=0;i<n_tests;i++){
n=strtol(strings[i],&endptr,base);
printf("strtol(\"%s\",%d) len=%lu res=%ld\n",
strings[i],base,(unsigned long)(endptr-strings[i]),n);
}
}
void do_utest(int base)
{
int i;
unsigned long n;
char *endptr;
for(i=0;i<n_tests;i++){
n=strtoul(strings[i],&endptr,base);
printf("strtoul(\"%s\",%d) len=%lu res=%lu\n",
strings[i],base,(unsigned long)(endptr-strings[i]),n);
}
}