add a 'void* extra' parameter to the DUMP macros
[nobug] / tests / test_nobug.c
1 #include "test.h"
2 #include "nobug.h"
3
4 struct foo
5 {
6   char b;
7   struct foo* bar;
8 };
9
10 void foo_invariant (struct foo* self, int depth, const struct nobug_context invariant_context)
11 {
12   if (!depth) return;
13
14   INVARIANT_ASSERT(self->b != 8);
15
16   if (self->bar)
17     foo_invariant (self->bar, depth-1, invariant_context);
18 }
19
20 void nobug_foo_dump (const struct foo* self, const int depth, const struct nobug_context dump_context, void* extra)
21 {
22   if (self && depth)
23     {
24       DUMP_LOG("dump b is %d", self->b);
25
26       nobug_foo_dump (self->bar, depth-1, dump_context, extra);
27     }
28 }
29
30 NOBUG_DEFINE_FLAG(all);
31 NOBUG_DEFINE_FLAG_PARENT(test, all);
32
33
34 TESTS_BEGIN
35
36 int c = 0;
37
38 NOBUG_INIT_FLAG(test);
39 TRACE(test);
40
41 if (argc > 1)
42   c = atoi(argv[1]);
43
44 ECHO ("testing %d", c);
45
46 #if NOBUG_MODE_RELEASE == 0
47 UNCHECKED;
48 #endif
49
50 TEST(1)
51 {
52   REQUIRE (c != 1);
53 }
54
55
56 TEST(2)
57 {
58   REQUIRE (c != 2, "require %d failed", c);
59 }
60
61 TEST(3)
62 {
63   ENSURE(c != 3);
64 }
65
66 TEST(4)
67 {
68   ENSURE(c != 4, "ensure %d failed", c);
69 }
70
71 TEST(5)
72 {
73   ASSERT(c != 5);
74 }
75
76 TEST(6)
77 {
78   ASSERT(c != 6, "assert %d failed", c);
79 }
80
81 TEST(7)
82 {
83   CHECK(c != 7);
84 }
85
86 TEST(8)
87 {
88   struct foo f;
89   f.b = c;
90   f.bar = NULL;
91
92   INVARIANT(foo, &f, 2);
93 }
94
95
96 TEST(11)
97 {
98   struct foo f;
99   f.b = c;
100   f.bar = NULL;
101
102   DUMP(test, foo, &f, 2, NULL);
103 }
104
105
106 #if NOBUG_MODE_RELEASE == 0
107 TEST(13)
108 {
109   UNIMPLEMENTED("this is unimplemented");
110 }
111 #endif
112
113 TEST(14)
114 {
115   PLANNED("this is planned");
116 }
117
118 #if NOBUG_MODE_ALPHA == 1
119 TEST(15)
120 {
121   FIXME("here is a bug");
122 }
123 #endif
124
125 #if NOBUG_MODE_RELEASE == 0
126 TEST(16)
127 {
128   TODO("something todo");
129 }
130 #endif
131
132 TEST(17)
133 {
134   BACKTRACE;
135 }
136
137 TESTS_END