mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
test(paste): reorganize tests and add tests for linewise Visual mode
This commit is contained in:
parent
a6eafc77ce
commit
e4ec8d7d50
@ -630,10 +630,6 @@ describe('API', function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
describe('nvim_paste', function()
|
describe('nvim_paste', function()
|
||||||
before_each(function()
|
|
||||||
-- If nvim_paste() calls :undojoin without making any changes, this makes it an error.
|
|
||||||
feed('ifoo<Esc>u')
|
|
||||||
end)
|
|
||||||
it('validates args', function()
|
it('validates args', function()
|
||||||
eq('Invalid phase: -2',
|
eq('Invalid phase: -2',
|
||||||
pcall_err(request, 'nvim_paste', 'foo', true, -2))
|
pcall_err(request, 'nvim_paste', 'foo', true, -2))
|
||||||
@ -670,23 +666,35 @@ describe('API', function()
|
|||||||
expect(expected1)
|
expect(expected1)
|
||||||
end)
|
end)
|
||||||
it('stream: Insert mode', function()
|
it('stream: Insert mode', function()
|
||||||
|
-- If nvim_paste() calls :undojoin without making any changes, this makes it an error.
|
||||||
|
feed('afoo<Esc>u')
|
||||||
feed('i')
|
feed('i')
|
||||||
nvim('paste', 'aaaaaa', false, 1)
|
nvim('paste', 'aaaaaa', false, 1)
|
||||||
nvim('paste', 'bbbbbb', false, 2)
|
nvim('paste', 'bbbbbb', false, 2)
|
||||||
nvim('paste', 'cccccc', false, 2)
|
nvim('paste', 'cccccc', false, 2)
|
||||||
nvim('paste', 'dddddd', false, 3)
|
nvim('paste', 'dddddd', false, 3)
|
||||||
expect('aaaaaabbbbbbccccccdddddd')
|
expect('aaaaaabbbbbbccccccdddddd')
|
||||||
|
feed('<Esc>u')
|
||||||
|
expect('')
|
||||||
end)
|
end)
|
||||||
it('stream: Normal mode on empty line', function()
|
describe('stream: Normal mode', function()
|
||||||
|
describe('on empty line', function()
|
||||||
|
before_each(function()
|
||||||
|
-- If nvim_paste() calls :undojoin without making any changes, this makes it an error.
|
||||||
|
feed('afoo<Esc>u')
|
||||||
|
end)
|
||||||
|
after_each(function()
|
||||||
|
feed('u')
|
||||||
|
expect('')
|
||||||
|
end)
|
||||||
|
it('pasting one line', function()
|
||||||
nvim('paste', 'aaaaaa', false, 1)
|
nvim('paste', 'aaaaaa', false, 1)
|
||||||
nvim('paste', 'bbbbbb', false, 2)
|
nvim('paste', 'bbbbbb', false, 2)
|
||||||
nvim('paste', 'cccccc', false, 2)
|
nvim('paste', 'cccccc', false, 2)
|
||||||
nvim('paste', 'dddddd', false, 3)
|
nvim('paste', 'dddddd', false, 3)
|
||||||
expect('aaaaaabbbbbbccccccdddddd')
|
expect('aaaaaabbbbbbccccccdddddd')
|
||||||
feed('u')
|
|
||||||
expect('')
|
|
||||||
end)
|
end)
|
||||||
it('stream: Normal mode on empty line pasting multiple lines', function()
|
it('pasting multiple lines', function()
|
||||||
nvim('paste', 'aaaaaa\n', false, 1)
|
nvim('paste', 'aaaaaa\n', false, 1)
|
||||||
nvim('paste', 'bbbbbb\n', false, 2)
|
nvim('paste', 'bbbbbb\n', false, 2)
|
||||||
nvim('paste', 'cccccc\n', false, 2)
|
nvim('paste', 'cccccc\n', false, 2)
|
||||||
@ -696,21 +704,27 @@ describe('API', function()
|
|||||||
bbbbbb
|
bbbbbb
|
||||||
cccccc
|
cccccc
|
||||||
dddddd]])
|
dddddd]])
|
||||||
feed('u')
|
|
||||||
expect('')
|
|
||||||
end)
|
end)
|
||||||
it('stream: Normal mode not at the end of a line', function()
|
end)
|
||||||
feed('i||<Esc>0')
|
describe('not at the end of a line', function()
|
||||||
|
before_each(function()
|
||||||
|
feed('i||<Esc>')
|
||||||
|
-- If nvim_paste() calls :undojoin without making any changes, this makes it an error.
|
||||||
|
feed('afoo<Esc>u')
|
||||||
|
feed('0')
|
||||||
|
end)
|
||||||
|
after_each(function()
|
||||||
|
feed('u')
|
||||||
|
expect('||')
|
||||||
|
end)
|
||||||
|
it('pasting one line', function()
|
||||||
nvim('paste', 'aaaaaa', false, 1)
|
nvim('paste', 'aaaaaa', false, 1)
|
||||||
nvim('paste', 'bbbbbb', false, 2)
|
nvim('paste', 'bbbbbb', false, 2)
|
||||||
nvim('paste', 'cccccc', false, 2)
|
nvim('paste', 'cccccc', false, 2)
|
||||||
nvim('paste', 'dddddd', false, 3)
|
nvim('paste', 'dddddd', false, 3)
|
||||||
expect('|aaaaaabbbbbbccccccdddddd|')
|
expect('|aaaaaabbbbbbccccccdddddd|')
|
||||||
feed('u')
|
|
||||||
expect('||')
|
|
||||||
end)
|
end)
|
||||||
it('stream: Normal mode not at the end of a line pasting multiple lines', function()
|
it('pasting multiple lines', function()
|
||||||
feed('i||<Esc>0')
|
|
||||||
nvim('paste', 'aaaaaa\n', false, 1)
|
nvim('paste', 'aaaaaa\n', false, 1)
|
||||||
nvim('paste', 'bbbbbb\n', false, 2)
|
nvim('paste', 'bbbbbb\n', false, 2)
|
||||||
nvim('paste', 'cccccc\n', false, 2)
|
nvim('paste', 'cccccc\n', false, 2)
|
||||||
@ -720,21 +734,27 @@ describe('API', function()
|
|||||||
bbbbbb
|
bbbbbb
|
||||||
cccccc
|
cccccc
|
||||||
dddddd|]])
|
dddddd|]])
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
describe('at the end of a line', function()
|
||||||
|
before_each(function()
|
||||||
|
feed('i||<Esc>')
|
||||||
|
-- If nvim_paste() calls :undojoin without making any changes, this makes it an error.
|
||||||
|
feed('afoo<Esc>u')
|
||||||
|
feed('$')
|
||||||
|
end)
|
||||||
|
after_each(function()
|
||||||
feed('u')
|
feed('u')
|
||||||
expect('||')
|
expect('||')
|
||||||
end)
|
end)
|
||||||
it('stream: Normal mode at the end of a line', function()
|
it('pasting one line', function()
|
||||||
feed('i||<Esc>')
|
|
||||||
nvim('paste', 'aaaaaa', false, 1)
|
nvim('paste', 'aaaaaa', false, 1)
|
||||||
nvim('paste', 'bbbbbb', false, 2)
|
nvim('paste', 'bbbbbb', false, 2)
|
||||||
nvim('paste', 'cccccc', false, 2)
|
nvim('paste', 'cccccc', false, 2)
|
||||||
nvim('paste', 'dddddd', false, 3)
|
nvim('paste', 'dddddd', false, 3)
|
||||||
expect('||aaaaaabbbbbbccccccdddddd')
|
expect('||aaaaaabbbbbbccccccdddddd')
|
||||||
feed('u')
|
|
||||||
expect('||')
|
|
||||||
end)
|
end)
|
||||||
it('stream: Normal mode at the end of a line pasting multiple lines', function()
|
it('pasting multiple lines', function()
|
||||||
feed('i||<Esc>')
|
|
||||||
nvim('paste', 'aaaaaa\n', false, 1)
|
nvim('paste', 'aaaaaa\n', false, 1)
|
||||||
nvim('paste', 'bbbbbb\n', false, 2)
|
nvim('paste', 'bbbbbb\n', false, 2)
|
||||||
nvim('paste', 'cccccc\n', false, 2)
|
nvim('paste', 'cccccc\n', false, 2)
|
||||||
@ -744,92 +764,235 @@ describe('API', function()
|
|||||||
bbbbbb
|
bbbbbb
|
||||||
cccccc
|
cccccc
|
||||||
dddddd]])
|
dddddd]])
|
||||||
feed('u')
|
|
||||||
expect('||')
|
|
||||||
end)
|
end)
|
||||||
it('stream: Visual mode neither end at the end of a line', function()
|
end)
|
||||||
feed('i|xxx<CR>xxx|<Esc>hvhk')
|
end)
|
||||||
|
describe('stream: Visual mode', function()
|
||||||
|
describe('neither end at the end of a line', function()
|
||||||
|
before_each(function()
|
||||||
|
feed('i|xxx<CR>xxx|<Esc>')
|
||||||
|
-- If nvim_paste() calls :undojoin without making any changes, this makes it an error.
|
||||||
|
feed('afoo<Esc>u')
|
||||||
|
feed('hvhk')
|
||||||
|
end)
|
||||||
|
after_each(function()
|
||||||
|
feed('u')
|
||||||
|
expect([[
|
||||||
|
|xxx
|
||||||
|
xxx|]])
|
||||||
|
end)
|
||||||
|
it('with non-empty chunks', function()
|
||||||
nvim('paste', 'aaaaaa', false, 1)
|
nvim('paste', 'aaaaaa', false, 1)
|
||||||
nvim('paste', 'bbbbbb', false, 2)
|
nvim('paste', 'bbbbbb', false, 2)
|
||||||
nvim('paste', 'cccccc', false, 2)
|
nvim('paste', 'cccccc', false, 2)
|
||||||
nvim('paste', 'dddddd', false, 3)
|
nvim('paste', 'dddddd', false, 3)
|
||||||
expect('|aaaaaabbbbbbccccccdddddd|')
|
expect('|aaaaaabbbbbbccccccdddddd|')
|
||||||
feed('u')
|
|
||||||
expect([[
|
|
||||||
|xxx
|
|
||||||
xxx|]])
|
|
||||||
end)
|
end)
|
||||||
it('stream: Visual mode neither end at the end of a line with empty first chunk', function()
|
it('with empty first chunk', function()
|
||||||
feed('i|xxx<CR>xxx|<Esc>hvhk')
|
|
||||||
nvim('paste', '', false, 1)
|
nvim('paste', '', false, 1)
|
||||||
nvim('paste', 'bbbbbb', false, 2)
|
nvim('paste', 'bbbbbb', false, 2)
|
||||||
nvim('paste', 'cccccc', false, 2)
|
nvim('paste', 'cccccc', false, 2)
|
||||||
nvim('paste', 'dddddd', false, 3)
|
nvim('paste', 'dddddd', false, 3)
|
||||||
expect('|bbbbbbccccccdddddd|')
|
expect('|bbbbbbccccccdddddd|')
|
||||||
feed('u')
|
|
||||||
expect([[
|
|
||||||
|xxx
|
|
||||||
xxx|]])
|
|
||||||
end)
|
end)
|
||||||
it('stream: Visual mode neither end at the end of a line with all chunks empty', function()
|
it('with all chunks empty', function()
|
||||||
feed('i|xxx<CR>xxx|<Esc>hvhk')
|
|
||||||
nvim('paste', '', false, 1)
|
nvim('paste', '', false, 1)
|
||||||
nvim('paste', '', false, 2)
|
nvim('paste', '', false, 2)
|
||||||
nvim('paste', '', false, 2)
|
nvim('paste', '', false, 2)
|
||||||
nvim('paste', '', false, 3)
|
nvim('paste', '', false, 3)
|
||||||
expect('||')
|
expect('||')
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
describe('cursor at the end of a line', function()
|
||||||
|
before_each(function()
|
||||||
|
feed('i||xxx<CR>xxx<Esc>')
|
||||||
|
-- If nvim_paste() calls :undojoin without making any changes, this makes it an error.
|
||||||
|
feed('afoo<Esc>u')
|
||||||
|
feed('vko')
|
||||||
|
end)
|
||||||
|
after_each(function()
|
||||||
feed('u')
|
feed('u')
|
||||||
expect([[
|
expect([[
|
||||||
|xxx
|
||xxx
|
||||||
xxx|]])
|
xxx]])
|
||||||
end)
|
end)
|
||||||
it('stream: Visual mode cursor at the end of a line', function()
|
it('with non-empty chunks', function()
|
||||||
feed('i||xxx<CR>xxx<Esc>vko')
|
|
||||||
nvim('paste', 'aaaaaa', false, 1)
|
nvim('paste', 'aaaaaa', false, 1)
|
||||||
nvim('paste', 'bbbbbb', false, 2)
|
nvim('paste', 'bbbbbb', false, 2)
|
||||||
nvim('paste', 'cccccc', false, 2)
|
nvim('paste', 'cccccc', false, 2)
|
||||||
nvim('paste', 'dddddd', false, 3)
|
nvim('paste', 'dddddd', false, 3)
|
||||||
expect('||aaaaaabbbbbbccccccdddddd')
|
expect('||aaaaaabbbbbbccccccdddddd')
|
||||||
feed('u')
|
|
||||||
expect([[
|
|
||||||
||xxx
|
|
||||||
xxx]])
|
|
||||||
end)
|
end)
|
||||||
it('stream: Visual mode cursor at the end of a line with empty first chunk', function()
|
it('with empty first chunk', function()
|
||||||
feed('i||xxx<CR>xxx<Esc>vko')
|
|
||||||
nvim('paste', '', false, 1)
|
nvim('paste', '', false, 1)
|
||||||
nvim('paste', 'bbbbbb', false, 2)
|
nvim('paste', 'bbbbbb', false, 2)
|
||||||
nvim('paste', 'cccccc', false, 2)
|
nvim('paste', 'cccccc', false, 2)
|
||||||
nvim('paste', 'dddddd', false, 3)
|
nvim('paste', 'dddddd', false, 3)
|
||||||
expect('||bbbbbbccccccdddddd')
|
expect('||bbbbbbccccccdddddd')
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
describe('other end at the end of a line', function()
|
||||||
|
before_each(function()
|
||||||
|
feed('i||xxx<CR>xxx<Esc>')
|
||||||
|
-- If nvim_paste() calls :undojoin without making any changes, this makes it an error.
|
||||||
|
feed('afoo<Esc>u')
|
||||||
|
feed('vk')
|
||||||
|
end)
|
||||||
|
after_each(function()
|
||||||
feed('u')
|
feed('u')
|
||||||
expect([[
|
expect([[
|
||||||
||xxx
|
||xxx
|
||||||
xxx]])
|
xxx]])
|
||||||
end)
|
end)
|
||||||
it('stream: Visual mode other end at the end of a line', function()
|
it('with non-empty chunks', function()
|
||||||
feed('i||xxx<CR>xxx<Esc>vk')
|
|
||||||
nvim('paste', 'aaaaaa', false, 1)
|
nvim('paste', 'aaaaaa', false, 1)
|
||||||
nvim('paste', 'bbbbbb', false, 2)
|
nvim('paste', 'bbbbbb', false, 2)
|
||||||
nvim('paste', 'cccccc', false, 2)
|
nvim('paste', 'cccccc', false, 2)
|
||||||
nvim('paste', 'dddddd', false, 3)
|
nvim('paste', 'dddddd', false, 3)
|
||||||
expect('||aaaaaabbbbbbccccccdddddd')
|
expect('||aaaaaabbbbbbccccccdddddd')
|
||||||
feed('u')
|
|
||||||
expect([[
|
|
||||||
||xxx
|
|
||||||
xxx]])
|
|
||||||
end)
|
end)
|
||||||
it('stream: Visual mode other end at the end of a line with empty first chunk', function()
|
it('with empty first chunk', function()
|
||||||
feed('i||xxx<CR>xxx<Esc>vk')
|
|
||||||
nvim('paste', '', false, 1)
|
nvim('paste', '', false, 1)
|
||||||
nvim('paste', 'bbbbbb', false, 2)
|
nvim('paste', 'bbbbbb', false, 2)
|
||||||
nvim('paste', 'cccccc', false, 2)
|
nvim('paste', 'cccccc', false, 2)
|
||||||
nvim('paste', 'dddddd', false, 3)
|
nvim('paste', 'dddddd', false, 3)
|
||||||
expect('||bbbbbbccccccdddddd')
|
expect('||bbbbbbccccccdddddd')
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
describe('stream: linewise Visual mode', function()
|
||||||
|
before_each(function()
|
||||||
|
feed('i123456789<CR>987654321<CR>123456789<Esc>')
|
||||||
|
-- If nvim_paste() calls :undojoin without making any changes, this makes it an error.
|
||||||
|
feed('afoo<Esc>u')
|
||||||
|
end)
|
||||||
|
after_each(function()
|
||||||
feed('u')
|
feed('u')
|
||||||
expect([[
|
expect([[
|
||||||
||xxx
|
123456789
|
||||||
xxx]])
|
987654321
|
||||||
|
123456789]])
|
||||||
|
end)
|
||||||
|
describe('selecting the start of a file', function()
|
||||||
|
before_each(function()
|
||||||
|
feed('ggV')
|
||||||
|
end)
|
||||||
|
it('pasting text without final new line', function()
|
||||||
|
nvim('paste', 'aaaaaa\n', false, 1)
|
||||||
|
nvim('paste', 'bbbbbb\n', false, 2)
|
||||||
|
nvim('paste', 'cccccc\n', false, 2)
|
||||||
|
nvim('paste', 'dddddd', false, 3)
|
||||||
|
expect([[
|
||||||
|
aaaaaa
|
||||||
|
bbbbbb
|
||||||
|
cccccc
|
||||||
|
dddddd987654321
|
||||||
|
123456789]])
|
||||||
|
end)
|
||||||
|
it('pasting text with final new line', function()
|
||||||
|
nvim('paste', 'aaaaaa\n', false, 1)
|
||||||
|
nvim('paste', 'bbbbbb\n', false, 2)
|
||||||
|
nvim('paste', 'cccccc\n', false, 2)
|
||||||
|
nvim('paste', 'dddddd\n', false, 3)
|
||||||
|
expect([[
|
||||||
|
aaaaaa
|
||||||
|
bbbbbb
|
||||||
|
cccccc
|
||||||
|
dddddd
|
||||||
|
987654321
|
||||||
|
123456789]])
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
describe('selecting the middle of a file', function()
|
||||||
|
before_each(function()
|
||||||
|
feed('2ggV')
|
||||||
|
end)
|
||||||
|
it('pasting text without final new line', function()
|
||||||
|
nvim('paste', 'aaaaaa\n', false, 1)
|
||||||
|
nvim('paste', 'bbbbbb\n', false, 2)
|
||||||
|
nvim('paste', 'cccccc\n', false, 2)
|
||||||
|
nvim('paste', 'dddddd', false, 3)
|
||||||
|
expect([[
|
||||||
|
123456789
|
||||||
|
aaaaaa
|
||||||
|
bbbbbb
|
||||||
|
cccccc
|
||||||
|
dddddd123456789]])
|
||||||
|
end)
|
||||||
|
it('pasting text with final new line', function()
|
||||||
|
nvim('paste', 'aaaaaa\n', false, 1)
|
||||||
|
nvim('paste', 'bbbbbb\n', false, 2)
|
||||||
|
nvim('paste', 'cccccc\n', false, 2)
|
||||||
|
nvim('paste', 'dddddd\n', false, 3)
|
||||||
|
expect([[
|
||||||
|
123456789
|
||||||
|
aaaaaa
|
||||||
|
bbbbbb
|
||||||
|
cccccc
|
||||||
|
dddddd
|
||||||
|
123456789]])
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
describe('selecting the end of a file', function()
|
||||||
|
before_each(function()
|
||||||
|
feed('3ggV')
|
||||||
|
end)
|
||||||
|
it('pasting text without final new line', function()
|
||||||
|
nvim('paste', 'aaaaaa\n', false, 1)
|
||||||
|
nvim('paste', 'bbbbbb\n', false, 2)
|
||||||
|
nvim('paste', 'cccccc\n', false, 2)
|
||||||
|
nvim('paste', 'dddddd', false, 3)
|
||||||
|
expect([[
|
||||||
|
123456789
|
||||||
|
987654321
|
||||||
|
aaaaaa
|
||||||
|
bbbbbb
|
||||||
|
cccccc
|
||||||
|
dddddd]])
|
||||||
|
end)
|
||||||
|
it('pasting text with final new line', function()
|
||||||
|
nvim('paste', 'aaaaaa\n', false, 1)
|
||||||
|
nvim('paste', 'bbbbbb\n', false, 2)
|
||||||
|
nvim('paste', 'cccccc\n', false, 2)
|
||||||
|
nvim('paste', 'dddddd\n', false, 3)
|
||||||
|
expect([[
|
||||||
|
123456789
|
||||||
|
987654321
|
||||||
|
aaaaaa
|
||||||
|
bbbbbb
|
||||||
|
cccccc
|
||||||
|
dddddd
|
||||||
|
]])
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
describe('selecting the whole file', function()
|
||||||
|
before_each(function()
|
||||||
|
feed('ggVG')
|
||||||
|
end)
|
||||||
|
it('pasting text without final new line', function()
|
||||||
|
nvim('paste', 'aaaaaa\n', false, 1)
|
||||||
|
nvim('paste', 'bbbbbb\n', false, 2)
|
||||||
|
nvim('paste', 'cccccc\n', false, 2)
|
||||||
|
nvim('paste', 'dddddd', false, 3)
|
||||||
|
expect([[
|
||||||
|
aaaaaa
|
||||||
|
bbbbbb
|
||||||
|
cccccc
|
||||||
|
dddddd]])
|
||||||
|
end)
|
||||||
|
it('pasting text with final new line', function()
|
||||||
|
nvim('paste', 'aaaaaa\n', false, 1)
|
||||||
|
nvim('paste', 'bbbbbb\n', false, 2)
|
||||||
|
nvim('paste', 'cccccc\n', false, 2)
|
||||||
|
nvim('paste', 'dddddd\n', false, 3)
|
||||||
|
expect([[
|
||||||
|
aaaaaa
|
||||||
|
bbbbbb
|
||||||
|
cccccc
|
||||||
|
dddddd
|
||||||
|
]])
|
||||||
|
end)
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
it('non-streaming', function()
|
it('non-streaming', function()
|
||||||
-- With final "\n".
|
-- With final "\n".
|
||||||
|
Loading…
Reference in New Issue
Block a user