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	long n;
19	char buf[64], *endp;
20
21	errno = 0;
22	n = strtol("1024", NULL, 10);
23	assert(n == 1024 && errno == 0);
24
25	n = strtol("1024", &endp, 10);
26	assert(n == 1024 && errno == 0 && *endp == '\0');
27
28	n = strtol("1000", &endp, 10);
29	assert(n == 1000 && errno == 0 && *endp == '\0');
30
31	n = strtol("1000", &endp, 8);
32	assert(n == 512 && errno == 0 && *endp == '\0');
33
34	n = strtol("1000", &endp, 16);
35	assert(n == 4096 && errno == 0 && *endp == '\0');
36
37	n = strtol("1000", &endp, 0);
38	assert(n == 1000 && errno == 0 && *endp == '\0');
39
40	n = strtol("0x1000", &endp, 0);
41	assert(n == 4096 && errno == 0 && *endp == '\0');
42
43	n = strtol("01000", &endp, 0);
44	assert(n == 512 && errno == 0 && *endp == '\0');
45
46	n = strtol(" +1a", &endp, 0);
47	assert(n == 1 && errno == 0 && *endp == 'a');
48
49	n = strtol(" -1a", &endp, 0);
50	assert(n == -1 && errno == 0 && *endp == 'a');
51
52	sprintf(buf, "%ld", LONG_MAX);
53	n = strtol(buf, NULL, 10);
54	assert(n == LONG_MAX && errno == 0);
55
56	sprintf(buf, "%ld", LONG_MIN);
57	n = strtol(buf, NULL, 10);
58	assert(n == LONG_MIN && errno == 0);
59
60	n = strtol("9999999999999999999999999", NULL, 10);
61	assert(n == LONG_MAX && errno == ERANGE);
62
63	errno = 0;
64	n = strtol("-999999999999999999999999", NULL, 10);
65	assert(n == LONG_MIN && errno == ERANGE);
66}
67
68int
69main(void)
70{
71	puts("testing");
72	test();
73	puts("done");
74
75	return 0;
76}