summaryrefslogtreecommitdiff
path: root/tests/run.lua
diff options
context:
space:
mode:
authorJackson Moore <jacksonmoore@tuta.io>2026-09-04 11:11:22 +0200
committerJackson Moore <jacksonmoore@tuta.io>2026-09-04 11:11:22 +0200
commitb544bbdf40214e9601aaff374b9f1ee2723e2189 (patch)
tree6a9e9ebdf96d85bfc2301187ed5ef9ffdc49962e /tests/run.lua
parent4c3258c8c8ce623a9b6381bd408792d3f713e54a (diff)
Verify reverse request matrix
Diffstat (limited to 'tests/run.lua')
-rw-r--r--tests/run.lua27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/run.lua b/tests/run.lua
index 1609593..598ea2b 100644
--- a/tests/run.lua
+++ b/tests/run.lua
@@ -4059,6 +4059,33 @@ test("Fixed upper-case keys use the upper-case stored form", function()
end
end)
+test("Reverse-request algorithm matches every direction matrix pair", function()
+ local descriptors = { "f", "F", "t", "T" }
+ for _, fixed in ipairs({ false, true }) do
+ local pairs_checked = 0
+ for _, stored in ipairs(descriptors) do
+ for _, pressed in ipairs(descriptors) do
+ local expected
+ if fixed then
+ expected = domain.Descriptor.is_lowercase(pressed)
+ and domain.Descriptor.lowercase(stored)
+ or domain.Descriptor.uppercase(stored)
+ else
+ expected = domain.Descriptor.is_lowercase(pressed)
+ and domain.Descriptor.from_string(stored)
+ or domain.Descriptor.swap(stored)
+ end
+ local reverse = repeat_resolver.reverse_request(stored, pressed, fixed)
+ local effective = repeat_resolver.primary_direction(stored, pressed, fixed)
+ same(expected, effective, stored .. "/" .. pressed .. "/" .. tostring(fixed))
+ same(reverse, effective == domain.Descriptor.swap(stored))
+ pairs_checked = pairs_checked + 1
+ end
+ end
+ same(16, pairs_checked)
+ end
+end)
+
for _, item in ipairs(tests) do
local ok, failure = xpcall(item.body, debug.traceback)
if not ok then