]> git.sur5r.net Git - cc65/blob - test/val/compare3.c
All regression-tests subdirectories are cleaned before the first test starts, so...
[cc65] / test / val / compare3.c
1 /*
2   !!DESCRIPTION!! regression testing program for comparing literals to variables
3   !!ORIGIN!!      SDCC regression tests
4   !!LICENCE!!     GPL, read COPYING.GPL
5 */
6
7 #include <stdio.h>
8 #include <limits.h>
9
10 /*
11  compare3.c
12 */
13
14 unsigned char success = 0;
15 unsigned char failures = 0;
16 unsigned char dummy = 0;
17
18 #ifdef SUPPORT_BIT_TYPES
19 bit bit0 = 0;
20 #endif
21 unsigned int aint0 = 0;
22 unsigned int aint1 = 0;
23 unsigned char achar0 = 0;
24 unsigned char achar1 = 0;
25
26 void
27 done ()
28 {
29   dummy++;
30 }
31
32 /* compare to 0
33  assumes
34  achar0 == 0
35  achar1 != 0
36  aint0  == 0
37  aint1  != 0
38 */
39 void c_0(void)
40 {
41   if(achar0 != 0)
42     failures++;
43
44   if(achar0)
45     failures++;
46
47   if(achar1 == 0)
48     failures++;
49
50   if(!achar1)
51     failures++;
52
53   if(aint0 != 0)
54     failures++;
55
56   if(aint0)
57     failures++;
58
59   if(aint1 == 0)
60     failures++;
61
62   if(!aint1)
63     failures++;
64 }
65
66 /* compare to 1
67  assumes
68  achar0 != 1
69  achar1 == 1
70  aint0  != 1
71  aint1  == 1
72 */
73 void c_1(void)
74 {
75   if(achar0 == 1)
76     failures++;
77
78   if(achar1 != 1)
79     failures++;
80
81   if(aint0 == 1)
82     failures++;
83
84   if(aint1 != 1)
85     failures++;
86 }
87
88 /* compare to 2
89  assumes
90  achar0 == 2
91  aint0  == 2
92 */
93 void c_2(void)
94 {
95   if(achar0 != 2)
96     failures++;
97
98   if(aint0 != 2)
99     failures++;
100 }
101
102 /* compare to 0xff
103  assumes
104  achar0 == 0xff
105  aint0  == 0xff
106 */
107 void c_ff(void)
108 {
109   if(achar0 != 0xff)
110     failures++;
111
112   if(aint0 != 0xff)
113     failures++;
114
115   if(aint0 == 0xfe)
116     failures++;
117
118   if(aint0 == 0xff00)
119     failures++;
120 }
121
122 /* compare to 0x00a5
123  assumes
124  achar0  == 0xa5
125  aint0  == 0x00a5
126 */
127 void c_a5(void)
128 {
129   if(achar0 != 0xa5)
130     failures++;
131
132   if(aint0 != 0xa5)
133     failures++;
134
135   if(aint0 == 0xa4)
136     failures++;
137
138   if(aint0 == 0xa500)
139     failures++;
140 }
141
142 /* compare to 0xa500
143  assumes
144  achar0  == 0xa5
145  aint0  == 0xa500
146 */
147 void c_a500(void)
148 {
149   if(achar0 == 0xa500)
150     failures++;
151
152   if(aint0 != 0xa500)
153     failures++;
154
155   if(aint0 == 0xa400)
156     failures++;
157
158   if(aint0 == 0x00a5)
159     failures++;
160 }
161
162 /* compare to 0xabcd
163  assumes
164  achar0  == 0xa5
165  aint0  == 0xabcd
166 */
167 void c_abcd(void)
168 {
169   if(achar0 == 0xabcd)
170     failures++;
171
172   if(aint0 != 0xabcd)
173     failures++;
174
175   if(aint0 == 0xab00)
176     failures++;
177
178   if(aint0 == 0x00cd)
179     failures++;
180
181   if(aint0 == 0x05cd)
182     failures++;
183
184   if(aint0 == 0xab05)
185     failures++;
186
187   if(aint0 == 0xab01)
188     failures++;
189
190   if(aint0 == 0x01cd)
191     failures++;
192
193   /*
194   if(aint0 == 0x1234abcd)
195         failures++;
196   */
197 }
198
199 /* assumes achar1 == 0 */
200 void c_ifelse1(void)
201 {
202   if(achar0)
203     achar0 = achar1;
204   else
205     achar0 = 0;
206
207   if(achar0)
208     failures++;
209 }
210
211 int
212 main (void)
213 {
214   aint1 = 1;
215   achar1 = 1;
216   c_0();
217   c_1();
218
219   aint0 = 2;
220   achar0 = 2;
221   c_2();
222
223   aint0 = 0xff;
224   achar0 = 0xff;
225   c_ff();
226
227   aint0 = 0xa5;
228   achar0 = 0xa5;
229   c_a5();
230
231   aint0 = 0xabcd;
232   c_abcd();
233
234   achar0 = 0;
235   achar1 = 0;
236   c_ifelse1();
237
238   achar0 = 1;
239   c_ifelse1();
240
241   success = failures;
242   done ();
243   printf("failures: %d\n",failures);
244
245   return failures;
246 }