diff options
| -rw-r--r-- | lua/clever_f/feedback_service.lua | 12 | ||||
| -rw-r--r-- | tests/run.lua | 17 |
2 files changed, 29 insertions, 0 deletions
diff --git a/lua/clever_f/feedback_service.lua b/lua/clever_f/feedback_service.lua index eab03e6..22925f4 100644 --- a/lua/clever_f/feedback_service.lua +++ b/lua/clever_f/feedback_service.lua @@ -617,6 +617,18 @@ function M.repeated_till_migration_candidate(request) and request.first_move == false end +function M.till_direction_changed(request) + if not M.repeated_till_migration_candidate(request) then + return false + end + if type(request.moved_forward) ~= "boolean" + or type(request.previous_moved_forward) ~= "boolean" + then + fail("TILL feedback migration requires movement directions", 2) + end + return request.moved_forward ~= request.previous_moved_forward +end + function M.command_migration_reason(request) if type(request) ~= "table" then fail("command feedback migration request must be a table", 2) diff --git a/tests/run.lua b/tests/run.lua index 792f15b..b770884 100644 --- a/tests/run.lua +++ b/tests/run.lua @@ -6455,6 +6455,23 @@ test("TILL migration requires a repeated move", function() })) end) +test("Repeated TILL migration compares movement directions", function() + local shared_target = target_plan.build(target("a"), matching_policy()) + local till = motion_plan.build(shared_target, "T") + local request = { + resolved_motion_plan = till, + first_move = false, + moved_forward = false, + previous_moved_forward = true, + } + + truthy(feedback_service.till_direction_changed(request)) + request.previous_moved_forward = false + falsy(feedback_service.till_direction_changed(request)) + request.first_move = true + falsy(feedback_service.till_direction_changed(request)) +end) + for _, item in ipairs(tests) do local ok, failure = xpcall(item.body, debug.traceback) if not ok then |
