1 #include "config.h"
2 
3 #include <cassert>
4 #include <string>
5 
6 #include "asserts.h"
7 #include "types.h"
8 
test_u8(void)9 void test_u8(void)
10 {
11 	uint8 u8 = 0;
12 	uint8 u8_old = 0;
13 	unsigned int c = 0;
14 
15 	u8 = 1;
16 	for (c = 0; u8 != u8_old; c++) {
17 		u8_old = u8;
18 		u8 <<= 1;
19 		u8 |= 1;
20 	}
21 
22 	assert(c == 8);
23 }
24 
test_u16(void)25 void test_u16(void)
26 {
27 	uint16 u16 = 0;
28 	uint16 u16_old = 0;
29 	unsigned int c = 0;
30 
31 	u16 = 1;
32 	for (c = 0; u16 != u16_old; c++) {
33 		u16_old = u16;
34 		u16 <<= 1;
35 		u16 |= 1;
36 	}
37 
38 	assert(c == 16);
39 }
40 
test_u32(void)41 void test_u32(void)
42 {
43 	uint32 u32 = 0;
44 	uint32 u32_old = 0;
45 	unsigned int c = 0;
46 
47 	u32 = 1;
48 	for (c = 0; u32 != u32_old; c++) {
49 		u32_old = u32;
50 		u32 <<= 1;
51 		u32 |= 1;
52 	}
53 
54 	assert(c == 32);
55 }
56 
test_u64(void)57 void test_u64(void)
58 {
59 	uint64 u64 = 0;
60 	uint64 u64_old = 0;
61 	unsigned int c = 0;
62 
63 	u64 = 1;
64 	for (c = 0; u64 != u64_old; c++) {
65 		u64_old = u64;
66 		u64 <<= 1;
67 		u64 |= 1;
68 	}
69 
70 	assert(c == 64);
71 }
72 
test_type(void)73 void test_type(void)
74 {
75 	char sc;
76 	unsigned char uc;
77 	short ss;
78 	unsigned short us;
79 	int si;
80 	unsigned int ui;
81 	long sl;
82 	unsigned long ul;
83 	long long sll;
84 	unsigned long long ull;
85 	float f;
86 	double d;
87 	bool b;
88 
89 	assert( is_signed_char(sc));
90 	assert(!is_signed_char(uc));
91 	assert(!is_signed_char(ss));
92 	assert(!is_signed_char(us));
93 	assert(!is_signed_char(si));
94 	assert(!is_signed_char(ui));
95 	assert(!is_signed_char(sl));
96 	assert(!is_signed_char(ul));
97 	assert(!is_signed_char(sll));
98 	assert(!is_signed_char(ull));
99 	assert(!is_signed_char(f));
100 	assert(!is_signed_char(d));
101 	assert(!is_signed_char(b));
102 
103 	assert(!is_unsigned_char(sc));
104 	assert( is_unsigned_char(uc));
105 	assert(!is_unsigned_char(ss));
106 	assert(!is_unsigned_char(us));
107 	assert(!is_unsigned_char(si));
108 	assert(!is_unsigned_char(ui));
109 	assert(!is_unsigned_char(sl));
110 	assert(!is_unsigned_char(ul));
111 	assert(!is_unsigned_char(sll));
112 	assert(!is_unsigned_char(ull));
113 	assert(!is_unsigned_char(f));
114 	assert(!is_unsigned_char(d));
115 	assert(!is_unsigned_char(b));
116 
117 	assert(!is_signed_short(sc));
118 	assert(!is_signed_short(uc));
119 	assert( is_signed_short(ss));
120 	assert(!is_signed_short(us));
121 	assert(!is_signed_short(si));
122 	assert(!is_signed_short(ui));
123 	assert(!is_signed_short(sl));
124 	assert(!is_signed_short(ul));
125 	assert(!is_signed_short(sll));
126 	assert(!is_signed_short(ull));
127 	assert(!is_signed_short(f));
128 	assert(!is_signed_short(d));
129 	assert(!is_signed_short(b));
130 
131 	assert(!is_unsigned_short(sc));
132 	assert(!is_unsigned_short(uc));
133 	assert(!is_unsigned_short(ss));
134 	assert( is_unsigned_short(us));
135 	assert(!is_unsigned_short(si));
136 	assert(!is_unsigned_short(ui));
137 	assert(!is_unsigned_short(sl));
138 	assert(!is_unsigned_short(ul));
139 	assert(!is_unsigned_short(sll));
140 	assert(!is_unsigned_short(ull));
141 	assert(!is_unsigned_short(f));
142 	assert(!is_unsigned_short(d));
143 	assert(!is_unsigned_short(b));
144 
145 	assert(!is_signed_int(sc));
146 	assert(!is_signed_int(uc));
147 	assert(!is_signed_int(ss));
148 	assert(!is_signed_int(us));
149 	assert( is_signed_int(si));
150 	assert(!is_signed_int(ui));
151 	assert(!is_signed_int(sl));
152 	assert(!is_signed_int(ul));
153 	assert(!is_signed_int(sll));
154 	assert(!is_signed_int(ull));
155 	assert(!is_signed_int(f));
156 	assert(!is_signed_int(d));
157 	assert(!is_signed_int(b));
158 
159 	assert(!is_unsigned_int(sc));
160 	assert(!is_unsigned_int(uc));
161 	assert(!is_unsigned_int(ss));
162 	assert(!is_unsigned_int(us));
163 	assert(!is_unsigned_int(si));
164 	assert( is_unsigned_int(ui));
165 	assert(!is_unsigned_int(sl));
166 	assert(!is_unsigned_int(ul));
167 	assert(!is_unsigned_int(sll));
168 	assert(!is_unsigned_int(ull));
169 	assert(!is_unsigned_int(f));
170 	assert(!is_unsigned_int(d));
171 	assert(!is_unsigned_int(b));
172 
173 	assert(!is_signed_long(sc));
174 	assert(!is_signed_long(uc));
175 	assert(!is_signed_long(ss));
176 	assert(!is_signed_long(us));
177 	assert(!is_signed_long(si));
178 	assert(!is_signed_long(ui));
179 	assert( is_signed_long(sl));
180 	assert(!is_signed_long(ul));
181 	assert(!is_signed_long(sll));
182 	assert(!is_signed_long(ull));
183 	assert(!is_signed_long(f));
184 	assert(!is_signed_long(d));
185 	assert(!is_signed_long(b));
186 
187 	assert(!is_unsigned_long(sc));
188 	assert(!is_unsigned_long(uc));
189 	assert(!is_unsigned_long(ss));
190 	assert(!is_unsigned_long(us));
191 	assert(!is_unsigned_long(si));
192 	assert(!is_unsigned_long(ui));
193 	assert(!is_unsigned_long(sl));
194 	assert( is_unsigned_long(ul));
195 	assert(!is_unsigned_long(sll));
196 	assert(!is_unsigned_long(ull));
197 	assert(!is_unsigned_long(f));
198 	assert(!is_unsigned_long(d));
199 	assert(!is_unsigned_long(b));
200 
201 	assert(!is_signed_long_long(sc));
202 	assert(!is_signed_long_long(uc));
203 	assert(!is_signed_long_long(ss));
204 	assert(!is_signed_long_long(us));
205 	assert(!is_signed_long_long(si));
206 	assert(!is_signed_long_long(ui));
207 	assert(!is_signed_long_long(sl));
208 	assert(!is_signed_long_long(ul));
209 	assert( is_signed_long_long(sll));
210 	assert(!is_signed_long_long(ull));
211 	assert(!is_signed_long_long(f));
212 	assert(!is_signed_long_long(d));
213 	assert(!is_signed_long_long(b));
214 
215 	assert(!is_unsigned_long_long(sc));
216 	assert(!is_unsigned_long_long(uc));
217 	assert(!is_unsigned_long_long(ss));
218 	assert(!is_unsigned_long_long(us));
219 	assert(!is_unsigned_long_long(si));
220 	assert(!is_unsigned_long_long(ui));
221 	assert(!is_unsigned_long_long(sl));
222 	assert(!is_unsigned_long_long(ul));
223 	assert(!is_unsigned_long_long(sll));
224 	assert( is_unsigned_long_long(ull));
225 	assert(!is_unsigned_long_long(f));
226 	assert(!is_unsigned_long_long(d));
227 	assert(!is_unsigned_long_long(b));
228 
229 	assert(!is_float(sc));
230 	assert(!is_float(uc));
231 	assert(!is_float(ss));
232 	assert(!is_float(us));
233 	assert(!is_float(si));
234 	assert(!is_float(ui));
235 	assert(!is_float(sl));
236 	assert(!is_float(ul));
237 	assert(!is_float(sll));
238 	assert(!is_float(ull));
239 	assert( is_float(f));
240 	assert(!is_float(d));
241 	assert(!is_float(b));
242 
243 	assert(!is_double(sc));
244 	assert(!is_double(uc));
245 	assert(!is_double(ss));
246 	assert(!is_double(us));
247 	assert(!is_double(si));
248 	assert(!is_double(ui));
249 	assert(!is_double(sl));
250 	assert(!is_double(ul));
251 	assert(!is_double(sll));
252 	assert(!is_double(ull));
253 	assert(!is_double(f));
254 	assert( is_double(d));
255 	assert(!is_double(b));
256 
257 	assert(!is_bool(sc));
258 	assert(!is_bool(uc));
259 	assert(!is_bool(ss));
260 	assert(!is_bool(us));
261 	assert(!is_bool(si));
262 	assert(!is_bool(ui));
263 	assert(!is_bool(sl));
264 	assert(!is_bool(ul));
265 	assert(!is_bool(sll));
266 	assert(!is_bool(ull));
267 	assert(!is_bool(f));
268 	assert(!is_bool(d));
269 	assert( is_bool(b));
270 
271 	assert(static_cast<std::string>(type_name(sc)) == "char");
272 	assert(static_cast<std::string>(type_name(uc)) == "unsigned char");
273 	assert(static_cast<std::string>(type_name(ss)) == "short");
274 	assert(static_cast<std::string>(type_name(us)) == "unsigned short");
275 	assert(static_cast<std::string>(type_name(si)) == "int");
276 	assert(static_cast<std::string>(type_name(ui)) == "unsigned int");
277 	assert(static_cast<std::string>(type_name(sl)) == "long");
278 	assert(static_cast<std::string>(type_name(ul)) == "unsigned long");
279 	assert(static_cast<std::string>(type_name(sll)) == "long long");
280 	assert(static_cast<std::string>(type_name(ull)) == "unsigned long long");
281 	assert(static_cast<std::string>(type_name(f)) == "float");
282 	assert(static_cast<std::string>(type_name(d)) == "double");
283 	assert(static_cast<std::string>(type_name(b)) == "bool");
284 }
285 
main(int argc,char const * argv[])286 int main(int argc, char const * argv[])
287 {
288 	test_u8();
289 	test_u16();
290 	test_u32();
291 	test_u64();
292 	test_type();
293 	return(0);
294 }
295