blob: 862f9408f47d596428895493e8c8f79ddc9e1ef3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
/* bool.c
*/
#include <testfwk.h>
#ifdef __SDCC
#pragma std_c99
#endif
#include <stdbool.h>
#include <stdint.h>
bool ret_true(void)
{
return(true);
}
bool ret_false(void)
{
return(false);
}
volatile bool E;
bool (* const pa[])(void) = {&ret_true, &ret_false};
struct s
{
bool b;
};
struct
{
bool b : 1;
bool b1 : 1;
} s2;
void fieldassign(void)
{
s2.b1 = s2.b;
}
void
testBug2233(void)
{
#ifndef __SDCC_pic16
bool result;
volatile char test = 0;
result = ret_true();
if (result == 1)
test = 1;
ASSERT(test);
#endif
}
void
testBool(void)
{
#ifndef __SDCC_pic16
volatile unsigned char z = 2;
const char *BOOL = "George Boole";
ASSERT(true);
ASSERT((*(pa[0]))() == true);
ASSERT((*(pa[1]))() == false);
s2.b = (z & 2);
ASSERT(s2.b);
s2.b = (bool)(z & 2);
ASSERT(s2.b);
E = true;
ASSERT((E ? 1 : 0) == (!(!E)));
ASSERT((E += 2) == 1);
ASSERT((--E, --E, E) == E);
E = false;
ASSERT((E ? 1 : 0) == (!(!E)));
ASSERT((E += 2) == 1);
ASSERT((--E, --E, E) == E);
E = 0; ASSERT(!E); // sets E to 0
E = 1; ASSERT(E); // sets E to 1
E = 4; ASSERT(E); // sets E to 1
E = 0.5; ASSERT(E); // sets E to 1
E = false;
E++; ASSERT(E); // sets E to 1
E = true;
E++; ASSERT(E); // sets E to 1
E = false;
E--; ASSERT(E); // sets E to 1-E
E = true;
E--; ASSERT(!E); // sets E to 1-E
ASSERT(!s2.b1);
s2.b = true;
fieldassign();
ASSERT(s2.b1);
#endif
}
|