]> git.sur5r.net Git - cc65/blob - test/val/for.c
All regression-tests subdirectories are cleaned before the first test starts, so...
[cc65] / test / val / for.c
1 /*
2   !!DESCRIPTION!!
3   !!ORIGIN!!      SDCC regression tests
4   !!LICENCE!!     GPL, read COPYING.GPL
5 */
6
7 #include <stdio.h>
8 #include <limits.h>
9
10 unsigned char success=0;
11 unsigned char failures=0;
12 unsigned char dummy=0;
13
14 #ifdef SUPPORT_BIT_TYPES
15 bit bit0 = 0;
16 #endif
17 unsigned int uint0 = 0;
18 unsigned int uint1 = 0;
19 unsigned char uchar0 = 0;
20 unsigned char uchar1 = 0;
21
22 void done()
23 {
24   dummy++;
25 }
26
27 void for1(void)
28 {
29   unsigned char i=0;
30
31   for(i=0; i<10; i++)
32     uchar0++;
33
34   if(uchar0 != 10)
35     failures++;
36 }
37
38 void for2(void)
39 {
40   unsigned char i=0;
41
42   for(i=0; i<10; i++)
43     uchar0++;
44
45   if(i < 10)
46     failures++;
47 }
48
49 void for3(void)
50 {
51   unsigned int i=0;
52
53   for(i=0; i<10; i++)
54     uint0++;
55
56   if(i < 10)
57     failures++;
58 }
59
60 void for4(void)
61 {
62   for(uint0=1; uint0<10; uint0++)
63     uchar0++;
64
65   if(uchar0 != 9)
66     failures++;
67 }
68
69 void for5(void)
70 {
71   for(uint0=1; uint0<=10; uint0++)
72     uchar0++;
73
74   if(uchar0 != 10)
75     failures++;
76 }
77
78 void inc_uchar0(void)
79 {
80   uchar0++;
81 }
82
83 void for6(void)
84 {
85   uchar0 = 0;
86   for(uint0=1; uint0<=10; uint0++)
87     inc_uchar0();
88 }
89
90 int main(void)
91 {
92   for1();
93   for2();
94   for3();
95   uchar0 = 0;
96   for4();
97   uchar0 = 0;
98   for5();
99
100   for6();
101   if(uchar0 != 10)
102     failures++;
103
104   success = failures;
105   done();
106   printf("failures: %d\n",failures);
107
108   return failures;
109 }