aboutsummaryrefslogtreecommitdiff
path: root/test/functional/terminal/tui_spec.lua
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2015-10-01 15:37:20 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2015-10-01 15:37:20 -0300
commit536c0ba27e79929eb30850d8e11f2ed026930ab3 (patch)
tree40873cf933b5ba5cff44d1ea07db2b3f2663020e /test/functional/terminal/tui_spec.lua
parentafe8a32be01d006d6c25f69b4aa1b6e92464ab63 (diff)
parent5d185c77726dfff20b87d97897d2bb237e95d95a (diff)
downloadrneovim-536c0ba27e79929eb30850d8e11f2ed026930ab3.tar.gz
rneovim-536c0ba27e79929eb30850d8e11f2ed026930ab3.tar.bz2
rneovim-536c0ba27e79929eb30850d8e11f2ed026930ab3.zip
Merge PR #3360 'More fixes for 0.1'
Diffstat (limited to 'test/functional/terminal/tui_spec.lua')
-rw-r--r--test/functional/terminal/tui_spec.lua106
1 files changed, 106 insertions, 0 deletions
diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua
new file mode 100644
index 0000000000..d604703fee
--- /dev/null
+++ b/test/functional/terminal/tui_spec.lua
@@ -0,0 +1,106 @@
+-- Some sanity checks for the TUI using the builtin terminal emulator
+-- as a simple way to send keys and assert screen state.
+local Screen = require('test.functional.ui.screen')
+local helpers = require('test.functional.helpers')
+local thelpers = require('test.functional.terminal.helpers')
+local feed = thelpers.feed_data
+local execute = helpers.execute
+
+describe('tui', function()
+ local screen
+
+ before_each(function()
+ helpers.clear()
+ screen = thelpers.screen_setup(0, '["'..helpers.nvim_prog..'", "-u", "NONE", "--cmd", "set noswapfile"]')
+ screen.timeout = 30000 -- pasting can be really slow in the TUI
+ screen:expect([[
+ {1: } |
+ ~ |
+ ~ |
+ ~ |
+ [No Name] |
+ |
+ -- TERMINAL -- |
+ ]])
+ end)
+
+ after_each(function()
+ screen:detach()
+ end)
+
+ it('accepts basic utf-8 input', function()
+ feed('iabc\ntest1\ntest2')
+ screen:expect([[
+ abc |
+ test1 |
+ test2{1: } |
+ ~ |
+ [No Name] [+] |
+ -- INSERT -- |
+ -- TERMINAL -- |
+ ]])
+ feed('\x1b')
+ screen:expect([[
+ abc |
+ test1 |
+ test{1:2} |
+ ~ |
+ [No Name] [+] |
+ |
+ -- TERMINAL -- |
+ ]])
+ end)
+
+ it('automatically sends <Paste> for bracketed paste sequences', function()
+ feed('i\x1b[200~')
+ screen:expect([[
+ {1: } |
+ ~ |
+ ~ |
+ ~ |
+ [No Name] |
+ -- INSERT (paste) -- |
+ -- TERMINAL -- |
+ ]])
+ feed('pasted from terminal')
+ screen:expect([[
+ pasted from terminal{1: } |
+ ~ |
+ ~ |
+ ~ |
+ [No Name] [+] |
+ -- INSERT (paste) -- |
+ -- TERMINAL -- |
+ ]])
+ feed('\x1b[201~')
+ screen:expect([[
+ pasted from terminal{1: } |
+ ~ |
+ ~ |
+ ~ |
+ [No Name] [+] |
+ -- INSERT -- |
+ -- TERMINAL -- |
+ ]])
+ end)
+
+ it('can handle arbitrarily long bursts of input', function()
+ execute('set ruler')
+ local t = {}
+ for i = 1, 3000 do
+ t[i] = 'item ' .. tostring(i)
+ end
+ feed('i\x1b[200~')
+ feed(table.concat(t, '\n'))
+ feed('\x1b[201~')
+ screen:expect([[
+ item 2997 |
+ item 2998 |
+ item 2999 |
+ item 3000{1: } |
+ [No Name] [+] 3000,10 Bot|
+ -- INSERT -- |
+ -- TERMINAL -- |
+ ]])
+ end)
+end)