summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJackson Moore <jacksonmoore@tuta.io>2026-09-04 12:49:46 +0200
committerJackson Moore <jacksonmoore@tuta.io>2026-09-04 12:49:46 +0200
commita3127187d21b6095db9314fd036b38a95b26df4a (patch)
tree1485a5b669e9dda9bccba2dc9eaac98f46756098 /tests
parentcd8b1dae826390bebf5a4566f69008246d705c7c (diff)
Clean eager feedback resources
Diffstat (limited to 'tests')
-rw-r--r--tests/run.lua43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/run.lua b/tests/run.lua
index 4290460..38edcda 100644
--- a/tests/run.lua
+++ b/tests/run.lua
@@ -6955,6 +6955,49 @@ test("Every eager event samples live character-marker policy", function()
end
end)
+test("Enabled eager events remove overlays and cancel timers", function()
+ for _, event_name in ipairs(feedback_service.EAGER_EVENTS) do
+ local state, transitions = fresh_sequence_state()
+ local host = MemoryHost.new({
+ buffer_lines = { "aba" },
+ configuration = {
+ clean_labels_eagerly = true,
+ mark_char = true,
+ highlight_timeout_ms = 25,
+ },
+ })
+ local feedback = feedback_service.new({
+ host = host,
+ transitions = transitions,
+ })
+ local activation = feedback:activate()
+ local shared_target = target_plan.build(target("a"), matching_policy())
+ local movement = motion_plan.build(shared_target, "f")
+ local persistent = feedback:request_persistent({
+ context = "n",
+ anchor = domain.Position.new(1, 1),
+ target_plan = shared_target,
+ motion_plan = movement,
+ window = "window-1",
+ })
+ local timer = feedback:start_highlight_timer("window-1")
+
+ host:deliver_event(event_name, { window = "window-1" })
+
+ local decision = feedback:last_eager_decision()
+ truthy(decision.cleaned, event_name)
+ same(timer, decision.cleanup.highlight_timer, event_name)
+ same(nil, state.highlight_timer, event_name)
+ same(0, #state.target_overlays, event_name)
+ same(nil, host:highlights()[persistent.identity], event_name)
+ falsy(host:timers()[timer].active, event_name)
+ truthy(
+ host:event_registrations()[activation.eager_registration].active,
+ event_name
+ )
+ end
+end)
+
for _, item in ipairs(tests) do
local ok, failure = xpcall(item.body, debug.traceback)
if not ok then