* src/regression/ptrarg.c: added, fails due to bug #1430967
[fw/sdcc] / src / regression / compare4.c
1 #include "gpsim_assert.h"
2 //
3 // compare4.c
4 // regression testing program for comparing signed chars and ints
5 //
6
7 //#define  COMPARE_OUT_OF_RANGE 1
8
9 unsigned char failures = 0;
10
11 bit bit0 = 0;
12 int int0 = 0;
13 int int1 = 0;
14 char char0 = 0;
15 char char1 = 0;
16
17 void
18 done()
19 {
20   ASSERT(MANGLE(failures) == 0);
21   PASSED();
22 }
23
24 // compare to 0
25 // assumes
26 // char0 == 0
27 // char1 != 0
28 // int0  == 0
29 // int1  != 0
30
31 void c_0(void)
32 {
33
34   if(char0 != 0)
35     failures++;
36
37   if(char0)
38     failures++;
39
40   if(char1 == 0)
41     failures++;
42
43   if(!char1)
44     failures++;
45
46   if(int0 != 0)
47     failures++;
48
49   if(int0)
50     failures++;
51
52   if(int1 == 0)
53     failures++;
54
55   if(!int1)
56     failures++;
57
58   if(char0>0)
59     failures++;
60
61   if(int0>0)
62     failures++;
63
64   if(char0<0)
65     failures++;
66
67   if(int0<0)
68     failures++;
69
70 }
71
72 // compare to 1
73 // assumes
74 // char0 != 1
75 // char1 == 1
76 // int0  != 1
77 // int1  == 1
78
79 void c_1(void)
80 {
81
82   if(char0 == 1)
83     failures++;
84
85   if(char1 != 1)
86     failures++;
87
88   if(int0 == 1)
89     failures++;
90
91   if(int1 != 1)
92     failures++;
93
94   if(char0 < 0)
95     failures++;
96
97   if(int0 < 0)
98     failures++;
99
100 }
101
102 // compare to 2
103 // assumes
104 // achar0 == 2
105 // aint0  == 2
106
107 void c_2(void)
108 {
109
110   if(char0 != 2)
111     failures++;
112
113   if(int0 != 2)
114     failures++;
115
116 }
117
118 // compare to 0xff
119 // assumes
120 // achar0 == 0xff
121 // aint0  == 0xff
122
123 void c_ff(void)
124 {
125
126   if(char0 != 0xff)
127     failures++;
128
129   if(int0 != 0xff)
130     failures++;
131
132   if(int0 == 0xfe)
133     failures++;
134
135   if(int0 == 0xff00)
136     failures++;
137
138 }
139
140
141 // compare to 0x00a5
142 // assumes
143 // char0  == 0xa5
144 // int0  == 0x00a5
145
146 void c_a5(void)
147 {
148
149   if(char0 != 0xa5)
150     failures++;
151
152   if(int0 != 0xa5)
153     failures++;
154
155   if(int0 == 0xa4)
156     failures++;
157
158   if(int0 == 0xa500)
159     failures++;
160
161 }
162
163 // compare to 0xa500
164 // assumes
165 // char0  == 0xa5
166 // int0  == 0xa500
167
168 void c_a500(void)
169 {
170
171 #ifdef COMPARE_OUT_OF_RANGE
172   if(char0 == 0xa500)
173     failures++;
174 #endif
175
176   if(int0 != 0xa500)
177     failures++;
178
179   if(int0 != 0x44)
180     int0 = 0x28;
181
182   if(int0 == 0xa400)
183     failures++;
184
185   if(int0 == 0x00a5)
186     failures++;
187
188 }
189
190 // compare to 0xabcd
191 // assumes
192 // char0  == 0xa5
193 // int0  == 0xabcd
194
195 void c_abcd(void)
196 {
197 #ifdef COMPARE_OUT_OF_RANGE
198   if(char0 == 0xabcd)
199     failures++;
200 #endif
201 /*
202   if(int0 != 0xabcd)
203     failures++;
204 */
205   if(int0 == 0xab00)
206     failures++;
207
208   if(int0 == 0x00cd)
209     failures++;
210
211   if(int0 == 0x05cd)
212     failures++;
213
214   if(int0 == 0xab05)
215     failures++;
216
217   if(int0 == 0xab01)
218     failures++;
219
220   if(int0 == 0x01cd)
221     failures++;
222
223   if(int0 > 0)
224     failures++;
225
226 #ifdef COMPARE_OUT_OF_RANGE
227   if(int0 == 0x1234abcd)
228     failures++;
229 #endif
230
231 }
232
233 // assumes char1 == 0
234 void c_ifelse1(void)
235 {
236
237   if(char0)
238     char0 = char1;
239   else
240     char0 = 0;
241
242   if(char0)
243     failures++;
244 }
245
246 // assumes char0 = -1
247 // assumes int0 = -1
248
249 void c_minus1(void)
250 {
251   if(char0 != -1)
252     failures++;
253
254   if(int0 != -1)
255     failures++;
256
257   if(char0 != int0)
258     failures++;
259
260   if(char0>0)
261     failures++;
262
263   if(int0>0)
264     failures++;
265 }
266
267 void c_c0gtc1(void)
268 {
269
270   if(char0 < char1)
271     failures++;
272 }
273
274 void
275 main (void)
276 {
277
278   int1 = 1;
279   char1 = 1;
280   c_0();
281   c_1();
282
283   int0 = 2;
284   char0 = 2;
285   c_2();
286
287   int0 = 0xff;
288   char0 = 0xff;
289   c_ff();
290
291   int0 = 0xa5;
292   char0 = 0xa5;
293   c_a5();
294
295   int0 = 0xabcd;
296   //c_abcd();
297
298   char0 = 0;
299   char1 = 0;
300   c_ifelse1();
301
302   char0 = 1;
303   c_ifelse1();
304
305   char0 = -1;
306   int0 = -1;
307   c_minus1();
308
309
310   char0 = 5;
311   char1 = 3;
312   c_c0gtc1();
313
314   char1 = -3;
315   c_c0gtc1();
316
317   done ();
318 }