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