You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
895 B
C
32 lines
895 B
C
#include "scan.h"
|
|
#include "fmt.h"
|
|
#include "buffer.h"
|
|
#include <assert.h>
|
|
|
|
int main() {
|
|
char buf[1024];
|
|
unsigned long long int i;
|
|
unsigned long l;
|
|
if (sizeof(unsigned long)==4) {
|
|
assert(scan_ulong("4294967295",&l) == 10 && l==4294967295ul);
|
|
assert(scan_ulong("4294967296",&l) == 9 && l==429496729);
|
|
} else {
|
|
assert(scan_ulong("18446744073709551615",&l) == 20 && l==18446744073709551615ull);
|
|
assert(scan_ulong("18446744073709551616",&l) == 19 && l==1844674407370955161ull);
|
|
}
|
|
if (sizeof(unsigned long) != 4)
|
|
return 0;
|
|
for (i=1; i<0xfffffffffull; i+=i+1) {
|
|
int k;
|
|
unsigned long test;
|
|
buf[k=fmt_ulonglong(buf,i)]=0;
|
|
buffer_puts(buffer_1,buf); buffer_putnlflush(buffer_1);
|
|
if (buf[scan_ulong(buf,&test)])
|
|
/* scan did not like the whole number */
|
|
assert(i>0xffffffffull);
|
|
else
|
|
assert(i<=0xffffffffull);
|
|
}
|
|
return 0;
|
|
}
|