diff tests/test-action-script.c @ 480:c1f64d451230

core: mlk_action has a start callback
author David Demelier <markand@malikania.fr>
date Mon, 27 Feb 2023 17:26:00 +0100
parents 39dd7c66ebfd
children d3ea59fce7dc
line wrap: on
line diff
--- a/tests/test-action-script.c	Mon Feb 27 16:33:33 2023 +0100
+++ b/tests/test-action-script.c	Mon Feb 27 17:26:00 2023 +0100
@@ -24,6 +24,7 @@
 #include <dt.h>
 
 struct invokes {
+	int start;
 	int handle;
 	int update;
 	int draw;
@@ -33,6 +34,7 @@
 
 #define INIT(dat, up) {         \
 	.data = (dat),          \
+	.start = my_start,      \
 	.handle = my_handle,    \
 	.update = (up),         \
 	.draw = my_draw,        \
@@ -41,6 +43,12 @@
 }
 
 static void
+my_start(struct mlk_action *act)
+{
+	((struct invokes *)act->data)->start++;
+}
+
+static void
 my_handle(struct mlk_action *act, const union mlk_event *ev)
 {
 	(void)ev;
@@ -238,18 +246,23 @@
 	DT_ASSERT(mlk_action_script_append(&sc, &table[1].act) == 0);
 	DT_ASSERT(mlk_action_script_append(&sc, &table[2].act) == 0);
 
+	mlk_action_script_start(&sc);
+
 	/* 0 -> 1 */
 	DT_ASSERT(!mlk_action_script_update(&sc, 0));
+	DT_EQ_INT(table[0].inv.start, 1);
 	DT_EQ_INT(table[0].inv.handle, 0);
 	DT_EQ_INT(table[0].inv.update, 1);
 	DT_EQ_INT(table[0].inv.draw, 0);
 	DT_EQ_INT(table[0].inv.end, 1);
 	DT_EQ_INT(table[0].inv.finish, 0);
+	DT_EQ_INT(table[1].inv.start, 1);
 	DT_EQ_INT(table[1].inv.handle, 0);
 	DT_EQ_INT(table[1].inv.update, 0);
 	DT_EQ_INT(table[1].inv.draw, 0);
 	DT_EQ_INT(table[1].inv.end, 0);
 	DT_EQ_INT(table[1].inv.finish, 0);
+	DT_EQ_INT(table[2].inv.start, 0);
 	DT_EQ_INT(table[2].inv.handle, 0);
 	DT_EQ_INT(table[2].inv.update, 0);
 	DT_EQ_INT(table[2].inv.draw, 0);
@@ -258,16 +271,19 @@
 
 	/* 1 -> 2 */
 	DT_ASSERT(!mlk_action_script_update(&sc, 0));
+	DT_EQ_INT(table[0].inv.start, 1);
 	DT_EQ_INT(table[0].inv.handle, 0);
 	DT_EQ_INT(table[0].inv.update, 1);
 	DT_EQ_INT(table[0].inv.draw, 0);
 	DT_EQ_INT(table[0].inv.end, 1);
 	DT_EQ_INT(table[0].inv.finish, 0);
+	DT_EQ_INT(table[1].inv.start, 1);
 	DT_EQ_INT(table[1].inv.handle, 0);
 	DT_EQ_INT(table[1].inv.update, 1);
 	DT_EQ_INT(table[1].inv.draw, 0);
 	DT_EQ_INT(table[1].inv.end, 1);
 	DT_EQ_INT(table[1].inv.finish, 0);
+	DT_EQ_INT(table[2].inv.start, 1);
 	DT_EQ_INT(table[2].inv.handle, 0);
 	DT_EQ_INT(table[2].inv.update, 0);
 	DT_EQ_INT(table[2].inv.draw, 0);
@@ -278,16 +294,19 @@
 	DT_ASSERT(!mlk_action_script_update(&sc, 0));
 	DT_ASSERT(!mlk_action_script_update(&sc, 0));
 	DT_ASSERT(!mlk_action_script_update(&sc, 0));
+	DT_EQ_INT(table[0].inv.start, 1);
 	DT_EQ_INT(table[0].inv.handle, 0);
 	DT_EQ_INT(table[0].inv.update, 1);
 	DT_EQ_INT(table[0].inv.draw, 0);
 	DT_EQ_INT(table[0].inv.end, 1);
 	DT_EQ_INT(table[0].inv.finish, 0);
+	DT_EQ_INT(table[1].inv.start, 1);
 	DT_EQ_INT(table[1].inv.handle, 0);
 	DT_EQ_INT(table[1].inv.update, 1);
 	DT_EQ_INT(table[1].inv.draw, 0);
 	DT_EQ_INT(table[1].inv.end, 1);
 	DT_EQ_INT(table[1].inv.finish, 0);
+	DT_EQ_INT(table[2].inv.start, 1);
 	DT_EQ_INT(table[2].inv.handle, 0);
 	DT_EQ_INT(table[2].inv.update, 3);
 	DT_EQ_INT(table[2].inv.draw, 0);
@@ -297,16 +316,19 @@
 	/* Now, change its update function to complete the script. */
 	table[2].act.update = my_update_true;
 	DT_ASSERT(mlk_action_script_update(&sc, 0));
+	DT_EQ_INT(table[0].inv.start, 1);
 	DT_EQ_INT(table[0].inv.handle, 0);
 	DT_EQ_INT(table[0].inv.update, 1);
 	DT_EQ_INT(table[0].inv.draw, 0);
 	DT_EQ_INT(table[0].inv.end, 1);
 	DT_EQ_INT(table[0].inv.finish, 0);
+	DT_EQ_INT(table[1].inv.start, 1);
 	DT_EQ_INT(table[1].inv.handle, 0);
 	DT_EQ_INT(table[1].inv.update, 1);
 	DT_EQ_INT(table[1].inv.draw, 0);
 	DT_EQ_INT(table[1].inv.end, 1);
 	DT_EQ_INT(table[1].inv.finish, 0);
+	DT_EQ_INT(table[2].inv.start, 1);
 	DT_EQ_INT(table[2].inv.handle, 0);
 	DT_EQ_INT(table[2].inv.update, 4);
 	DT_EQ_INT(table[2].inv.draw, 0);