annotate tests/test-action.c @ 402:d3fa956cdaf0

core: add alloc_sdupf
author David Demelier <markand@malikania.fr>
date Wed, 30 Mar 2022 15:06:55 +0200
parents e6d7ebad33cc
children e6f972e04519
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * test-action.c -- test actions
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
378
460c78706989 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 369
diff changeset
4 * Copyright (c) 2020-2022 David Demelier <markand@malikania.fr>
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
19 #include <rexo.h>
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <core/action.h>
369
1e06f871dc63 core: split action and action_stack
David Demelier <markand@malikania.fr>
parents: 336
diff changeset
22 #include <core/action-stack.h>
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <core/event.h>
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 struct invokes {
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
26 int handle;
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
27 int update;
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
28 int draw;
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
29 int end;
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
30 int finish;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 };
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
32
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 static union event dummy;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
34
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 #define INIT(dat, up) { \
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 .data = (dat), \
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 .handle = my_handle, \
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 .update = (up), \
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 .draw = my_draw, \
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 .end = my_end, \
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 .finish = my_finish \
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 my_handle(struct action *act, const union event *ev)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 (void)ev;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
49 ((struct invokes *)act->data)->handle = 1;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
52 static int
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 my_update_false(struct action *act, unsigned int ticks)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 (void)ticks;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
56
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
57 ((struct invokes *)act->data)->update = 1;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
58
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
59 return 0;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
62 static int
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 my_update_true(struct action *act, unsigned int ticks)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 (void)ticks;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
66
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
67 ((struct invokes *)act->data)->update = 1;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
68
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
69 return 1;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
71
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 my_draw(struct action *act)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 {
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
75 ((struct invokes *)act->data)->draw = 1;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
77
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 my_end(struct action *act)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 {
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
81 ((struct invokes *)act->data)->end = 1;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
83
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 static void
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 my_finish(struct action *act)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 {
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
87 ((struct invokes *)act->data)->finish = 1;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
89
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
90 RX_TEST_CASE(basics, handle)
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 struct invokes inv = {0};
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 struct action act = INIT(&inv, my_update_true);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
94
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 action_handle(&act, &dummy);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
96
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
97 RX_REQUIRE(inv.handle);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
98 RX_REQUIRE(!inv.update);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
99 RX_REQUIRE(!inv.draw);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
100 RX_REQUIRE(!inv.end);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
101 RX_REQUIRE(!inv.finish);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
103
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
104 RX_TEST_CASE(basics, update)
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 struct {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 struct invokes inv;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 struct action act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 } table[] = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 { .act = INIT(&table[0], my_update_true) },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 { .act = INIT(&table[1], my_update_false) }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 };
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
113
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 /* True version. */
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
115 RX_REQUIRE(action_update(&table[0].act, 0));
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
116 RX_REQUIRE(!table[0].inv.handle);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
117 RX_REQUIRE(table[0].inv.update);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
118 RX_REQUIRE(!table[0].inv.draw);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
119 RX_REQUIRE(!table[0].inv.end);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
120 RX_REQUIRE(!table[0].inv.finish);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
121
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 /* False version. */
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
123 RX_REQUIRE(!action_update(&table[1].act, 0));
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
124 RX_REQUIRE(!table[1].inv.handle);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
125 RX_REQUIRE(table[1].inv.update);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
126 RX_REQUIRE(!table[1].inv.draw);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
127 RX_REQUIRE(!table[1].inv.end);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
128 RX_REQUIRE(!table[1].inv.finish);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
130
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
131 RX_TEST_CASE(basics, draw)
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 {
142
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
133 struct invokes inv = {0};
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 struct action act = INIT(&inv, my_update_true);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
135
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 action_draw(&act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
137
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
138 RX_REQUIRE(!inv.handle);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
139 RX_REQUIRE(!inv.update);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
140 RX_REQUIRE(inv.draw);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
141 RX_REQUIRE(!inv.end);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
142 RX_REQUIRE(!inv.finish);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
144
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
145 RX_TEST_CASE(basics, end)
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 {
142
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
147 struct invokes inv = {0};
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 struct action act = INIT(&inv, my_update_true);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
149
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 action_end(&act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
151
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
152 RX_REQUIRE(!inv.handle);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
153 RX_REQUIRE(!inv.update);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
154 RX_REQUIRE(!inv.draw);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
155 RX_REQUIRE(inv.end);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
156 RX_REQUIRE(!inv.finish);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
158
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
159 RX_TEST_CASE(basics, finish)
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 {
142
fea0cc899931 core: drawable_stack_update returns a bool (similar to action_stack_update)
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
161 struct invokes inv = {0};
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 struct action act = INIT(&inv, my_update_true);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
163
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 action_finish(&act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
165
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
166 RX_REQUIRE(!inv.handle);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
167 RX_REQUIRE(!inv.update);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
168 RX_REQUIRE(!inv.draw);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
169 RX_REQUIRE(!inv.end);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
170 RX_REQUIRE(inv.finish);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
172
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
173 RX_TEST_CASE(stack, add)
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 {
392
e6d7ebad33cc core: don't use fixed arrays in action_stack
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
175 struct action *actions[10];
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 struct action_stack st = {0};
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 struct action act = {0};
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
178
392
e6d7ebad33cc core: don't use fixed arrays in action_stack
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
179 action_stack_init(&st, actions, 10);
e6d7ebad33cc core: don't use fixed arrays in action_stack
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
180
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
181 RX_INT_REQUIRE_EQUAL(action_stack_add(&st, &act), 0);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
182
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 /* Now fill up. */
392
e6d7ebad33cc core: don't use fixed arrays in action_stack
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
184 for (int i = 0; i < 9; ++i)
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
185 RX_INT_REQUIRE_EQUAL(action_stack_add(&st, &act), 0);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
186
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 /* This one should not fit in. */
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
188 RX_INT_REQUIRE_EQUAL(action_stack_add(&st, &act), -1);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
190
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
191 RX_TEST_CASE(stack, handle)
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 struct {
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
194 int called;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 struct action act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 } table[] = {
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
197 { 0, { .data = &table[0].called, .handle = my_handle } },
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
198 { 0, { .data = &table[1].called, .handle = my_handle } },
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
199 { 0, { .data = &table[2].called, .handle = my_handle } },
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 };
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
201
392
e6d7ebad33cc core: don't use fixed arrays in action_stack
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
202 struct action *actions[10];
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 struct action_stack st = {0};
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
204
392
e6d7ebad33cc core: don't use fixed arrays in action_stack
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
205 action_stack_init(&st, actions, 10);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 action_stack_add(&st, &table[0].act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 action_stack_add(&st, &table[1].act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 action_stack_add(&st, &table[2].act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 action_stack_handle(&st, &dummy);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
210
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
211 RX_REQUIRE(table[0].called);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
212 RX_REQUIRE(table[1].called);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
213 RX_REQUIRE(table[2].called);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
215
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
216 RX_TEST_CASE(stack, update)
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 struct {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 struct invokes inv;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 struct action act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 } table[] = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 { .act = INIT(&table[0], my_update_false) },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 { .act = INIT(&table[1], my_update_true) },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
224 { .act = INIT(&table[2], my_update_false) },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
225 { .act = INIT(&table[3], my_update_false) },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 { .act = INIT(&table[4], my_update_true) },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 { .act = INIT(&table[5], my_update_true) },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
228 { .act = INIT(&table[6], my_update_false) },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 };
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
230
392
e6d7ebad33cc core: don't use fixed arrays in action_stack
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
231 struct action *actions[10];
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 struct action_stack st = {0};
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
233
392
e6d7ebad33cc core: don't use fixed arrays in action_stack
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
234 action_stack_init(&st, actions, 10);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 action_stack_add(&st, &table[0].act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
236 action_stack_add(&st, &table[1].act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 action_stack_add(&st, &table[2].act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 action_stack_add(&st, &table[3].act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
239 action_stack_add(&st, &table[4].act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 action_stack_add(&st, &table[5].act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 action_stack_add(&st, &table[6].act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
242
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
243 RX_REQUIRE(!action_stack_update(&st, 0));
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
244
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
245 RX_REQUIRE(!table[0].inv.handle);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
246 RX_REQUIRE(!table[1].inv.handle);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
247 RX_REQUIRE(!table[2].inv.handle);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
248 RX_REQUIRE(!table[3].inv.handle);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
249 RX_REQUIRE(!table[4].inv.handle);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
250 RX_REQUIRE(!table[5].inv.handle);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
251 RX_REQUIRE(!table[6].inv.handle);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
252
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
253 RX_REQUIRE(table[0].inv.update);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
254 RX_REQUIRE(table[1].inv.update);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
255 RX_REQUIRE(table[2].inv.update);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
256 RX_REQUIRE(table[3].inv.update);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
257 RX_REQUIRE(table[4].inv.update);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
258 RX_REQUIRE(table[5].inv.update);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
259 RX_REQUIRE(table[6].inv.update);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
260
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
261 RX_REQUIRE(!table[0].inv.draw);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
262 RX_REQUIRE(!table[1].inv.draw);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
263 RX_REQUIRE(!table[2].inv.draw);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
264 RX_REQUIRE(!table[3].inv.draw);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
265 RX_REQUIRE(!table[4].inv.draw);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
266 RX_REQUIRE(!table[5].inv.draw);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
267 RX_REQUIRE(!table[6].inv.draw);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
268
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
269 RX_REQUIRE(!table[0].inv.end);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
270 RX_REQUIRE(table[1].inv.end);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
271 RX_REQUIRE(!table[2].inv.end);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
272 RX_REQUIRE(!table[3].inv.end);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
273 RX_REQUIRE(table[4].inv.end);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
274 RX_REQUIRE(table[5].inv.end);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
275 RX_REQUIRE(!table[6].inv.end);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
276
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
277 RX_REQUIRE(!table[0].inv.finish);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
278 RX_REQUIRE(table[1].inv.finish);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
279 RX_REQUIRE(!table[2].inv.finish);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
280 RX_REQUIRE(!table[3].inv.finish);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
281 RX_REQUIRE(table[4].inv.finish);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
282 RX_REQUIRE(table[5].inv.finish);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
283 RX_REQUIRE(!table[6].inv.finish);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
284
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
285 /* The following must still be there. */
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
286 RX_PTR_REQUIRE_EQUAL(st.actions[0], &table[0].act);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
287 RX_PTR_REQUIRE_EQUAL(st.actions[2], &table[2].act);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
288 RX_PTR_REQUIRE_EQUAL(st.actions[3], &table[3].act);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
289 RX_PTR_REQUIRE_EQUAL(st.actions[6], &table[6].act);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
290
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
291 /* The following must have been NULL-ed. */
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
292 RX_PTR_REQUIRE_EQUAL(st.actions[1], NULL);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
293 RX_PTR_REQUIRE_EQUAL(st.actions[4], NULL);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
294 RX_PTR_REQUIRE_EQUAL(st.actions[5], NULL);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
295
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
296 /*
298
196264679079 misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents: 142
diff changeset
297 * Now make all actions to return 1 and check if it cleans the stack.
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
298 */
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
299 table[0].act.update =
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
300 table[2].act.update =
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
301 table[3].act.update =
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
302 table[6].act.update = my_update_true;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
303
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
304 RX_REQUIRE(action_stack_update(&st, 0));
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
305 RX_PTR_REQUIRE_EQUAL(st.actions[0], NULL);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
306 RX_PTR_REQUIRE_EQUAL(st.actions[1], NULL);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
307 RX_PTR_REQUIRE_EQUAL(st.actions[2], NULL);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
308 RX_PTR_REQUIRE_EQUAL(st.actions[3], NULL);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
309 RX_PTR_REQUIRE_EQUAL(st.actions[4], NULL);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
310 RX_PTR_REQUIRE_EQUAL(st.actions[5], NULL);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
311 RX_PTR_REQUIRE_EQUAL(st.actions[6], NULL);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
312 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
313
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
314 RX_TEST_CASE(stack, finish)
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
315 {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
316 struct {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
317 struct invokes inv;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
318 struct action act;
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
319 } table[] = {
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
320 { .act = INIT(&table[0], my_update_true) },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
321 { .act = INIT(&table[0], my_update_false) },
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
322 };
392
e6d7ebad33cc core: don't use fixed arrays in action_stack
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
323
e6d7ebad33cc core: don't use fixed arrays in action_stack
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
324 struct action *actions[10];
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
325 struct action_stack st = {0};
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
326
392
e6d7ebad33cc core: don't use fixed arrays in action_stack
David Demelier <markand@malikania.fr>
parents: 378
diff changeset
327 action_stack_init(&st, actions, 10);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
328 action_stack_add(&st, &table[0].act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
329 action_stack_add(&st, &table[1].act);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
330 action_stack_finish(&st);
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
331
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
332 RX_REQUIRE(!table[0].inv.handle);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
333 RX_REQUIRE(!table[0].inv.update);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
334 RX_REQUIRE(!table[0].inv.draw);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
335 RX_REQUIRE(table[0].inv.end);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
336 RX_REQUIRE(table[0].inv.finish);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
337
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
338 RX_REQUIRE(!table[0].inv.handle);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
339 RX_REQUIRE(!table[0].inv.update);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
340 RX_REQUIRE(!table[0].inv.draw);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
341 RX_REQUIRE(table[0].inv.end);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
342 RX_REQUIRE(table[0].inv.finish);
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
343 }
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
344
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
345 int
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
346 main(int argc, char **argv)
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
347 {
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
348 return rx_main(0, NULL, argc, (const char **)argv) == RX_SUCCESS ? 0 : 1;
136
30b68089ae70 core: rework actions and a bit of drawables, closes #2492
David Demelier <markand@malikania.fr>
parents:
diff changeset
349 }