diff options
| author | Thiago de Arruda <tpadilha84@gmail.com> | 2015-03-25 22:08:14 -0300 |
|---|---|---|
| committer | Thiago de Arruda <tpadilha84@gmail.com> | 2015-03-25 22:08:14 -0300 |
| commit | a6e53a3797a93fe060f807fe2e4c6361854b6c97 (patch) | |
| tree | b684785ba9c769491e6ebdac8e21495cf22dbdd3 /test/functional/terminal/mouse_spec.lua | |
| parent | d2d99454e63c0e6649fddd52bbd9a10d27c2e347 (diff) | |
| parent | 2aa2513b8e023a0d7bd2071299f0ea59a4d4ce25 (diff) | |
| download | rneovim-a6e53a3797a93fe060f807fe2e4c6361854b6c97.tar.gz rneovim-a6e53a3797a93fe060f807fe2e4c6361854b6c97.tar.bz2 rneovim-a6e53a3797a93fe060f807fe2e4c6361854b6c97.zip | |
Merge PR #2076 'Builtin terminal emulation'
Diffstat (limited to 'test/functional/terminal/mouse_spec.lua')
| -rw-r--r-- | test/functional/terminal/mouse_spec.lua | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/test/functional/terminal/mouse_spec.lua b/test/functional/terminal/mouse_spec.lua new file mode 100644 index 0000000000..b8f6214f8f --- /dev/null +++ b/test/functional/terminal/mouse_spec.lua @@ -0,0 +1,188 @@ +local Screen = require('test.functional.ui.screen') +local helpers = require('test.functional.helpers') +local thelpers = require('test.functional.terminal.helpers') +local clear, eq, curbuf = helpers.clear, helpers.eq, helpers.curbuf +local feed, execute, nvim = helpers.feed, helpers.execute, helpers.nvim +local feed_data = thelpers.feed_data + +describe('terminal mouse', function() + local screen + + before_each(function() + clear() + nvim('set_option', 'statusline', '==========') + nvim('command', 'highlight StatusLine cterm=NONE') + nvim('command', 'highlight StatusLineNC cterm=NONE') + nvim('command', 'highlight VertSplit cterm=NONE') + screen = thelpers.screen_setup() + local lines = {} + for i = 1, 30 do + table.insert(lines, 'line'..tostring(i)) + end + table.insert(lines, '') + feed_data(lines) + screen:expect([[ + line26 | + line27 | + line28 | + line29 | + line30 | + {1: } | + -- TERMINAL -- | + ]]) + end) + + after_each(function() + screen:detach() + end) + + describe('when the terminal has focus', function() + it('will exit focus when scrolled', function() + feed('<MouseDown><0,0>') + screen:expect([[ + line23 | + line24 | + line25 | + line26 | + line27 | + ^line28 | + | + ]]) + end) + + describe('with mouse events enabled by the program', function() + before_each(function() + thelpers.enable_mouse() + thelpers.feed_data('mouse enabled\n') + screen:expect([[ + line27 | + line28 | + line29 | + line30 | + mouse enabled | + {1: } | + -- TERMINAL -- | + ]]) + end) + + it('will forward mouse clicks to the program', function() + feed('<LeftMouse><1,2>') + screen:expect([[ + line27 | + line28 | + line29 | + line30 | + mouse enabled | + "#{1: } | + -- TERMINAL -- | + ]]) + end) + + it('will forward mouse scroll to the program', function() + feed('<MouseDown><0,0>') + screen:expect([[ + line27 | + line28 | + line29 | + line30 | + mouse enabled | + `!!{1: } | + -- TERMINAL -- | + ]]) + end) + end) + + describe('with a split window and other buffer', function() + before_each(function() + feed('<c-\\><c-n>:vsp<cr>') + screen:expect([[ + line21 |line21 | + line22 |line22 | + line23 |line23 | + line24 |line24 | + ^rows: 5, cols: 24 |rows: 5, cols: 24 | + ========== ========== | + | + ]]) + feed(':enew | set number<cr>') + screen:expect([[ + 1 ^ |line21 | + ~ |line22 | + ~ |line23 | + ~ |line24 | + ~ |rows: 5, cols: 24 | + ========== ========== | + :enew | set number | + ]]) + feed('30iline\n<esc>') + screen:expect([[ + 27 line |line21 | + 28 line |line22 | + 29 line |line23 | + 30 line |line24 | + 31 ^ |rows: 5, cols: 24 | + ========== ========== | + | + ]]) + feed('<c-w>li') + screen:expect([[ + 27 line |line22 | + 28 line |line23 | + 29 line |line24 | + 30 line |rows: 5, cols: 24 | + 31 |{1: } | + ========== ========== | + -- TERMINAL -- | + ]]) + -- enabling mouse won't affect interaction with other windows + thelpers.enable_mouse() + thelpers.feed_data('mouse enabled\n') + screen:expect([[ + 27 line |line23 | + 28 line |line24 | + 29 line |rows: 5, cols: 24 | + 30 line |mouse enabled | + 31 |{1: } | + ========== ========== | + -- TERMINAL -- | + ]]) + end) + + it('wont lose focus if another window is scrolled', function() + feed('<MouseDown><0,0><MouseDown><0,0>') + screen:expect([[ + 21 line |line23 | + 22 line |line24 | + 23 line |rows: 5, cols: 24 | + 24 line |mouse enabled | + 25 line |{1: } | + ========== ========== | + -- TERMINAL -- | + ]]) + feed('<S-MouseUp><0,0>') + screen:expect([[ + 26 line |line23 | + 27 line |line24 | + 28 line |rows: 5, cols: 24 | + 29 line |mouse enabled | + 30 line |{1: } | + ========== ========== | + -- TERMINAL -- | + ]]) + end) + + it('will lose focus if another window is clicked', function() + feed('<LeftMouse><5,1>') + screen:expect([[ + 27 line |line23 | + 28 l^ine |line24 | + 29 line |rows: 5, cols: 24 | + 30 line |mouse enabled | + 31 |{2: } | + ========== ========== | + | + ]]) + end) + end) + end) +end) |