]> git.sur5r.net Git - cc65/blob - test/val/compare6.c
All regression-tests subdirectories are cleaned before the first test starts, so...
[cc65] / test / val / compare6.c
1 /*
2   !!DESCRIPTION!! Compound comparisons
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 int int0 = 0;
18 int int1 = 0;
19 unsigned char uchar0 = 0;
20 unsigned char uchar1 = 0;
21 char char0 = 0;
22 char char1 = 0;
23 char long0 = 0;
24 char long1 = 0;
25
26 void
27 done ()
28 {
29   dummy++;
30 }
31
32 void c_char(void)
33 {
34   if(char0 || char1)
35     failures++;
36
37   if(char0 && char1)
38     failures++;
39
40   if(char0 > char1)
41     failures++;
42
43   if((char0+1)  < char1)
44     failures++;
45
46   if((char0+5) >= (char1+9))
47     failures++;
48
49   char0++;
50
51   if(char0 && char1)
52     failures++;
53
54   if(char0 != (char1+1) )
55     failures++;
56
57   if(!char0)
58     failures++;
59
60   if(char1 || !char0)
61     failures++;
62
63   if((char0 >5 ) && (char0 < 10)) 
64     failures++;
65
66   char0 +=5; /* char0 = 6 now */
67
68   if(!((char0 >5 ) && (char0 < 10)))
69     failures++;
70 }
71
72 void c_int(void)
73 {
74   if(int0 || int1)
75     failures++;
76
77   if(int0 && int1)
78     failures++;
79
80   if(int0 > int1)
81     failures++;
82
83   if((int0+1)  < int1)
84     failures++;
85
86   if((int0+5) >= (int1+9))
87     failures++;
88
89   int0++;
90
91   if(int0 && int1)
92     failures++;
93
94   if(int0 != (int1+1) )
95     failures++;
96
97   if(!int0)
98     failures++;
99
100   if(int1 || !int0)
101     failures++;
102
103   if((int0 >5 ) && (int0 < 10)) 
104     failures++;
105
106   int0 +=5; /* int0 = 6 now */
107
108   if(!((int0 >5 ) && (int0 < 10)))
109     failures++;
110 }
111
112 void c_long(void)
113 {
114   if(long0 || long1)
115     failures++;
116
117   if(long0 && long1)
118     failures++;
119
120   if(long0 > long1)
121     failures++;
122
123   if((long0+1)  < long1)
124     failures++;
125
126   if((long0+5) >= (long1+9))
127     failures++;
128
129   long0++;
130
131   if(long0 && long1)
132     failures++;
133
134   if(long0 != (long1+1) )
135     failures++;
136
137   if(!long0)
138     failures++;
139
140   if(long1 || !long0)
141     failures++;
142
143   if((long0 >5 ) && (long0 < 10)) 
144     failures++;
145
146   long0 +=5; /* long0 = 6 now */
147
148   if(!((long0 >5 ) && (long0 < 10)))
149     failures++;
150 }
151
152 void c_uminus(void)
153 {
154   int1 = -int0;
155   if(int1 < 0)
156     failures++;
157 }
158
159 int
160 main (void)
161 {
162   c_char();
163   c_int();
164   c_long();
165
166   int0 = -1;
167   c_uminus();
168   if(int1 != 1)
169     failures++;
170
171   success = failures;
172   done ();
173   printf("failures: %d\n",failures);
174
175   return failures;
176 }