diff options
author | Jay Sandhu <jaysandhu1993@gmail.com> | 2020-09-02 17:51:59 +0100 |
---|---|---|
committer | zeertzjq <zeertzjq@outlook.com> | 2022-02-17 08:45:15 +0800 |
commit | 80a3018a09c1dbfdaa195b25502588dc72c2e186 (patch) | |
tree | dfff761c5e46f4ead180416194cc3a1ef02d417e /test/functional/ex_cmds/map_spec.lua | |
parent | 2ffe66a5a4e1297ee24fd3ab8cc4dda45b1381bd (diff) | |
download | rneovim-80a3018a09c1dbfdaa195b25502588dc72c2e186.tar.gz rneovim-80a3018a09c1dbfdaa195b25502588dc72c2e186.tar.bz2 rneovim-80a3018a09c1dbfdaa195b25502588dc72c2e186.zip |
test: add some tests for :*map <expr>
Add tests for:
- Cursor position restored after :map expr
- Cursor position restored after :imap expr
- Error in :cmap expr handled correctly
Cherry-picked from #12837
Diffstat (limited to 'test/functional/ex_cmds/map_spec.lua')
-rw-r--r-- | test/functional/ex_cmds/map_spec.lua | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/test/functional/ex_cmds/map_spec.lua b/test/functional/ex_cmds/map_spec.lua index 84d5bc2335..9663eb75c1 100644 --- a/test/functional/ex_cmds/map_spec.lua +++ b/test/functional/ex_cmds/map_spec.lua @@ -1,4 +1,5 @@ local helpers = require("test.functional.helpers")(after_each) +local Screen = require('test.functional.ui.screen') local eq = helpers.eq local feed = helpers.feed @@ -26,3 +27,104 @@ describe(':*map', function() expect('-foo-') end) end) + +describe(':*map <expr>', function() + local screen + before_each(function() + clear() + screen = Screen.new(20, 5) + screen:attach() + end) + + it('cursor is restored after :map <expr>', function() + command(':map <expr> x input("> ")') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + | + ]]) + feed('x') + screen:expect([[ + | + ~ | + ~ | + ~ | + > ^ | + ]]) + feed('\n') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + > | + ]]) + end) + + it('cursor is restored after :imap <expr>', function() + command(':imap <expr> x input("> ")') + feed('i') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + -- INSERT -- | + ]]) + feed('x') + screen:expect([[ + | + ~ | + ~ | + ~ | + > ^ | + ]]) + feed('\n') + screen:expect([[ + ^ | + ~ | + ~ | + ~ | + > | + ]]) + end) + + it('error in :cmap <expr> handled correctly', function() + screen:try_resize(40, 5) + command(':cmap <expr> x execute("throw 42")') + feed(':echo "foo') + screen:expect([[ + | + ~ | + ~ | + ~ | + :echo "foo^ | + ]]) + feed('x') + screen:expect([[ + | + :echo "foo | + Error detected while processing : | + E605: Exception not caught: 42 | + :echo "foo^ | + ]]) + feed('"') + screen:expect([[ + | + :echo "foo | + Error detected while processing : | + E605: Exception not caught: 42 | + :echo "foo"^ | + ]]) + feed('\n') + screen:expect([[ + :echo "foo | + Error detected while processing : | + E605: Exception not caught: 42 | + foo | + Press ENTER or type command to continue^ | + ]]) + end) +end) |