diff options
| author | Jackson Moore <jacksonmoore@tuta.io> | 2026-09-04 10:18:07 +0200 |
|---|---|---|
| committer | Jackson Moore <jacksonmoore@tuta.io> | 2026-09-04 10:18:07 +0200 |
| commit | e8271f4b75e50983e82fba4155be0bd09e0251d7 (patch) | |
| tree | cb2de41d56896f5e638d740d65cdf4554dac0804 /tests | |
| parent | 14675353d21a63815901a729e3230d5928550868 (diff) | |
Define destination engine inputs
Diffstat (limited to 'tests')
| -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 6d4ed3e..f684d65 100644 --- a/tests/run.lua +++ b/tests/run.lua @@ -8,6 +8,7 @@ package.path = table.concat({ local domain = require("clever_f.domain") local capabilities = require("clever_f.capabilities") +local destination_engine = require("clever_f.destination_engine") local case_policy = require("clever_f.case_policy") local policy = require("clever_f.policy") local migemo_catalog = require("clever_f.migemo_catalog") @@ -2166,6 +2167,40 @@ test("MotionPlanFactory combines resolved motion values", function() end, "TargetPlan") end) +test("DestinationEngine accepts pure calculation inputs", function() + local view = text_topology.new({ "abc" }, "utf-8") + local plan = motion_plan.build( + target_plan.build(target("z"), matching_policy()), + "f" + ) + local engine = destination_engine.new() + local origin = domain.Position.new(1, 1) + local outcome = engine:calculate(view, origin, plan, nil, true) + + same(domain.SearchStatus.BOUNDARY_BEFORE_ANY, outcome.status) + same(origin, outcome.endpoint) + same(0, outcome.successful_steps) + truthy(destination_engine.DestinationEngine.is(engine)) + fails(function() + engine.mutable = true + end, "immutable") + fails(function() + engine:calculate({}, origin, plan, 1, true) + end, "TextView") + fails(function() + engine:calculate(view, origin, {}, 1, true) + end, "ResolvedMotionPlan") + fails(function() + engine:calculate(view, origin, plan, 0, true) + end, "positive") + fails(function() + engine:calculate(view, origin, plan, 1, nil) + end, "Boolean") + fails(function() + engine:calculate(view, domain.Position.new(1, 4), plan, 1, true) + end, "valid cursor") +end) + for _, item in ipairs(tests) do local ok, failure = xpcall(item.body, debug.traceback) if not ok then |
