]> git.gag.com Git - fw/sdcc/blob - support/regression/tests/array.c
* device/include/mcs51/c8051f410.h: new SiLabs mcu
[fw/sdcc] / support / regression / tests / array.c
1 /** array test
2     type: char, int
3     storage: xdata, code,
4 */
5 #include <testfwk.h>
6
7 #if defined(PORT_HOST) || defined(SDCC_z80) || defined(SDCC_gbz80)
8 # define xdata
9 # define code
10 #endif
11
12 #define TC(x) (0x10+(x))
13 #define TI(x) (0x1020+(x) + 0x100*(x))
14 #define TL(x) (0x10203040+(x))
15
16 const {storage} unsigned char array_const_char[4] = {TC(0), TC(1), TC(2), TC(3)};
17 const {storage} unsigned int  array_const_int [4] = {TI(0), TI(1), TI(2), TI(3)};
18 const {storage} unsigned long array_const_long[4] = {TL(0), TL(1), TL(2), TL(3)};
19
20 unsigned char array_char[4] = {TC(0), TC(1), TC(2), TC(3)};
21 unsigned int  array_int [4] = {TI(0), TI(1), TI(2), TI(3)};
22 unsigned long array_long[4] = {TL(0), TL(1), TL(2), TL(3)};
23
24 volatile unsigned {type} idx;
25 volatile unsigned {type} idx2;
26
27 void
28 testArrayAccess(void)
29 {
30   idx = 2;
31
32   ASSERT(array_const_char[idx] == TC(2));
33   ASSERT(array_const_int [idx] == TI(2));
34   ASSERT(array_const_long[idx] == TL(2));
35
36   ASSERT(array_const_char[2] == TC(2));
37   ASSERT(array_const_int [2] == TI(2));
38   ASSERT(array_const_long[2] == TL(2));
39
40   ASSERT(array_char[idx] == TC(2));
41   ASSERT(array_int [idx] == TI(2));
42   ASSERT(array_long[idx] == TL(2));
43
44   ASSERT(array_char[2] == TC(2));
45   ASSERT(array_int [2] == TI(2));
46   ASSERT(array_long[2] == TL(2));
47
48   idx = 3;
49   idx2 = 1;
50
51   array_char[idx2] = array_const_char[idx] | 0x80;
52   array_int [idx2] = array_const_int [idx] | 0x8080;
53   array_long[idx2] = array_const_long[idx] | 0x80808080;
54
55   ASSERT(array_char[idx2] == (TC(3) | 0x80));
56   ASSERT(array_int [idx2] == (TI(3) | 0x8080));
57   ASSERT(array_long[idx2] == (TL(3) | 0x80808080));
58 }