Imported Upstream version 2.9.0
[debian/cc1111] / support / regression / tests / bug1738367.c
1 /*
2    bug1738367.c
3 */
4
5 #include <testfwk.h>
6 #include <stdbool.h>
7
8 #ifdef __bool_true_false_are_defined
9
10 bool ternary(unsigned char status)
11 {
12         return (status == 0) ? 0 : 1;
13 }
14
15 bool ternary_inv(unsigned char status)
16 {
17         return (status == 0) ? 1 : 0;
18 }
19
20
21 bool ternary1(unsigned char status)
22 {
23         return status ? 1 : 0;
24 }
25
26 bool ternary1_inv(unsigned char status)
27 {
28         return status ? 0 : 1;
29 }
30
31
32 bool ternary2(unsigned char status)
33 {
34         return !status ? 0 : 1;
35 }
36
37 bool ternary2_inv(unsigned char status)
38 {
39         return !status ? 1 : 0;
40 }
41
42 #endif //__bool_true_false_are_defined
43
44
45 void
46 testBug(void)
47 {
48 #ifdef __bool_true_false_are_defined
49         ASSERT(!ternary(0x00));
50         ASSERT( ternary(0x10));
51
52         ASSERT( ternary_inv(0x00));
53         ASSERT(!ternary_inv(0x10));
54
55         ASSERT(!ternary1(0x00));
56         ASSERT( ternary1(0x10));
57
58         ASSERT( ternary1_inv(0x00));
59         ASSERT(!ternary1_inv(0x10));
60
61         ASSERT(!ternary2(0x00));
62         ASSERT( ternary2(0x10));
63
64         ASSERT( ternary2_inv(0x00));
65         ASSERT(!ternary2_inv(0x10));
66         ASSERT(!ternary2_inv(1==1));
67 #endif //__bool_true_false_are_defined
68 }