diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/run.lua | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/run.lua b/tests/run.lua index 871d977..e00f694 100644 --- a/tests/run.lua +++ b/tests/run.lua @@ -361,6 +361,62 @@ test("ActionOutcome and DotPayload retain resolved result data", function() same("problem", domain.ActionOutcome.error(destination, "problem").diagnostic) end) +test("Host adapter connects motion endpoints and dot payloads", function() + local cursor + local commands = {} + local runtime = { + api = { + nvim_win_set_cursor = function(window, position) + same(0, window) + cursor = position + end, + nvim_cmd = function(command, options) + commands[#commands + 1] = command + truthy(vim.tbl_isempty(options)) + end, + }, + v = { operator = "d" }, + } + local adapter = host_adapter.new({ runtime = runtime }) + + same("d", adapter:read_pending_operator()) + adapter:apply_cursor(domain.Position.new(3, 5), { + descriptor = domain.Descriptor.FIND_FORWARD, + }) + list_same({ 3, 4 }, cursor) + adapter:apply_selection(domain.Selection.active( + domain.SelectionKind.CHARACTER, + domain.Position.new(3, 1), + domain.Position.new(4, 2), + domain.SelectionOption.INCLUSIVE + )) + list_same({ 4, 1 }, cursor) + + adapter:set_operator_inclusive(false) + same(0, #commands) + adapter:set_operator_inclusive(true) + same(1, #commands) + same("normal", commands[1].cmd) + truthy(commands[1].bang) + list_same({ "v" }, commands[1].args) + + local payload = domain.DotPayload.new( + "t", + domain.TargetValue.character("x", string.byte("x")) + ) + local replayed_payload + local replayed_count + same(payload, adapter:register_dot_repeat(payload, function(value, count) + replayed_payload = value + replayed_count = count + return "replayed" + end)) + same(payload, adapter:dot_repeat_payload()) + same("replayed", adapter:replay_dot(3)) + same(payload, replayed_payload) + same(3, replayed_count.value) +end) + test("Host adapter reads encoding and uses Nvim case conversion", function() local lowered = {} local runtime = { |
