]> git.ozlabs.org Git - ccan/blob - ccan/cppmagic/test/run.c
cppmagic: Logical operations
[ccan] / ccan / cppmagic / test / run.c
1 #include "config.h"
2
3 #include <string.h>
4
5 #include <ccan/cppmagic/cppmagic.h>
6 #include <ccan/tap/tap.h>
7
8 static inline void check1(const char *orig, const char *expand,
9                           const char *match)
10 {
11         ok(strcmp(expand, match) == 0,
12            "%s => %s : %s", orig, expand, match);
13 }
14
15 #define CHECK1(orig, match) \
16         check1(#orig, CPPMAGIC_STRINGIFY(orig), match)
17
18 int main(void)
19 {
20         plan_tests(21);
21
22         CHECK1(CPPMAGIC_NOTHING(), "");
23         CHECK1(CPPMAGIC_GLUE2(a, b), "ab");
24
25         CHECK1(CPPMAGIC_1ST(a), "a");
26         CHECK1(CPPMAGIC_1ST(a, b), "a");
27         CHECK1(CPPMAGIC_1ST(a, b, c), "a");
28
29         CHECK1(CPPMAGIC_2ND(a, b), "b");
30         CHECK1(CPPMAGIC_2ND(a, b, c), "b");
31
32         CHECK1(CPPMAGIC_ISZERO(0), "1");
33         CHECK1(CPPMAGIC_ISZERO(1), "0");
34         CHECK1(CPPMAGIC_ISZERO(123), "0");
35         CHECK1(CPPMAGIC_ISZERO(abc), "0");
36
37         CHECK1(CPPMAGIC_NONZERO(0), "0");
38         CHECK1(CPPMAGIC_NONZERO(1), "1");
39         CHECK1(CPPMAGIC_NONZERO(123), "1");
40         CHECK1(CPPMAGIC_NONZERO(abc), "1");
41
42         CHECK1(CPPMAGIC_NONEMPTY(), "0");
43         CHECK1(CPPMAGIC_NONEMPTY(0), "1");
44         CHECK1(CPPMAGIC_NONEMPTY(a, b, c), "1");
45
46         CHECK1(CPPMAGIC_ISEMPTY(), "1");
47         CHECK1(CPPMAGIC_ISEMPTY(0), "0");
48         CHECK1(CPPMAGIC_ISEMPTY(a, b, c), "0");
49         
50         /* This exits depending on whether all tests passed */
51         return exit_status();
52 }