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