summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/run.lua35
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