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 <ctype.h>
  3#include <stdio.h>
  4#include <limits.h>
  5
  6/*
  7 * This test assumes an ascii representation
  8 */
  9
 10#define TESTW(f) fputs(#f ":" , stdout); \
 11	for (i = 0; i <= UCHAR_MAX; i++)  \
 12		if (f(i)) printf(" %d", i); \
 13	putchar('\n')
 14
 15#define TESTC(f) fputs(#f ": " , stdout); \
 16	for (i = 0; i <= UCHAR_MAX; i++)  \
 17		if (f(i)) putchar(i); \
 18	putchar('\n')
 19
 20#define TESTEOF(f) fputs(#f ": " , stdout); \
 21	if (!f(EOF)) putchar('!'); puts("EOF");
 22
 23#define TESTLU(f) \
 24	for (i = 0; i < UCHAR_MAX; i++) { \
 25		n = f(i); \
 26		if (!isgraph(i)) \
 27			continue; \
 28		printf("%s: %c <-> %c\n", #f, i, n); \
 29	}
 30
 31void
 32test1()
 33{
 34	int i;
 35
 36	puts("\ntest1");
 37	TESTC(isalnum);
 38	TESTC(isalpha);
 39	TESTC(isdigit);
 40	TESTC(isgraph);
 41	TESTC(islower);
 42	TESTC(isupper);
 43	TESTC(isprint);
 44	TESTC(ispunct);
 45	TESTC(isxdigit);
 46	TESTC(isdigit);
 47	TESTW(iscntrl);
 48	TESTW(isspace);
 49	TESTEOF(isalpha);
 50	TESTEOF(isdigit);
 51	TESTEOF(isgraph);
 52	TESTEOF(islower);
 53	TESTEOF(isupper);
 54	TESTEOF(isprint);
 55	TESTEOF(ispunct);
 56	TESTEOF(isxdigit);
 57	TESTEOF(isdigit);
 58	TESTEOF(iscntrl);
 59	TESTEOF(isspace);
 60}
 61
 62#undef isalnum
 63#undef isalpha
 64#undef isdigit
 65#undef isgraph
 66#undef islower
 67#undef isupper
 68#undef isprint
 69#undef ispunct
 70#undef isxdigit
 71#undef isdigit
 72
 73void
 74test2()
 75{
 76	int i;
 77
 78	puts("\ntest2");
 79	TESTC(isalnum);
 80	TESTC(isalpha);
 81	TESTC(isdigit);
 82	TESTC(isgraph);
 83	TESTC(islower);
 84	TESTC(isupper);
 85	TESTC(isprint);
 86	TESTC(ispunct);
 87	TESTC(isxdigit);
 88	TESTC(isdigit);
 89	TESTW(iscntrl);
 90	TESTW(isspace);
 91	TESTEOF(isalpha);
 92	TESTEOF(isdigit);
 93	TESTEOF(isgraph);
 94	TESTEOF(islower);
 95	TESTEOF(isupper);
 96	TESTEOF(isprint);
 97	TESTEOF(ispunct);
 98	TESTEOF(isxdigit);
 99	TESTEOF(isdigit);
100	TESTEOF(iscntrl);
101	TESTEOF(isspace);
102}
103
104void test3()
105{
106	int i, n;
107
108	puts("\ntest3");
109	TESTLU(tolower);
110	TESTLU(toupper);
111}	
112
113#undef tolower
114#undef toupper
115
116void test4()
117{
118	int i, n;
119
120	puts("\ntest4");
121	TESTLU(tolower);
122	TESTLU(toupper);
123	assert(tolower(EOF) == EOF);
124	assert(toupper(EOF) == EOF);
125}
126
127int
128main()
129{
130	test1();
131	test2();
132	test3();
133	test4();
134
135	return 0;
136}
137
138/*
139output:
140
141test1
142isalnum: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
143isalpha: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
144isdigit: 0123456789
145isgraph: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
146islower: abcdefghijklmnopqrstuvwxyz
147isupper: ABCDEFGHIJKLMNOPQRSTUVWXYZ
148isprint:  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
149ispunct: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
150isxdigit: 0123456789ABCDEFabcdef
151isdigit: 0123456789
152iscntrl: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 127
153isspace: 9 10 11 12 13 32
154isalpha: !EOF
155isdigit: !EOF
156isgraph: !EOF
157islower: !EOF
158isupper: !EOF
159isprint: !EOF
160ispunct: !EOF
161isxdigit: !EOF
162isdigit: !EOF
163iscntrl: !EOF
164isspace: !EOF
165
166test2
167isalnum: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
168isalpha: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
169isdigit: 0123456789
170isgraph: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
171islower: abcdefghijklmnopqrstuvwxyz
172isupper: ABCDEFGHIJKLMNOPQRSTUVWXYZ
173isprint:  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
174ispunct: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
175isxdigit: 0123456789ABCDEFabcdef
176isdigit: 0123456789
177iscntrl: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 127
178isspace: 9 10 11 12 13 32
179isalpha: !EOF
180isdigit: !EOF
181isgraph: !EOF
182islower: !EOF
183isupper: !EOF
184isprint: !EOF
185ispunct: !EOF
186isxdigit: !EOF
187isdigit: !EOF
188iscntrl: !EOF
189isspace: !EOF
190
191test3
192tolower: ! <-> !
193tolower: " <-> "
194tolower: # <-> #
195tolower: $ <-> $
196tolower: % <-> %
197tolower: & <-> &
198tolower: ' <-> '
199tolower: ( <-> (
200tolower: ) <-> )
201tolower: * <-> *
202tolower: + <-> +
203tolower: , <-> ,
204tolower: - <-> -
205tolower: . <-> .
206tolower: / <-> /
207tolower: 0 <-> 0
208tolower: 1 <-> 1
209tolower: 2 <-> 2
210tolower: 3 <-> 3
211tolower: 4 <-> 4
212tolower: 5 <-> 5
213tolower: 6 <-> 6
214tolower: 7 <-> 7
215tolower: 8 <-> 8
216tolower: 9 <-> 9
217tolower: : <-> :
218tolower: ; <-> ;
219tolower: < <-> <
220tolower: = <-> =
221tolower: > <-> >
222tolower: ? <-> ?
223tolower: @ <-> @
224tolower: A <-> a
225tolower: B <-> b
226tolower: C <-> c
227tolower: D <-> d
228tolower: E <-> e
229tolower: F <-> f
230tolower: G <-> g
231tolower: H <-> h
232tolower: I <-> i
233tolower: J <-> j
234tolower: K <-> k
235tolower: L <-> l
236tolower: M <-> m
237tolower: N <-> n
238tolower: O <-> o
239tolower: P <-> p
240tolower: Q <-> q
241tolower: R <-> r
242tolower: S <-> s
243tolower: T <-> t
244tolower: U <-> u
245tolower: V <-> v
246tolower: W <-> w
247tolower: X <-> x
248tolower: Y <-> y
249tolower: Z <-> z
250tolower: [ <-> [
251tolower: \ <-> \
252tolower: ] <-> ]
253tolower: ^ <-> ^
254tolower: _ <-> _
255tolower: ` <-> `
256tolower: a <-> a
257tolower: b <-> b
258tolower: c <-> c
259tolower: d <-> d
260tolower: e <-> e
261tolower: f <-> f
262tolower: g <-> g
263tolower: h <-> h
264tolower: i <-> i
265tolower: j <-> j
266tolower: k <-> k
267tolower: l <-> l
268tolower: m <-> m
269tolower: n <-> n
270tolower: o <-> o
271tolower: p <-> p
272tolower: q <-> q
273tolower: r <-> r
274tolower: s <-> s
275tolower: t <-> t
276tolower: u <-> u
277tolower: v <-> v
278tolower: w <-> w
279tolower: x <-> x
280tolower: y <-> y
281tolower: z <-> z
282tolower: { <-> {
283tolower: | <-> |
284tolower: } <-> }
285tolower: ~ <-> ~
286toupper: ! <-> !
287toupper: " <-> "
288toupper: # <-> #
289toupper: $ <-> $
290toupper: % <-> %
291toupper: & <-> &
292toupper: ' <-> '
293toupper: ( <-> (
294toupper: ) <-> )
295toupper: * <-> *
296toupper: + <-> +
297toupper: , <-> ,
298toupper: - <-> -
299toupper: . <-> .
300toupper: / <-> /
301toupper: 0 <-> 0
302toupper: 1 <-> 1
303toupper: 2 <-> 2
304toupper: 3 <-> 3
305toupper: 4 <-> 4
306toupper: 5 <-> 5
307toupper: 6 <-> 6
308toupper: 7 <-> 7
309toupper: 8 <-> 8
310toupper: 9 <-> 9
311toupper: : <-> :
312toupper: ; <-> ;
313toupper: < <-> <
314toupper: = <-> =
315toupper: > <-> >
316toupper: ? <-> ?
317toupper: @ <-> @
318toupper: A <-> A
319toupper: B <-> B
320toupper: C <-> C
321toupper: D <-> D
322toupper: E <-> E
323toupper: F <-> F
324toupper: G <-> G
325toupper: H <-> H
326toupper: I <-> I
327toupper: J <-> J
328toupper: K <-> K
329toupper: L <-> L
330toupper: M <-> M
331toupper: N <-> N
332toupper: O <-> O
333toupper: P <-> P
334toupper: Q <-> Q
335toupper: R <-> R
336toupper: S <-> S
337toupper: T <-> T
338toupper: U <-> U
339toupper: V <-> V
340toupper: W <-> W
341toupper: X <-> X
342toupper: Y <-> Y
343toupper: Z <-> Z
344toupper: [ <-> [
345toupper: \ <-> \
346toupper: ] <-> ]
347toupper: ^ <-> ^
348toupper: _ <-> _
349toupper: ` <-> `
350toupper: a <-> A
351toupper: b <-> B
352toupper: c <-> C
353toupper: d <-> D
354toupper: e <-> E
355toupper: f <-> F
356toupper: g <-> G
357toupper: h <-> H
358toupper: i <-> I
359toupper: j <-> J
360toupper: k <-> K
361toupper: l <-> L
362toupper: m <-> M
363toupper: n <-> N
364toupper: o <-> O
365toupper: p <-> P
366toupper: q <-> Q
367toupper: r <-> R
368toupper: s <-> S
369toupper: t <-> T
370toupper: u <-> U
371toupper: v <-> V
372toupper: w <-> W
373toupper: x <-> X
374toupper: y <-> Y
375toupper: z <-> Z
376toupper: { <-> {
377toupper: | <-> |
378toupper: } <-> }
379toupper: ~ <-> ~
380
381test4
382tolower: ! <-> !
383tolower: " <-> "
384tolower: # <-> #
385tolower: $ <-> $
386tolower: % <-> %
387tolower: & <-> &
388tolower: ' <-> '
389tolower: ( <-> (
390tolower: ) <-> )
391tolower: * <-> *
392tolower: + <-> +
393tolower: , <-> ,
394tolower: - <-> -
395tolower: . <-> .
396tolower: / <-> /
397tolower: 0 <-> 0
398tolower: 1 <-> 1
399tolower: 2 <-> 2
400tolower: 3 <-> 3
401tolower: 4 <-> 4
402tolower: 5 <-> 5
403tolower: 6 <-> 6
404tolower: 7 <-> 7
405tolower: 8 <-> 8
406tolower: 9 <-> 9
407tolower: : <-> :
408tolower: ; <-> ;
409tolower: < <-> <
410tolower: = <-> =
411tolower: > <-> >
412tolower: ? <-> ?
413tolower: @ <-> @
414tolower: A <-> a
415tolower: B <-> b
416tolower: C <-> c
417tolower: D <-> d
418tolower: E <-> e
419tolower: F <-> f
420tolower: G <-> g
421tolower: H <-> h
422tolower: I <-> i
423tolower: J <-> j
424tolower: K <-> k
425tolower: L <-> l
426tolower: M <-> m
427tolower: N <-> n
428tolower: O <-> o
429tolower: P <-> p
430tolower: Q <-> q
431tolower: R <-> r
432tolower: S <-> s
433tolower: T <-> t
434tolower: U <-> u
435tolower: V <-> v
436tolower: W <-> w
437tolower: X <-> x
438tolower: Y <-> y
439tolower: Z <-> z
440tolower: [ <-> [
441tolower: \ <-> \
442tolower: ] <-> ]
443tolower: ^ <-> ^
444tolower: _ <-> _
445tolower: ` <-> `
446tolower: a <-> a
447tolower: b <-> b
448tolower: c <-> c
449tolower: d <-> d
450tolower: e <-> e
451tolower: f <-> f
452tolower: g <-> g
453tolower: h <-> h
454tolower: i <-> i
455tolower: j <-> j
456tolower: k <-> k
457tolower: l <-> l
458tolower: m <-> m
459tolower: n <-> n
460tolower: o <-> o
461tolower: p <-> p
462tolower: q <-> q
463tolower: r <-> r
464tolower: s <-> s
465tolower: t <-> t
466tolower: u <-> u
467tolower: v <-> v
468tolower: w <-> w
469tolower: x <-> x
470tolower: y <-> y
471tolower: z <-> z
472tolower: { <-> {
473tolower: | <-> |
474tolower: } <-> }
475tolower: ~ <-> ~
476toupper: ! <-> !
477toupper: " <-> "
478toupper: # <-> #
479toupper: $ <-> $
480toupper: % <-> %
481toupper: & <-> &
482toupper: ' <-> '
483toupper: ( <-> (
484toupper: ) <-> )
485toupper: * <-> *
486toupper: + <-> +
487toupper: , <-> ,
488toupper: - <-> -
489toupper: . <-> .
490toupper: / <-> /
491toupper: 0 <-> 0
492toupper: 1 <-> 1
493toupper: 2 <-> 2
494toupper: 3 <-> 3
495toupper: 4 <-> 4
496toupper: 5 <-> 5
497toupper: 6 <-> 6
498toupper: 7 <-> 7
499toupper: 8 <-> 8
500toupper: 9 <-> 9
501toupper: : <-> :
502toupper: ; <-> ;
503toupper: < <-> <
504toupper: = <-> =
505toupper: > <-> >
506toupper: ? <-> ?
507toupper: @ <-> @
508toupper: A <-> A
509toupper: B <-> B
510toupper: C <-> C
511toupper: D <-> D
512toupper: E <-> E
513toupper: F <-> F
514toupper: G <-> G
515toupper: H <-> H
516toupper: I <-> I
517toupper: J <-> J
518toupper: K <-> K
519toupper: L <-> L
520toupper: M <-> M
521toupper: N <-> N
522toupper: O <-> O
523toupper: P <-> P
524toupper: Q <-> Q
525toupper: R <-> R
526toupper: S <-> S
527toupper: T <-> T
528toupper: U <-> U
529toupper: V <-> V
530toupper: W <-> W
531toupper: X <-> X
532toupper: Y <-> Y
533toupper: Z <-> Z
534toupper: [ <-> [
535toupper: \ <-> \
536toupper: ] <-> ]
537toupper: ^ <-> ^
538toupper: _ <-> _
539toupper: ` <-> `
540toupper: a <-> A
541toupper: b <-> B
542toupper: c <-> C
543toupper: d <-> D
544toupper: e <-> E
545toupper: f <-> F
546toupper: g <-> G
547toupper: h <-> H
548toupper: i <-> I
549toupper: j <-> J
550toupper: k <-> K
551toupper: l <-> L
552toupper: m <-> M
553toupper: n <-> N
554toupper: o <-> O
555toupper: p <-> P
556toupper: q <-> Q
557toupper: r <-> R
558toupper: s <-> S
559toupper: t <-> T
560toupper: u <-> U
561toupper: v <-> V
562toupper: w <-> W
563toupper: x <-> X
564toupper: y <-> Y
565toupper: z <-> Z
566toupper: { <-> {
567toupper: | <-> |
568toupper: } <-> }
569toupper: ~ <-> ~
570end:
571*/