diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-12-09 14:12:12 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-12-10 07:51:06 -0300 |
commit | 40977e78a27ac7449f759cefa103e356bc2ca5dd (patch) | |
tree | b9e5237405815b82820d849a8090c61fc4f6d5cc /test/functional/ui/mouse_spec.lua | |
parent | b11ada1aba4c6d15128446b9669b5993ce937d11 (diff) | |
download | rneovim-40977e78a27ac7449f759cefa103e356bc2ca5dd.tar.gz rneovim-40977e78a27ac7449f759cefa103e356bc2ca5dd.tar.bz2 rneovim-40977e78a27ac7449f759cefa103e356bc2ca5dd.zip |
input: Recognize mouse events for abstract_ui
Diffstat (limited to 'test/functional/ui/mouse_spec.lua')
-rw-r--r-- | test/functional/ui/mouse_spec.lua | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/test/functional/ui/mouse_spec.lua b/test/functional/ui/mouse_spec.lua new file mode 100644 index 0000000000..507b5aacae --- /dev/null +++ b/test/functional/ui/mouse_spec.lua @@ -0,0 +1,157 @@ +local helpers = require('test.functional.helpers') +local Screen = require('test.functional.ui.screen') +local clear, feed, nvim = helpers.clear, helpers.feed, helpers.nvim + +describe('Mouse input', function() + local screen, hlgroup_colors + + setup(function() + hlgroup_colors = { + Visual = nvim('name_to_color', 'LightGrey'), + } + end) + + before_each(function() + clear() + nvim('set_option', 'mouse', 'a') + -- set mouset to very high value to ensure that even in valgrind/travis, + -- nvim will still pick multiple clicks + nvim('set_option', 'mouset', 5000) + screen = Screen.new(25, 5) + screen:attach() + screen:set_default_attr_ids({ + [1] = {background = hlgroup_colors.Visual} + }) + feed('itesting<cr>mouse<cr>support and selection<esc>') + screen:expect([[ + testing | + mouse | + support and selectio^ | + ~ | + | + ]]) + end) + + after_each(function() + screen:detach() + end) + + it('left click moves cursor', function() + feed('<LeftMouse><2,1>') + screen:expect([[ + testing | + mo^se | + support and selection | + ~ | + | + ]]) + feed('<LeftMouse><0,0>') + screen:expect([[ + ^esting | + mouse | + support and selection | + ~ | + | + ]]) + end) + + it('left drag changes visual selection', function() + -- drag events must be preceded by a click + feed('<LeftMouse><2,1>') + screen:expect([[ + testing | + mo^se | + support and selection | + ~ | + | + ]]) + feed('<LeftDrag><4,1>') + screen:expect([[ + testing | + mo{1:us}^ | + support and selection | + ~ | + -- VISUAL -- | + ]]) + feed('<LeftDrag><2,2>') + screen:expect([[ + testing | + mo{1:use } | + {1:su}^port and selection | + ~ | + -- VISUAL -- | + ]]) + feed('<LeftDrag><0,0>') + screen:expect([[ + ^{1:esting } | + {1:mou}se | + support and selection | + ~ | + -- VISUAL -- | + ]]) + end) + + it('two clicks will select the word and enter VISUAL', function() + feed('<LeftMouse><2,2><LeftMouse><2,2>') + screen:expect([[ + testing | + mouse | + {1:suppor}^ and selection | + ~ | + -- VISUAL -- | + ]]) + end) + + it('three clicks will select the line and enter VISUAL LINE', function() + feed('<LeftMouse><2,2><LeftMouse><2,2><LeftMouse><2,2>') + screen:expect([[ + testing | + mouse | + {1:su}^{1:port and selection } | + ~ | + -- VISUAL LINE -- | + ]]) + end) + + it('four clicks will enter VISUAL BLOCK', function() + feed('<LeftMouse><2,2><LeftMouse><2,2><LeftMouse><2,2><LeftMouse><2,2>') + screen:expect([[ + testing | + mouse | + su^port and selection | + ~ | + -- VISUAL BLOCK -- | + ]]) + end) + + it('right click extends visual selection to the clicked location', function() + feed('<LeftMouse><0,0>') + screen:expect([[ + ^esting | + mouse | + support and selection | + ~ | + | + ]]) + feed('<RightMouse><2,2>') + screen:expect([[ + {1:testing } | + {1:mouse } | + {1:su}^port and selection | + ~ | + -- VISUAL -- | + ]]) + end) + + it('ctrl + left click will search for a tag', function() + feed('<C-LeftMouse><0,0>') + screen:expect([[ + E433: No tags file | + E426: tag not found: test| + ing | + Press ENTER or type comma| + nd to continue^ | + ]]) + feed('<cr>') + end) +end) |