Files
neovim/test/functional/legacy/arglist_spec.lua
Jurica Bradaric dfdf7c02be vim-patch:7.4.1123
Problem:    Using ":argadd" when there are no arguments results in the second
            argument to be the current one. (Yegappan Lakshmanan)
Solution:   Correct the w_arg_idx value.

a24f0a550f
2016-05-14 15:51:30 +02:00

82 lines
1.8 KiB
Lua

-- Test argument list commands
local helpers = require('test.functional.helpers')
local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert
local execute, expect = helpers.execute, helpers.expect
local eq, eval = helpers.eq, helpers.eval
describe('argument list commands', function()
before_each(clear)
function assert_argc(l)
eq(#l, eval('argc()'))
for i = 1, #l do
eq(l[i], eval('argv(' .. (i - 1) .. ')'))
end
end
function init_abc()
execute('args a b c')
execute('next')
end
it('test that argidx() works', function()
execute('args a b c')
execute('last')
eq(2, eval('argidx()'))
execute('%argdelete')
eq(0, eval('argidx()'))
execute('args a b c')
eq(0, eval('argidx()'))
execute('next')
eq(1, eval('argidx()'))
execute('next')
eq(2, eval('argidx()'))
execute('1argdelete')
eq(1, eval('argidx()'))
execute('1argdelete')
eq(0, eval('argidx()'))
execute('1argdelete')
eq(0, eval('argidx()'))
end)
it('test that argadd() works', function()
execute('%argdelete')
execute('argadd a b c')
eq(0, eval('argidx()'))
execute('%argdelete')
execute('argadd a')
eq(0, eval('argidx()'))
execute('argadd b c d')
eq(0, eval('argidx()'))
init_abc()
execute('argadd x')
assert_argc({'a', 'b', 'x', 'c'})
eq(1, eval('argidx()'))
init_abc()
execute('0argadd x')
assert_argc({'x', 'a', 'b', 'c'})
eq(2, eval('argidx()'))
init_abc()
execute('1argadd x')
assert_argc({'a', 'x', 'b', 'c'})
eq(2, eval('argidx()'))
init_abc()
execute('$argadd x')
assert_argc({'a', 'b', 'c', 'x'})
eq(1, eval('argidx()'))
init_abc()
execute('$argadd x')
execute('+2argadd y')
assert_argc({'a', 'b', 'c', 'x', 'y'})
eq(1, eval('argidx()'))
end)
end)