summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/run.lua35
1 files changed, 34 insertions, 1 deletions
diff --git a/tests/run.lua b/tests/run.lua
index 202eb4a..6c55d0c 100644
--- a/tests/run.lua
+++ b/tests/run.lua
@@ -4181,6 +4181,39 @@ test("Encoded explicit targets return a neutral request", function()
same(nil, opposite_request.descriptor)
end)
+test("Explicit requests stay outside fixed-direction policy", function()
+ local _, transitions = fresh_sequence_state()
+ local stored_target = target("a")
+ transitions:BeginAcquisition("n", "F")
+ transitions:CommitAcquiredTarget("n", stored_target)
+
+ local direction_samples = 0
+ local policy_probe = {
+ sample_timeouts = function()
+ return { repeat_timeout_ms = 0 }
+ end,
+ sample_direction = function()
+ direction_samples = direction_samples + 1
+ return { fix_key_direction = true }
+ end,
+ }
+ local resolver = repeat_resolver.new({ policy = policy_probe })
+
+ local same_request = resolver:same_direction_request("n")
+ local opposite_request = resolver:opposite_direction_request("n")
+ same(0, direction_samples)
+ same(domain.Descriptor.FIND_BACKWARD, same_request.descriptor)
+ same(domain.Descriptor.FIND_FORWARD, opposite_request.descriptor)
+ same(stored_target, same_request.target)
+ same(stored_target, opposite_request.target)
+
+ same(
+ domain.Descriptor.FIND_FORWARD,
+ resolver:resolve_primary_direction("F", "f")
+ )
+ same(1, direction_samples)
+end)
+
for _, item in ipairs(tests) do
local ok, failure = xpcall(item.body, debug.traceback)
if not ok then
@@ -4190,4 +4223,4 @@ for _, item in ipairs(tests) do
passed = passed + 1
end
-io.stdout:write(string.format("Phase 9: %d tests passed\n", passed))
+io.stdout:write(string.format("Phase 10: %d tests passed\n", passed))