scc

A fork of https://git.simple-cc.org/scc/ for Qute

git clone https://git.8pit.net/scc.git

 1#include <assert.h>
 2#include <errno.h>
 3#include <limits.h>
 4#include <stdio.h>
 5#include <stdlib.h>
 6
 7/*
 8output:
 9testing
10done
11end:
12*/
13
14
15int
16test(void)
17{
18	unsigned long long n;
19	char buf[64], *endp;
20
21	errno = 0;
22	n = strtoull("1024", NULL, 10);
23	assert(n == 1024 && errno == 0);
24
25	n = strtoull("1024", &endp, 10);
26	assert(n == 1024 && errno == 0 && *endp == '\0');
27
28	n = strtoull("1000", &endp, 10);
29	assert(n == 1000 && errno == 0 && *endp == '\0');
30
31	n = strtoull("1000", &endp, 8);
32	assert(n == 512 && errno == 0 && *endp == '\0');
33
34	n = strtoull("1000", &endp, 16);
35	assert(n == 4096 && errno == 0 && *endp == '\0');
36
37	n = strtoull("1000", &endp, 0);
38	assert(n == 1000 && errno == 0 && *endp == '\0');
39
40	n = strtoull("0x1000", &endp, 0);
41	assert(n == 4096 && errno == 0 && *endp == '\0');
42
43	n = strtoull("01000", &endp, 0);
44	assert(n == 512 && errno == 0 && *endp == '\0');
45
46	n = strtoull(" +1a", &endp, 0);
47	assert(n == 1 && errno == 0 && *endp == 'a');
48
49	n = strtoull(" -1a", &endp, 0);
50	assert(n == -1 && errno == 0 && *endp == 'a');
51
52	sprintf(buf, "%llu", ULLONG_MAX);
53	n = strtoull(buf, NULL, 10);
54	assert(n == ULLONG_MAX && errno == 0);
55
56	sprintf(buf, "%lld", LLONG_MIN);
57	n = strtoull(buf, NULL, 10);
58	assert(n == LLONG_MIN && errno == 0);
59
60	n = strtoull("9999999999999999999999999", NULL, 10);
61	assert(n == ULLONG_MAX && errno == ERANGE);
62
63	errno = 0;
64	n = strtoull("-999999999999999999999999", NULL, 10);
65	assert(n == ULLONG_MAX && errno == ERANGE);
66}
67
68int
69main(void)
70{
71	puts("testing");
72	test();
73	puts("done");
74
75	return 0;
76}