diff options
| author | Jackson Moore <jacksonmoore@tuta.io> | 2026-09-04 10:19:02 +0200 |
|---|---|---|
| committer | Jackson Moore <jacksonmoore@tuta.io> | 2026-09-04 10:19:02 +0200 |
| commit | 272c9cef5d40c9100968e1250036d74fa9868f71 (patch) | |
| tree | e44cbb4c4657256aa1ed6674d679887a3c90184d /tests/run.lua | |
| parent | 55a3a9dbb4d0ec6ecf20576bfa276298563257b8 (diff) | |
Enumerate matching target starts
Diffstat (limited to 'tests/run.lua')
| -rw-r--r-- | tests/run.lua | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/run.lua b/tests/run.lua index f684d65..e84c12a 100644 --- a/tests/run.lua +++ b/tests/run.lua @@ -2201,6 +2201,43 @@ test("DestinationEngine accepts pure calculation inputs", function() end, "valid cursor") end) +test("DestinationEngine enumerates target starts in motion order", function() + local view = text_topology.new({ "abaca" }, "utf-8") + local origin = domain.Position.new(1, 3) + local visits = {} + local target_match = domain.TargetPlan.new({ + target = target("a"), + kind = domain.TargetPlanKind.LITERAL, + case_mode = domain.CaseMode.SENSITIVE, + matcher = function(character, position) + visits[#visits + 1] = character .. ":" .. tostring(position) + return character == "a" + end, + }) + local engine = destination_engine.new() + + local forward = engine:calculate( + view, + origin, + motion_plan.build(target_match, "f"), + 1, + true + ) + same(domain.Position.new(1, 5), forward.endpoint) + list_same({ "c:(1,4)", "a:(1,5)" }, visits) + + visits = {} + local backward = engine:calculate( + view, + origin, + motion_plan.build(target_match, "F"), + 1, + true + ) + same(domain.Position.new(1, 1), backward.endpoint) + list_same({ "b:(1,2)", "a:(1,1)" }, visits) +end) + for _, item in ipairs(tests) do local ok, failure = xpcall(item.body, debug.traceback) if not ok then |
