struct / union in initializer, RFE #901.
[sdcc.git] / sdcc / support / regression / tests / compare_2_n.m4
blobb0c949db105f56c5a7f25dfeccf78785355ef1b7
1 /** Compare with 2^n greater then 255
2     test for patch #2702889 - Summary of all uncommitted changes I applied on "my" SDCC
3 */
5 #include <testfwk.h>
7 foreach(`int_right', (0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000), `
8 int
9 lwr_if_`'int_right (unsigned left)
10
11   if (left < int_right)
12     return 1;
13   else
14     return 0;
17 int
18 lwr_`'int_right (unsigned left)
20   return left < int_right;
23 void
24 test_lwr_`'int_right (void)
26 #if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory
27   ASSERT (lwr_if_`'int_right (int_right - 1));
28   ASSERT (!lwr_if_`'int_right (int_right));
29   ASSERT (!lwr_if_`'int_right (int_right + 1));
31   ASSERT (lwr_`'int_right (int_right - 1));
32   ASSERT (!lwr_`'int_right (int_right));
33   ASSERT (!lwr_`'int_right (int_right + 1));
34 #endif
36 ')dnl
38 foreach(`int_right', (0x007f, 0x00ff, 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff), `
39 #if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory
40 int
41 gtr_if_`'int_right (unsigned left)
43   return (left > int_right) ? 1 : 0;
46 int
47 gtr_`'int_right (unsigned left)
49   return left > int_right;
51 #endif
53 void
54 test_gtr_`'int_right (void)
56 #if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory
57   ASSERT (gtr_if_`'int_right (int_right + 1));
58   ASSERT (!gtr_if_`'int_right (int_right));
59   ASSERT (!gtr_if_`'int_right (int_right - 1));
61   ASSERT (gtr_`'int_right (int_right + 1));
62   ASSERT (!gtr_`'int_right (int_right));
63   ASSERT (!gtr_`'int_right (int_right - 1));
64 #endif
66 ')dnl
68 #if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory
69 /* special case for 0x0000 */
70 int
71 lwr_if_0x0000 (unsigned left)
73   if (left < 0x0000)
74     return 1;
75   else
76     return 0;
79 int
80 lwr_0x0000 (unsigned left)
82   return left < 0x0000;
84 #endif
86 void
87 test_lwr_0x0000 (void)
89 #if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory
90   ASSERT (!lwr_if_0x0000 (0x0000 - 1));
91   ASSERT (!lwr_if_0x0000 (0x0000));
92   ASSERT (!lwr_if_0x0000 (0x0000 + 1));
94   ASSERT (!lwr_0x0000 (0x0000 - 1));
95   ASSERT (!lwr_0x0000 (0x0000));
96   ASSERT (!lwr_0x0000 (0x0000 + 1));
97 #endif
100 #if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory
101 #if !defined(PORT_HOST)
102 /* special case for 0xffff */
104 gtr_if_0xffff (unsigned left)
106   return (left > 0xffff) ? 1 : 0;
110 gtr_0xffff (unsigned left)
112   return left > 0xffff;
114 #endif
115 #endif
117 void
118 test_gtr_0xffff (void)
120 #if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory
121 #if !defined(PORT_HOST)
122   ASSERT (!gtr_if_0xffff (0xffff + 1));
123   ASSERT (!gtr_if_0xffff (0xffff));
124   ASSERT (!gtr_if_0xffff (0xffff - 1));
126   ASSERT (!gtr_0xffff (0xffff + 1));
127   ASSERT (!gtr_0xffff (0xffff));
128   ASSERT (!gtr_0xffff (0xffff - 1));
129 #endif
130 #endif
133 #if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory
134 /* unsigned long test cases */
135 #define LONG_RIGHT_LWR 0x80000000
137 long_lwr (unsigned long left)
139   return (left < LONG_RIGHT_LWR) ? 1 : 0;
142 #define LONG_RIGHT_GTR 0x7fffffff
144 long_gtr (unsigned long left)
146   if (left > LONG_RIGHT_GTR)
147     return 1;
148   else
149     return 0;
151 #endif
153 void
154 test_lwr_gtr (void)
156 #if !defined(__SDCC_pdk14) && !defined(__SDCC_pdk15) // Lack of memory
157   ASSERT (long_lwr (LONG_RIGHT_LWR - 1));
158   ASSERT (!long_lwr (LONG_RIGHT_LWR));
159   ASSERT (!long_lwr (LONG_RIGHT_LWR + 1));
161   ASSERT (long_gtr (LONG_RIGHT_GTR + 1));
162   ASSERT (!long_gtr (LONG_RIGHT_GTR));
163   ASSERT (!long_gtr (LONG_RIGHT_GTR - 1));
164 #endif
167 /* Test for bug #2165 Broken comparison */
168 char c;
171 bug_2165 (unsigned i)
173   if (i < 0x0100)
174     return 1;
175   else
176     {c = i < 0x0100; return 0;}
179 void
180 test_bug_bug_2165 (void)
182   ASSERT (bug_2165 (254));
183   ASSERT (bug_2165 (255));
184   ASSERT (!bug_2165 (256));