From 2cffd9177a25ff071f9f3fc5ea4be7175ed8be69 Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Fri, 25 Mar 2022 15:35:42 +0200 Subject: [PATCH] tests: wplua: add event hooks lua test --- tests/wplua/meson.build | 6 +++ tests/wplua/scripts/event-hooks.lua | 77 +++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 tests/wplua/scripts/event-hooks.lua diff --git a/tests/wplua/meson.build b/tests/wplua/meson.build index 0e5ab11d..94d2f62b 100644 --- a/tests/wplua/meson.build +++ b/tests/wplua/meson.build @@ -55,3 +55,9 @@ test( args: ['settings.lua'], env: common_env, ) +test( + 'test-lua-event-hooks', + script_tester, + args: ['event-hooks.lua'], + env: common_env, +) diff --git a/tests/wplua/scripts/event-hooks.lua b/tests/wplua/scripts/event-hooks.lua new file mode 100644 index 00000000..71a82e7b --- /dev/null +++ b/tests/wplua/scripts/event-hooks.lua @@ -0,0 +1,77 @@ +Script.async_activation = true + +local tags = {} + +local function checkpoint(tag) + Log.info("at " .. tag) + table.insert(tags, tag) +end + +local function check_results() + local i = 0 + local function inc() + i = i+1 + return i + end + + assert(tags[inc()] == "simple-1") + assert(tags[inc()] == "async-start") + assert(tags[inc()] == "async-start-advance") + assert(tags[inc()] == "async-step2") + assert(tags[inc()] == "simple-2") +end + +local common_interests = { + Interest { + type = "event", + Constraint { "event.type", "=", "test-event" }, + }, +} + +AsyncEventHook { + priority = 10, + type = "on-event", + interests = common_interests, + steps = { + start = { + next = "step2", + execute = function (event, transition) + checkpoint("async-start") + Core.idle_add(function () + checkpoint("async-start-advance") + transition:advance() + return false + end) + end, + }, + step2 = { + next = "none", + execute = function (event, transition) + checkpoint("async-step2") + transition:advance() + end, + }, + }, +}:register() + +SimpleEventHook { + priority = 15, + type = "on-event", + interests = common_interests, + execute = function (event) + checkpoint("simple-1") + end +}:register() + +SimpleEventHook { + priority = 1, + type = "after-events", + interests = common_interests, + execute = function (event) + checkpoint("simple-2") + check_results() + Script:finish_activation() + end +}:register() + +EventDispatcher.push_event { type = "test-event", priority = 1 }