struct / union in initializer, RFE #901.
[sdcc.git] / sdcc / support / regression / tests / enum.c
blobcfe186c331f2f45a672ca18e591418abc9c031ee
1 /* Test the types of enum.
2 */
3 #include <testfwk.h>
5 enum _SimpleEnum {
6 SIMPLE_ZERO,
7 SIMPLE_ONE,
8 SIMPLE_TWO
9 };
11 enum _ValuesEnum {
12 VALUES_ZERO,
13 VALUES_FIVE = 5,
14 VALUES_SIX,
15 VALUES_SEVEN,
16 VALUES_TWELVE = 12
19 enum _IndexedEnum {
20 INDEXED_ZERO,
21 INDEXED_ONE,
22 INDEXED_ONE_ALIAS = INDEXED_ONE,
23 INDEXED_TWO,
24 INDEXED_THREE,
25 INDEXED_ZERO_ALIAS = INDEXED_ZERO + 0,
26 INDEXED_ONE_ALIAS2 = INDEXED_ZERO + 1,
27 INDEXED_TWO_ALIAS = INDEXED_ZERO + 2,
28 INDEXED_TWO_ALIAS2 = INDEXED_ONE_ALIAS2 + 1,
29 INDEXED_MATH = INDEXED_ONE_ALIAS + INDEXED_TWO * INDEXED_THREE
32 enum _SignedEnum {
33 SIGNED_POS = 1,
34 SIGNED_ZERO = 0,
35 SIGNED_NEG = -1
36 } se;
38 enum comma {
39 COMMA_ZERO,
40 COMMA_ONE,
41 COMMA_TWO, // Trailing comma after enumerator list is a C99 feature.
42 };
44 volatile enum _IntEnum {
45 INT_256 = 256,
46 INT_ZERO = 0
47 } ie;
49 void
50 testSimpleEnum(void)
52 ASSERT(SIMPLE_ZERO == 0);
53 ASSERT(SIMPLE_ONE == 1);
54 ASSERT(SIMPLE_TWO == 2);
57 void
58 testValuesEnum(void)
60 ASSERT(VALUES_ZERO == 0);
61 ASSERT(VALUES_FIVE == 5);
62 ASSERT(VALUES_SIX == 6);
63 ASSERT(VALUES_SEVEN == 7);
64 ASSERT(VALUES_TWELVE == 12);
67 void
68 testIndexedEnum(void)
70 ASSERT(INDEXED_ZERO == 0);
71 ASSERT(INDEXED_ZERO_ALIAS == 0);
72 ASSERT(INDEXED_ONE == 1);
73 ASSERT(INDEXED_ONE_ALIAS == 1);
74 ASSERT(INDEXED_ONE_ALIAS2 == 1);
75 ASSERT(INDEXED_TWO == 2);
76 ASSERT(INDEXED_TWO_ALIAS == 2);
77 ASSERT(INDEXED_TWO_ALIAS2 == 2);
78 ASSERT(INDEXED_MATH == 7);
81 void
82 testSignedEnum(void)
84 ASSERT(SIGNED_POS == 1);
85 ASSERT(SIGNED_ZERO == 0);
86 ASSERT(SIGNED_NEG == -1);
88 se = SIGNED_NEG;
89 ASSERT(se == SIGNED_NEG);
92 void
93 testIntEnum(void)
95 ASSERT(INT_ZERO == 0);
96 ASSERT(INT_256 == 256);
98 ie = INT_ZERO;
99 ASSERT(ie == INT_ZERO);
100 ie = INT_256;
101 ASSERT(ie == INT_256);