diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/functional/lua/treesitter_spec.lua | 52 | ||||
| -rw-r--r-- | test/functional/provider/clipboard_spec.lua | 10 |
2 files changed, 62 insertions, 0 deletions
diff --git a/test/functional/lua/treesitter_spec.lua b/test/functional/lua/treesitter_spec.lua index 5706272f38..aa36e6f8f0 100644 --- a/test/functional/lua/treesitter_spec.lua +++ b/test/functional/lua/treesitter_spec.lua @@ -127,6 +127,58 @@ void ui_refresh(void) } }]] + it('allows to iterate over nodes children', function() + if not check_parser() then return end + + insert(test_text); + + local res = exec_lua([[ + parser = vim.treesitter.get_parser(0, "c") + + func_node = parser:parse():root():child(0) + + res = {} + for node, field in func_node:iter_children() do + table.insert(res, {node:type(), field}) + end + return res + ]]) + + eq({ + {"primitive_type", "type"}, + {"function_declarator", "declarator"}, + {"compound_statement", "body"} + }, res) + end) + + it('allows to get a child by field', function() + if not check_parser() then return end + + insert(test_text); + + local res = exec_lua([[ + parser = vim.treesitter.get_parser(0, "c") + + func_node = parser:parse():root():child(0) + + local res = {} + for _, node in ipairs(func_node:field("type")) do + table.insert(res, {node:type(), node:range()}) + end + return res + ]]) + + eq({{ "primitive_type", 0, 0, 0, 4 }}, res) + + local res_fail = exec_lua([[ + parser = vim.treesitter.get_parser(0, "c") + + return #func_node:field("foo") == 0 + ]]) + + assert(res_fail) + end) + local query = [[ ((call_expression function: (identifier) @minfunc (argument_list (identifier) @min_id)) (eq? @minfunc "MIN")) "for" @keyword diff --git a/test/functional/provider/clipboard_spec.lua b/test/functional/provider/clipboard_spec.lua index da9dd09129..1431054494 100644 --- a/test/functional/provider/clipboard_spec.lua +++ b/test/functional/provider/clipboard_spec.lua @@ -153,6 +153,16 @@ describe('clipboard', function() eq('', eval('provider#clipboard#Error()')) end) + it('g:clipboard using lists', function() + source([[let g:clipboard = { + \ 'name': 'custom', + \ 'copy': { '+': ['any', 'command'], '*': ['some', 'other'] }, + \ 'paste': { '+': ['any', 'command'], '*': ['some', 'other'] }, + \}]]) + eq('custom', eval('provider#clipboard#Executable()')) + eq('', eval('provider#clipboard#Error()')) + end) + it('g:clipboard using VimL functions', function() -- Implements a fake clipboard provider. cache_enabled is meaningless here. source([[let g:clipboard = { |