diff options
Diffstat (limited to 'tests/run.lua')
| -rw-r--r-- | tests/run.lua | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/run.lua b/tests/run.lua index 2da1855..062f9ec 100644 --- a/tests/run.lua +++ b/tests/run.lua @@ -6097,6 +6097,41 @@ test("Persistent creation registers current-buffer finalizers", function() truthy(registration.active) end) +test("Persistent feedback owns one finalizer set", function() + local state, transitions = fresh_sequence_state() + local host = MemoryHost.new({ buffer_lines = { "aba" } }) + local feedback = feedback_service.new({ + host = host, + transitions = transitions, + }) + local shared_target = target_plan.build(target("a"), matching_policy()) + local movement = motion_plan.build(shared_target, "f") + local function create() + return feedback:request_persistent({ + context = "n", + anchor = domain.Position.new(1, 1), + target_plan = shared_target, + motion_plan = movement, + window = "window-1", + }) + end + + local first = create() + local second = create() + same(first.finalizers.identity, second.finalizers.identity) + same(1, #state.finalizers) + + host:set_buffer("buffer-2") + local third = create() + falsy(first.finalizers.identity == third.finalizers.identity) + same(1, #state.finalizers) + same(third.finalizers.identity, state.finalizers[1].identity) + same("buffer-2", state.finalizers[1].buffer) + local registrations = host:event_registrations() + falsy(registrations[first.finalizers.identity].active) + truthy(registrations[third.finalizers.identity].active) +end) + for _, item in ipairs(tests) do local ok, failure = xpcall(item.body, debug.traceback) if not ok then |
