]> git.sur5r.net Git - cc65/blob - test/val/compare2.c
All regression-tests subdirectories are cleaned before the first test starts, so...
[cc65] / test / val / compare2.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 aint0 = 0;
18 unsigned int aint1 = 0;
19 unsigned char achar0 = 0;
20 unsigned char achar1 = 0;
21
22 void
23 done ()
24 {
25   dummy++;
26 }
27
28 void
29 char_lt_char (void)
30 {
31   if (achar0 < achar1)
32     failures++;
33 }
34
35 void
36 char_gt_char (void)
37 {
38   if (achar1 > achar0)
39     failures++;
40 }
41
42 void
43 char_lte_char (void)
44 {
45   if (achar0 <= achar1)
46     failures++;
47 }
48
49 void
50 char_gte_char (void)
51 {
52   if (achar1 >= achar0)
53     failures++;
54 }
55
56 void
57 char_lt_lit (void)
58 {
59   if (achar1 < 0x10)
60     failures++;
61 }
62
63 void
64 char_gt_lit (void)
65 {
66   if (achar1 > 0x10)
67     failures++;
68 }
69
70 void
71 char_lte_lit (void)
72 {
73   if (achar1 <= 0x0f)
74     failures++;
75 }
76
77 void
78 char_gte_lit (void)
79 {
80   if (achar1 >= 0x11)
81     failures++;
82 }
83
84 /* now repeat test using negative logic */
85 void
86 char_lt_char_else (void)
87 {
88   if (achar0 >= achar1)
89     dummy++;
90   else
91     failures++;
92 }
93
94 void
95 char_gt_char_else (void)
96 {
97   if (achar1 <= achar0)
98     dummy++;
99   else
100     failures++;
101 }
102
103 void
104 char_lte_char_else (void)
105 {
106   if (achar0 > achar1)
107     dummy++;
108   else
109     failures++;
110 }
111
112 void
113 char_gte_char_else (void)
114 {
115   if (achar1 < achar0)
116     dummy++;
117   else
118     failures++;
119 }
120
121 void
122 char_lt_lit_else (void)
123 {
124   if (achar1 >= 0x10)
125     dummy++;
126   else
127     failures++;
128 }
129
130 void
131 char_gt_lit_else (void)
132 {
133   if (achar1 <= 0x10)
134     dummy++;
135   else
136     failures++;
137 }
138
139 void
140 char_lte_lit_else (void)
141 {
142   if (achar1 > 0x0f)
143     dummy++;
144   else
145     failures++;
146 }
147
148 void
149 char_gte_lit_else (void)
150 {
151   if (achar1 < 0x11)
152     dummy++;
153   else
154     failures++;
155 }
156
157 /* ints */
158
159 void
160 int_lt_int (void)
161 {
162   if (aint0 < aint1)
163     failures++;
164 }
165
166 void
167 int_gt_int (void)
168 {
169   if (aint1 > aint0)
170     failures++;
171 }
172
173 void
174 int_lte_int (void)
175 {
176   if (aint0 <= aint1)
177     failures++;
178 }
179
180 void
181 int_gte_int (void)
182 {
183   if (aint1 >= aint0)
184     failures++;
185 }
186
187 void
188 int_lt_lit (void)
189 {
190   if (aint1 < 0x10)
191     failures++;
192 }
193
194 void
195 int_gt_lit (void)
196 {
197   if (aint1 > 0x10)
198     failures++;
199 }
200
201 void
202 int_lte_lit (void)
203 {
204   if (aint1 <= 0x0f)
205     failures++;
206 }
207
208 void
209 int_gte_lit (void)
210 {
211   if (aint1 >= 0x11)
212     failures++;
213 }
214
215 /* now repeat int comparisons using negative logic */
216
217 void
218 int_lt_int_else (void)
219 {
220   if (aint0 >= aint1)
221     dummy++;
222   else
223     failures++;
224 }
225
226 void
227 int_gt_int_else (void)
228 {
229   if (aint1 <= aint0)
230     dummy++;
231   else
232     failures++;
233 }
234
235 void
236 int_lte_int_else (void)
237 {
238   if (aint0 > aint1)
239     dummy++;
240   else
241     failures++;
242 }
243
244 void
245 int_gte_int_else (void)
246 {
247   if (aint1 < aint0)
248     dummy++;
249   else
250     failures++;
251 }
252
253 void
254 int_lt_lit_else (void)
255 {
256   if (aint1 >= 0x10)
257     dummy++;
258   else
259     failures++;
260 }
261
262 void
263 int_gt_lit_else (void)
264 {
265   if (aint1 <= 0x10)
266     dummy++;
267   else
268     failures++;
269 }
270
271 void
272 int_lte_lit_else (void)
273 {
274   if (aint1 > 0x0f)
275     dummy++;
276   else
277     failures++;
278 }
279
280 void
281 int_gte_lit_else (void)
282 {
283   if (aint1 < 0x11)
284     dummy++;
285   else
286     failures++;
287 }
288
289 int
290 main (void)
291 {
292   char_lt_char ();
293   char_gt_char ();
294
295   achar0++;
296   char_lt_char ();
297   char_gt_char ();
298   char_gte_char ();
299   char_lte_char ();
300
301   achar1 = 0x10;
302   char_lt_lit ();
303   char_gt_lit ();
304   char_lte_lit ();
305   char_gte_lit ();
306
307   achar0 = 0;
308   achar1 = 0;
309
310   char_lt_char_else ();
311   char_gt_char_else ();
312
313   achar0++;
314   char_lt_char_else ();
315   char_gt_char_else ();
316   char_gte_char_else ();
317   char_lte_char_else ();
318
319   achar1 = 0x10;
320   char_lt_lit_else ();
321   char_gt_lit_else ();
322   char_lte_lit_else ();
323   char_gte_lit_else ();
324
325   int_lt_int ();
326   int_gt_int ();
327
328   aint0++;
329   int_lt_int ();
330   int_gt_int ();
331   int_gte_int ();
332   int_lte_int ();
333
334   aint1 = 0x10;
335   int_lt_lit ();
336   int_gt_lit ();
337   int_lte_lit ();
338   int_gte_lit ();
339
340   aint0=0;
341   aint1=0;
342   int_lt_int_else ();
343   int_gt_int_else ();
344
345   aint0++;
346   int_lt_int_else ();
347   int_gt_int_else ();
348   int_gte_int_else ();
349   int_lte_int_else ();
350
351   aint1 = 0x10;
352   int_lt_lit_else ();
353   int_gt_lit_else ();
354   int_lte_lit_else ();
355   int_gte_lit_else ();
356
357   success = failures;
358   done ();
359   printf("failures: %d\n",failures);
360
361   return failures;
362 }