diff options
Diffstat (limited to 'tests')
| -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 |
