Added more PIC regression testing.
[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 == 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
267 main (void)
268 {
269
270   int1 = 1;
271   char1 = 1;
272   c_0();
273   c_1();
274
275   int0 = 2;
276   char0 = 2;
277   c_2();
278
279   int0 = 0xff;
280   char0 = 0xff;
281   c_ff();
282
283   int0 = 0xa5;
284   char0 = 0xa5;
285   c_a5();
286
287   int0 = 0xabcd;
288   c_abcd();
289
290   char0 = 0;
291   char1 = 0;
292   c_ifelse1();
293
294   char0 = 1;
295   c_ifelse1();
296
297   char0 = -1;
298   int0 = -1;
299   c_minus1();
300
301   success = failures;
302   done ();
303 }