annotate tests/test-drawable.c @ 143:4f4795cba52f

tests: forgot to add file
author David Demelier <markand@malikania.fr>
date Wed, 14 Oct 2020 14:52:26 +0200
parents
children 196264679079
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
143
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * test-action.c -- test actions
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr>
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #define GREATEST_USE_ABBREVS 0
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <greatest.h>
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <core/drawable.h>
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <core/event.h>
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 struct invokes {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 bool update;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 bool draw;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 bool end;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 bool finish;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 };
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 #define INIT(dat, up) { \
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 .data = (dat), \
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 .update = (up), \
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 .draw = my_draw, \
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 .end = my_end, \
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 .finish = my_finish \
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
39
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 static bool
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 my_update_false(struct drawable *dw, unsigned int ticks)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 (void)ticks;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
44
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 ((struct invokes *)dw->data)->update = true;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
46
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 return false;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
49
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 static bool
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 my_update_true(struct drawable *dw, unsigned int ticks)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 (void)ticks;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 ((struct invokes *)dw->data)->update = true;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
56
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 return true;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
59
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 static void
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 my_draw(struct drawable *dw)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 ((struct invokes *)dw->data)->draw = true;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
65
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 static void
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 my_end(struct drawable *dw)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 ((struct invokes *)dw->data)->end = true;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
71
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 static void
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 my_finish(struct drawable *dw)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 ((struct invokes *)dw->data)->finish = true;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
77
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 GREATEST_TEST
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 basics_update(void)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 struct {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 struct invokes inv;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 struct drawable dw;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 } table[] = {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 { .dw = INIT(&table[0], my_update_true) },
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 { .dw = INIT(&table[1], my_update_false) }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 };
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 /* True version. */
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 GREATEST_ASSERT(drawable_update(&table[0].dw, 0));
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 GREATEST_ASSERT(table[0].inv.update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 GREATEST_ASSERT(!table[0].inv.draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 GREATEST_ASSERT(!table[0].inv.end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 GREATEST_ASSERT(!table[0].inv.finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 /* False version. */
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 GREATEST_ASSERT(!drawable_update(&table[1].dw, 0));
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 GREATEST_ASSERT(table[1].inv.update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 GREATEST_ASSERT(!table[1].inv.draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 GREATEST_ASSERT(!table[1].inv.end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 GREATEST_ASSERT(!table[1].inv.finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
102
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 GREATEST_PASS();
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
105
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 GREATEST_TEST
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 basics_draw(void)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 struct invokes inv = {0};
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 struct drawable dw = INIT(&inv, my_update_true);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
111
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 drawable_draw(&dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
113
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 GREATEST_ASSERT(!inv.update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 GREATEST_ASSERT(inv.draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 GREATEST_ASSERT(!inv.end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 GREATEST_ASSERT(!inv.finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 GREATEST_PASS();
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
120
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 GREATEST_TEST
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 basics_end(void)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 struct invokes inv = {0};
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 struct drawable dw = INIT(&inv, my_update_true);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
126
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 drawable_end(&dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
128
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 GREATEST_ASSERT(!inv.update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 GREATEST_ASSERT(!inv.draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 GREATEST_ASSERT(inv.end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 GREATEST_ASSERT(!inv.finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 GREATEST_PASS();
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
135
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 GREATEST_TEST
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 basics_finish(void)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 struct invokes inv = {0};
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 struct drawable dw = INIT(&inv, my_update_true);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
141
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 drawable_finish(&dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
143
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 GREATEST_ASSERT(!inv.update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 GREATEST_ASSERT(!inv.draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 GREATEST_ASSERT(!inv.end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 GREATEST_ASSERT(inv.finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 GREATEST_PASS();
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
150
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 GREATEST_SUITE(suite_basics)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 GREATEST_RUN_TEST(basics_update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 GREATEST_RUN_TEST(basics_draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 GREATEST_RUN_TEST(basics_end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 GREATEST_RUN_TEST(basics_finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
158
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 GREATEST_TEST
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 stack_add(void)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 struct drawable_stack st = {0};
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 struct drawable dw = {0};
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
164
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 GREATEST_ASSERT(drawable_stack_add(&st, &dw));
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
166
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 /* Now fill up. */
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 for (int i = 0; i < DRAWABLE_STACK_MAX - 1; ++i)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 GREATEST_ASSERT(drawable_stack_add(&st, &dw));
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
170
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 /* This one should not fit in. */
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 GREATEST_ASSERT(!drawable_stack_add(&st, &dw));
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
173
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 GREATEST_PASS();
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
176
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 GREATEST_TEST
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 stack_update(void)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 struct {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 struct invokes inv;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 struct drawable dw;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 } table[] = {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 { .dw = INIT(&table[0], my_update_false) },
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 { .dw = INIT(&table[1], my_update_true) },
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 { .dw = INIT(&table[2], my_update_false) },
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 { .dw = INIT(&table[3], my_update_false) },
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 { .dw = INIT(&table[4], my_update_true) },
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 { .dw = INIT(&table[5], my_update_true) },
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 { .dw = INIT(&table[6], my_update_false) },
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 };
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
192
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 struct drawable_stack st = {0};
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
194
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 drawable_stack_add(&st, &table[0].dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 drawable_stack_add(&st, &table[1].dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 drawable_stack_add(&st, &table[2].dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 drawable_stack_add(&st, &table[3].dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 drawable_stack_add(&st, &table[4].dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 drawable_stack_add(&st, &table[5].dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 drawable_stack_add(&st, &table[6].dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
202
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 GREATEST_ASSERT(!drawable_stack_update(&st, 0));
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
204
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 GREATEST_ASSERT(table[0].inv.update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 GREATEST_ASSERT(table[1].inv.update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 GREATEST_ASSERT(table[2].inv.update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 GREATEST_ASSERT(table[3].inv.update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 GREATEST_ASSERT(table[4].inv.update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 GREATEST_ASSERT(table[5].inv.update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 GREATEST_ASSERT(table[6].inv.update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
212
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 GREATEST_ASSERT(!table[0].inv.draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 GREATEST_ASSERT(!table[1].inv.draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 GREATEST_ASSERT(!table[2].inv.draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 GREATEST_ASSERT(!table[3].inv.draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 GREATEST_ASSERT(!table[4].inv.draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 GREATEST_ASSERT(!table[5].inv.draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 GREATEST_ASSERT(!table[6].inv.draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
220
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 GREATEST_ASSERT(!table[0].inv.end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 GREATEST_ASSERT(table[1].inv.end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 GREATEST_ASSERT(!table[2].inv.end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
224 GREATEST_ASSERT(!table[3].inv.end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 GREATEST_ASSERT(table[4].inv.end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 GREATEST_ASSERT(table[5].inv.end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 GREATEST_ASSERT(!table[6].inv.end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
228
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 GREATEST_ASSERT(!table[0].inv.finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 GREATEST_ASSERT(table[1].inv.finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 GREATEST_ASSERT(!table[2].inv.finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 GREATEST_ASSERT(!table[3].inv.finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 GREATEST_ASSERT(table[4].inv.finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 GREATEST_ASSERT(table[5].inv.finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 GREATEST_ASSERT(!table[6].inv.finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
236
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 /* The following must still be there. */
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 GREATEST_ASSERT_EQ(st.objects[0], &table[0].dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 GREATEST_ASSERT_EQ(st.objects[2], &table[2].dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 GREATEST_ASSERT_EQ(st.objects[3], &table[3].dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 GREATEST_ASSERT_EQ(st.objects[6], &table[6].dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
242
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
243 /* The following must have been NULL-ed. */
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 GREATEST_ASSERT_EQ(st.objects[1], NULL);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 GREATEST_ASSERT_EQ(st.objects[4], NULL);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
246 GREATEST_ASSERT_EQ(st.objects[5], NULL);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
247
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 /*
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
249 * Now make all actions to return true and check if it cleans the stack.
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 */
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 table[0].dw.update =
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
252 table[2].dw.update =
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 table[3].dw.update =
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
254 table[6].dw.update = my_update_true;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
255
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
256 GREATEST_ASSERT(drawable_stack_update(&st, 0));
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 GREATEST_ASSERT_EQ(st.objects[0], NULL);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
258 GREATEST_ASSERT_EQ(st.objects[1], NULL);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
259 GREATEST_ASSERT_EQ(st.objects[2], NULL);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 GREATEST_ASSERT_EQ(st.objects[3], NULL);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
261 GREATEST_ASSERT_EQ(st.objects[4], NULL);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 GREATEST_ASSERT_EQ(st.objects[5], NULL);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 GREATEST_ASSERT_EQ(st.objects[6], NULL);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
264
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 GREATEST_PASS();
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
266 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
267
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
268 GREATEST_TEST
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
269 stack_finish(void)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
270 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
271 struct {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
272 struct invokes inv;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
273 struct drawable dw;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
274 } table[] = {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
275 { .dw = INIT(&table[0], my_update_true) },
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
276 { .dw = INIT(&table[0], my_update_false) },
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
277 };
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
278 struct drawable_stack st = {0};
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
279
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
280 drawable_stack_add(&st, &table[0].dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
281 drawable_stack_add(&st, &table[1].dw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
282 drawable_stack_finish(&st);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
283
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
284 GREATEST_ASSERT(!table[0].inv.update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
285 GREATEST_ASSERT(!table[0].inv.draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
286 GREATEST_ASSERT(table[0].inv.end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
287 GREATEST_ASSERT(table[0].inv.finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
288
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
289 GREATEST_ASSERT(!table[0].inv.update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
290 GREATEST_ASSERT(!table[0].inv.draw);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
291 GREATEST_ASSERT(table[0].inv.end);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 GREATEST_ASSERT(table[0].inv.finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
293
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
294 /* They should also be NULL'ed. */
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
295 GREATEST_ASSERT_EQ(st.objects[0], NULL);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
296 GREATEST_ASSERT_EQ(st.objects[1], NULL);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
297
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
298 GREATEST_PASS();
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
299 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
300
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
301 GREATEST_SUITE(suite_stack)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
302 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
303 GREATEST_RUN_TEST(stack_add);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
304 GREATEST_RUN_TEST(stack_update);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
305 GREATEST_RUN_TEST(stack_finish);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
306 }
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
307
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
308 GREATEST_MAIN_DEFS();
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
309
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
310 int
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
311 main(int argc, char **argv)
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
312 {
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
313 GREATEST_MAIN_BEGIN();
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 GREATEST_RUN_SUITE(suite_basics);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
315 GREATEST_RUN_SUITE(suite_stack);
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
316 GREATEST_MAIN_END();
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
317
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
318 return 0;
4f4795cba52f tests: forgot to add file
David Demelier <markand@malikania.fr>
parents:
diff changeset
319 }