Functional tests for feedkeys CSI escaping

- tests for vim_feedkeys and replace_termcodes
This commit is contained in:
Rui Abreu Ferreira
2014-10-20 10:21:24 +01:00
committed by Thiago de Arruda
parent e644369f6e
commit 84eb118f62

View File

@@ -1,6 +1,6 @@
-- Sanity checks for vim_* API calls via msgpack-rpc
local helpers = require('test.functional.helpers')
local clear, nvim, eq, ok = helpers.clear, helpers.nvim, helpers.eq, helpers.ok
local clear, nvim, eq, neq, ok = helpers.clear, helpers.nvim, helpers.eq, helpers.neq, helpers.ok
describe('vim_* functions', function()
@@ -106,6 +106,47 @@ describe('vim_* functions', function()
end)
end)
describe('replace_termcodes', function()
it('escapes K_SPECIAL as K_SPECIAL KS_SPECIAL KE_FILLER', function()
eq(helpers.nvim('replace_termcodes', '\x80', true, true, true), '\x80\xfeX')
end)
it('leaves non K_SPECIAL string unchanged', function()
eq(helpers.nvim('replace_termcodes', 'abc', true, true, true), 'abc')
end)
it('converts <expressions>', function()
eq(helpers.nvim('replace_termcodes', '<Leader>', true, true, true), '\\')
end)
end)
describe('feedkeys', function()
it('CSI escaping', function()
local function on_setup()
-- notice the special char(…) \xe2\80\xa6
nvim('feedkeys', ':let x1="…"\n', '', true)
-- Both replace_termcodes and feedkeys escape \x80
local inp = helpers.nvim('replace_termcodes', ':let x2="…"<CR>', true, true, true)
nvim('feedkeys', inp, '', true)
-- Disabling CSI escaping in feedkeys
inp = helpers.nvim('replace_termcodes', ':let x3="…"<CR>', true, true, true)
nvim('feedkeys', inp, '', false)
helpers.stop()
end
-- spin the loop a bit
helpers.run(nil, nil, on_setup)
eq(nvim('get_var', 'x1'), '')
-- Because of the double escaping this is neq
neq(nvim('get_var', 'x2'), '')
eq(nvim('get_var', 'x3'), '')
end)
end)
it('can throw exceptions', function()
local status, err = pcall(nvim, 'get_option', 'invalid-option')
eq(false, status)