1 /** constant range tests.
13 #if defined (__GNUC__) && defined (__alpha__) && (__GNUC__ < 3)
14 /* bool should be casted to int in order to pass the test. Is this a gcc bug? */
15 #define INT_CAST (int)
30 testConstantRange (void)
32 ASSERT (! (INT8_MIN - 1 == s8));
33 ASSERT (! (INT8_MAX + 1 == s8));
34 ASSERT ( (INT8_MIN - 1 != s8));
35 ASSERT ( (INT8_MAX + 1 != s8));
36 ASSERT ( (INT8_MIN - 1 < s8));
37 ASSERT (! (INT8_MAX < s8));
38 ASSERT ( (INT8_MIN <= s8));
39 ASSERT (! (INT8_MAX <= s8));
40 ASSERT (! (INT8_MIN > s8));
41 ASSERT ( (INT8_MAX + 1 > s8));
42 ASSERT (! (INT8_MIN - 1 >= s8));
43 ASSERT ( (INT8_MAX >= s8));
45 ASSERT (! ( 0 - 1 == u8));
46 ASSERT (! (UINT8_MAX + 1 == u8));
47 ASSERT ( ( 0 - 1 != u8));
48 ASSERT ( (UINT8_MAX + 1 != u8));
49 ASSERT ( ( 0 - 1 < u8));
50 ASSERT (! (UINT8_MAX < u8));
52 ASSERT (! (UINT8_MAX + 1 <= u8));
54 ASSERT ( (UINT8_MAX + 1 > u8));
55 ASSERT (! ( 0 - 1 >= u8));
56 ASSERT ( (UINT8_MAX >= u8));
58 /* force extension to long to avoid int (16 bit) overflow */
59 ASSERT (! (INT16_MIN - 1L == s16));
60 ASSERT (! (INT16_MAX + 1L == s16));
61 ASSERT ( (INT16_MIN - 1L != s16));
62 ASSERT ( (INT16_MAX + 1L != s16));
63 ASSERT ( (INT16_MIN - 1L < s16));
64 ASSERT (! (INT16_MAX < s16));
65 ASSERT ( (INT16_MIN <= s16));
66 ASSERT (! (INT16_MAX <= s16));
67 ASSERT (! (INT16_MIN > s16));
68 ASSERT ( (INT16_MAX + 1L > s16));
69 ASSERT (! (INT16_MIN - 1L >= s16));
70 ASSERT ( (INT16_MAX >= s16));
72 ASSERT (! ( 0 - 1 == u16));
73 ASSERT (! (UINT16_MAX + 1L == u16));
74 ASSERT ( ( 0 - 1 != u16));
75 ASSERT ( (UINT16_MAX + 1L != u16));
76 ASSERT (! (UINT16_MAX < u16));
77 ASSERT ( ( 0 <= u16));
78 ASSERT (! (UINT16_MAX + 1L <= u16));
79 ASSERT (! ( 0 > u16));
80 ASSERT ( (UINT16_MAX + 1L > u16));
81 ASSERT ( (UINT16_MAX >= u16));
83 #if defined(PORT_HOST)
84 /* on 32bit host: -1 is presented as 32 bit int, 16 bit unsigned short is promoted to 32 bit int */
85 ASSERT ( ( 0 - 1 < u16)); /* -1 > 0 */
86 ASSERT (! ( 0 - 1 >= u16)); /* !(-1 <= 0) */
88 /* on 16bit sdcc: int (-1) is promoted to unsigned int (0xffff) */
89 ASSERT ( ( 0 - 1 > u16)); /* 0xffff > 0 */
90 ASSERT (! ( 0 - 1 <= u16)); /* !(0xffff <= 0) */
93 /* sdcc can't hold a number (INT32_MIN - 1) or (INT32_MAX + 1),
94 there's no 'double' or 'long long' */
95 /* ASSERT (! (INT32_MIN - 1 == s32)); */
96 /* ASSERT (! (INT32_MAX + 1 == s32)); */
97 /* ASSERT ( (INT32_MIN - 1 != s32)); */
98 /* ASSERT ( (INT32_MAX + 1 != s32)); */
99 /* ASSERT ( (INT32_MIN - 1 < s32)); */
100 ASSERT (! (INT32_MAX < s32));
101 ASSERT ( (INT32_MIN <= s32));
102 ASSERT (! (INT32_MAX <= s32));
103 ASSERT (! (INT32_MIN > s32));
104 /* ASSERT ( (INT32_MAX + 1 > s32)); */
105 /* ASSERT (! (INT32_MIN - 1 >= s32)); */
106 ASSERT ( (INT32_MAX >= s32));
108 ASSERT (! ( 0 - 1 == u32));
109 /* ASSERT (! (UINT32_MAX + 1 == u32)); */
110 ASSERT ( ( 0 - 1 != u32));
111 /* ASSERT ( (UINT32_MAX + 1 != u32)); */
112 ASSERT ( ( 0 - 1 > u32)); /* 0xffffffff > 0 */
113 ASSERT (! (UINT32_MAX < u32));
114 ASSERT ( ( 0 <= u32));
115 /* ASSERT (! (UINT32_MAX + 1 <= u32)); */
116 ASSERT (! ( 0 > u32));
117 /* ASSERT ( (UINT32_MAX + 1 > u32)); */
118 ASSERT (! ( 0 - 1 <= u32)); /* !(0xffffffff <= 0) */
119 ASSERT ( (UINT32_MAX >= u32));
125 #ifdef __bool_true_false_are_defined
127 #if defined(PORT_HOST)
128 volatile bool sb, ub;
130 volatile signed bool sb;
131 volatile unsigned bool ub;
137 ASSERT (! (-1 == sb));
138 ASSERT ( ( 0 == sb));
139 ASSERT (! ( 1 == sb));
141 ASSERT ( (-1 != sb));
142 ASSERT (! ( 0 != sb));
143 ASSERT ( ( 1 != sb));
145 ASSERT ( (-1 < INT_CAST sb));
146 ASSERT (! ( 0 < sb));
148 ASSERT ( ( 0 <= sb));
149 ASSERT (! ( 1 <= sb));
151 ASSERT (! ( 0 > sb));
154 ASSERT (! (-1 >= INT_CAST sb));
155 ASSERT ( ( 0 >= sb));
158 ASSERT (! (-1 == ub));
159 ASSERT ( ( 0 == ub));
160 ASSERT (! ( 1 == ub));
162 ASSERT ( (-1 != ub));
163 ASSERT (! ( 0 != ub));
164 ASSERT ( ( 1 != ub));
166 ASSERT ( (-1 < INT_CAST ub));
167 ASSERT (! ( 0 < ub));
169 ASSERT ( ( 0 <= ub));
170 ASSERT (! ( 1 <= ub));
172 ASSERT (! ( 0 > ub));
175 ASSERT (! (-1 >= INT_CAST ub));
176 ASSERT ( ( 0 >= ub));
177 #endif //__bool_true_false_are_defined
195 ASSERT (! (-2 == str.sb1));
196 ASSERT (! (-1 == str.sb1));
197 ASSERT ( ( 0 == str.sb1));
198 ASSERT (! ( 1 == str.sb1));
200 ASSERT (! (-1 == str.ub1));
201 ASSERT ( ( 0 == str.ub1));
202 ASSERT (! ( 1 == str.ub1));
203 ASSERT (! ( 2 == str.ub1));
205 ASSERT (! (-5 == str.sb3));
206 ASSERT (! (-4 == str.sb3));
207 ASSERT ( ( 0 == str.sb3));
208 ASSERT (! ( 3 == str.sb3));
209 ASSERT (! ( 4 == str.sb3));
211 ASSERT (! (-1 == str.ub3));
212 ASSERT ( ( 0 == str.ub3));
213 ASSERT (! ( 7 == str.ub3));
214 ASSERT (! ( 8 == str.ub3));