Imported Upstream version 2.9.0
[debian/cc1111] / support / regression / tests / scott-add.c
1 /* Addition tests
2  */
3 #include <testfwk.h>
4
5 /* bit types are not ANSI - so provide a way of disabling bit types
6  * if this file is used to test other compilers besides SDCC */
7 #define SUPPORT_BIT_TYPES 0
8
9 /* Some compilers that support bit types do not support bit arithmetic 
10  * (like bitx = bity + bitz;) */
11 #define SUPPORT_BIT_ARITHMETIC 0
12
13 #if SUPPORT_BIT_TYPES
14
15 bit bit0 = 0;
16 bit bit1 = 0;
17 bit bit2 = 0;
18 bit bit3 = 0;
19 bit bit4 = 0;
20 bit bit5 = 0;
21 bit bit6 = 0;
22 bit bit7 = 0;
23 bit bit8 = 0;
24 bit bit9 = 0;
25 bit bit10 = 0;
26 bit bit11 = 0;
27
28 #endif
29
30 unsigned int aint0 = 0;
31 unsigned int aint1 = 0;
32 unsigned char achar0 = 0;
33 unsigned char achar1 = 0;
34 unsigned char achar2 = 0;
35 unsigned char achar3 = 0;
36 unsigned char *acharP = 0;
37
38 void 
39 test_add_lit2uchar(void)
40 {
41   achar0 = achar0 + 5;
42
43   ASSERT(achar0 == 5);
44
45   achar0 += 10;
46   
47   ASSERT(achar0 == 15);
48
49   achar0 = achar0 +1;  // Should be an increment
50
51   ASSERT(achar0 == 16);
52
53   for(achar1 = 0; achar1 < 100; achar1++)
54     achar0 += 2;
55
56   ASSERT(achar0 == 216);
57 }
58
59 void
60 test_add_uchar2uchar_setup(void)
61 {
62   achar0=16;
63   achar1=0;
64 }
65
66 void 
67 test_add_uchar2uchar(void)
68 {
69   achar1 = achar1 + achar0;
70
71   ASSERT(achar1 == 16);
72
73   for(achar2 = 0; achar2<7; achar2++)
74     achar1 += achar0;
75
76   ASSERT(achar1 == 128);
77 }
78
79 // assumes
80 //  achar0 = 0
81 //  achar1 = 32
82 //  achar2, achar3 can be anything.
83
84 void 
85 test_add_uchar2uchar2_setup(void)
86 {
87   achar0 = 0;
88   achar1 = 32;
89 }
90
91 void 
92 test_add_uchar2uchar2(void)
93 {
94   achar0++;
95   achar0 = achar0 + 1;
96   achar0 = achar0 + 2;
97   achar0 = achar0 + 3;
98
99   ASSERT(achar0 == 7);
100
101   achar1 += achar0;
102   ASSERT(achar1 == 39);
103
104   achar2 = achar1 + achar0;
105   ASSERT(achar2 == 46);
106
107   achar3 = achar2 + achar1 + achar0;
108   ASSERT(achar3 == 92);
109
110 }
111
112 #if SUPPORT_BIT_TYPES
113 void add_bits(void)
114 {
115
116   bit1 = bit0;
117
118   bit0 = 1;
119
120   if(bit1 != 0)
121     failures++;
122
123   bit1 = bit1+bit0;
124   ASSERT(bit1 == 1);
125
126 #if SUPPORT_BIT_ARITHMETIC
127   bit2 = bit1+bit3;
128   ASSERT(bit2 != 0);
129
130   bit3 = bit4+bit5+bit6+bit7+bit0;
131   ASSERT(bit3 == 0);
132 #endif
133 }
134
135 /* add_bit2uchar(void) - assumes bit0 = 1, achar0 = 7  */
136
137 void 
138 disabled_test_add_bit2uchar(void)
139 {
140   achar0 += bit0;
141
142   ASSERT(achar0 == 8);
143
144   ASSERT(achar0 == bit0);
145 }
146
147 void 
148 disabled_test_add_bit2uint(void)
149 {
150   ASSERT(aint0 == bit11);
151
152   aint0 += bit0;
153   ASSERT(aint0 == 1);
154 }
155 #endif