event: Add a simple test
authorSimon Glass <sjg@chromium.org>
Fri, 4 Mar 2022 15:43:01 +0000 (08:43 -0700)
committerTom Rini <trini@konsulko.com>
Thu, 10 Mar 2022 13:28:36 +0000 (08:28 -0500)
Add a test for event registration and activation.

Signed-off-by: Simon Glass <sjg@chromium.org>
MAINTAINERS
test/common/Makefile
test/common/event.c [new file with mode: 0644]
test/test-main.c

index b534ad6..2786ada 100644 (file)
@@ -814,6 +814,7 @@ M:  Simon Glass <sjg@chromium.org>
 S:     Maintained
 F:     common/event.c
 F:     include/event.h
+F:     test/common/event.c
 
 FASTBOOT
 S:     Orphaned
index 24c9145..9087788 100644 (file)
@@ -1,3 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0+
 obj-y += cmd_ut_common.o
 obj-$(CONFIG_AUTOBOOT) += test_autoboot.o
+obj-$(CONFIG_EVENT) += event.o
diff --git a/test/common/event.c b/test/common/event.c
new file mode 100644 (file)
index 0000000..dfaa66e
--- /dev/null
@@ -0,0 +1,47 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Unit tests for event handling
+ *
+ * Copyright 2021 Google LLC
+ * Written by Simon Glass <sjg@chromium.org>
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <event.h>
+#include <test/common.h>
+#include <test/test.h>
+#include <test/ut.h>
+
+struct test_state {
+       struct udevice *dev;
+       int val;
+};
+
+static int h_adder(void *ctx, struct event *event)
+{
+       struct event_data_test *data = &event->data.test;
+       struct test_state *test_state = ctx;
+
+       test_state->val += data->signal;
+
+       return 0;
+}
+
+static int test_event_base(struct unit_test_state *uts)
+{
+       struct test_state state;
+       int signal;
+
+       state.val = 12;
+       ut_assertok(event_register("wibble", EVT_TEST, h_adder, &state));
+
+       signal = 17;
+
+       /* Check that the handler is called */
+       ut_assertok(event_notify(EVT_TEST, &signal, sizeof(signal)));
+       ut_asserteq(12 + 17, state.val);
+
+       return 0;
+}
+COMMON_TEST(test_event_base, 0);
index 8fcb02e..ee38d1f 100644 (file)
@@ -7,6 +7,7 @@
 #include <common.h>
 #include <console.h>
 #include <dm.h>
+#include <event.h>
 #include <dm/root.h>
 #include <dm/test.h>
 #include <dm/uclass-internal.h>
@@ -218,6 +219,8 @@ static int dm_test_restore(struct device_node *of_root)
  */
 static int test_pre_run(struct unit_test_state *uts, struct unit_test *test)
 {
+       ut_assertok(event_init());
+
        if (test->flags & UT_TESTF_DM)
                ut_assertok(dm_test_pre_run(uts));
 
@@ -260,6 +263,7 @@ static int test_post_run(struct unit_test_state *uts, struct unit_test *test)
        ut_unsilence_console(uts);
        if (test->flags & UT_TESTF_DM)
                ut_assertok(dm_test_post_run(uts));
+       ut_assertok(event_uninit());
 
        return 0;
 }