summaryrefslogtreecommitdiff
path: root/mnv/src/testdir/test_plugin_matchparen.mnv
diff options
context:
space:
mode:
Diffstat (limited to 'mnv/src/testdir/test_plugin_matchparen.mnv')
-rw-r--r--mnv/src/testdir/test_plugin_matchparen.mnv202
1 files changed, 202 insertions, 0 deletions
diff --git a/mnv/src/testdir/test_plugin_matchparen.mnv b/mnv/src/testdir/test_plugin_matchparen.mnv
new file mode 100644
index 0000000000..90e4485b01
--- /dev/null
+++ b/mnv/src/testdir/test_plugin_matchparen.mnv
@@ -0,0 +1,202 @@
+" Test for the matchparen plugin
+
+if !has('gui_running') && has('unix')
+ set term=ansi
+endif
+
+source util/screendump.mnv
+
+" Test for scrolling that modifies buffer during visual block
+func Test_visual_block_scroll()
+ CheckScreendump
+
+ let lines =<< trim END
+ source $MNVRUNTIME/plugin/matchparen.mnv
+ set scrolloff=1
+ call setline(1, ['a', 'b', 'c', 'd', 'e', '', '{', '}', '{', 'f', 'g', '}'])
+ call cursor(5, 1)
+ END
+
+ let filename = 'Xvisualblockmodifiedscroll'
+ call writefile(lines, filename, 'D')
+
+ let buf = RunMNVInTerminal('-S '.filename, #{rows: 7})
+ call term_sendkeys(buf, "V\<C-D>\<C-D>")
+
+ call VerifyScreenDump(buf, 'Test_display_visual_block_scroll', {})
+
+ call StopMNVInTerminal(buf)
+endfunc
+
+" Test for clearing paren highlight when switching buffers
+func Test_matchparen_clear_highlight()
+ CheckScreendump
+
+ let lines =<< trim END
+ source $MNVRUNTIME/plugin/matchparen.mnv
+ set hidden
+ call setline(1, ['()'])
+ normal 0
+
+ func OtherBuffer()
+ enew
+ exe "normal iaa\<Esc>0"
+ endfunc
+ END
+ call writefile(lines, 'XMatchparenClear', 'D')
+ let buf = RunMNVInTerminal('-S XMatchparenClear', #{rows: 5})
+ call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_1', {})
+
+ call term_sendkeys(buf, ":call OtherBuffer()\<CR>:\<Esc>")
+ call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_2', {})
+
+ call term_sendkeys(buf, "\<C-^>:\<Esc>")
+ call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_1', {})
+
+ call term_sendkeys(buf, "\<C-^>:\<Esc>")
+ call VerifyScreenDump(buf, 'Test_matchparen_clear_highlight_2', {})
+
+ call StopMNVInTerminal(buf)
+endfunc
+
+" Test for matchparen highlight when switching buffer in win_execute()
+func Test_matchparen_win_execute()
+ CheckScreendump
+
+ let lines =<< trim END
+ source $MNVRUNTIME/plugin/matchparen.mnv
+ let s:win = win_getid()
+ call setline(1, '{}')
+ split
+
+ func SwitchBuf()
+ call win_execute(s:win, 'enew | buffer #')
+ endfunc
+ END
+ call writefile(lines, 'XMatchparenWinExecute', 'D')
+ let buf = RunMNVInTerminal('-S XMatchparenWinExecute', #{rows: 5})
+ call VerifyScreenDump(buf, 'Test_matchparen_win_execute_1', {})
+
+ " Switching buffer away and back shouldn't change matchparen highlight.
+ call term_sendkeys(buf, ":call SwitchBuf()\<CR>:\<Esc>")
+ call VerifyScreenDump(buf, 'Test_matchparen_win_execute_1', {})
+
+ call StopMNVInTerminal(buf)
+endfunc
+
+" Test for scrolling that modifies buffer during visual block
+func Test_matchparen_pum_clear()
+ CheckScreendump
+
+ let lines =<< trim END
+ source $MNVRUNTIME/plugin/matchparen.mnv
+ set completeopt=menuone
+ call setline(1, ['aa', 'aaa', 'aaaa', '(a)'])
+ call cursor(4, 3)
+ END
+
+ let filename = 'Xmatchparen'
+ call writefile(lines, filename, 'D')
+
+ let buf = RunMNVInTerminal('-S '.filename, #{rows: 10})
+ call term_sendkeys(buf, "i\<C-N>\<C-N>")
+
+ call VerifyScreenDump(buf, 'Test_matchparen_pum_clear_1', {})
+
+ call StopMNVInTerminal(buf)
+endfunc
+
+" Test that matchparen works with multibyte chars in 'matchpairs'
+func Test_matchparen_mbyte()
+ CheckScreendump
+
+ let lines =<< trim END
+ source $MNVRUNTIME/plugin/matchparen.mnv
+ call setline(1, ['aaaaaaaa(', 'bbbb)cc'])
+ set matchpairs+=(:)
+ END
+
+ call writefile(lines, 'XmatchparenMbyte', 'D')
+ let buf = RunMNVInTerminal('-S XmatchparenMbyte', #{rows: 10})
+ call VerifyScreenDump(buf, 'Test_matchparen_mbyte_1', {})
+ call term_sendkeys(buf, "$")
+ call VerifyScreenDump(buf, 'Test_matchparen_mbyte_2', {})
+ call term_sendkeys(buf, "j")
+ call VerifyScreenDump(buf, 'Test_matchparen_mbyte_3', {})
+ call term_sendkeys(buf, "2h")
+ call VerifyScreenDump(buf, 'Test_matchparen_mbyte_4', {})
+ call term_sendkeys(buf, "0")
+ call VerifyScreenDump(buf, 'Test_matchparen_mbyte_5', {})
+ call term_sendkeys(buf, "kA")
+ call VerifyScreenDump(buf, 'Test_matchparen_mbyte_6', {})
+ call term_sendkeys(buf, "\<Down>")
+ call VerifyScreenDump(buf, 'Test_matchparen_mbyte_7', {})
+ call term_sendkeys(buf, "\<C-W>")
+ call VerifyScreenDump(buf, 'Test_matchparen_mbyte_8', {})
+
+ call StopMNVInTerminal(buf)
+endfunc
+
+" Test for ignoring certain parenthesis
+func Test_matchparen_ignore_sh_case()
+ CheckScreendump
+
+ let lines =<< trim END
+ source $MNVRUNTIME/plugin/matchparen.mnv
+ set ft=sh
+ call setline(1, [
+ \ '#!/bin/sh',
+ \ 'SUSUWU_PRINT() (',
+ \ ' case "${LEVEL}" in',
+ \ ' "$SUSUWU_SH_NOTICE")',
+ \ ' ${SUSUWU_S} && return 1',
+ \ ' ;;',
+ \ ' "$SUSUWU_SH_DEBUG")',
+ \ ' (! ${SUSUWU_VERBOSE}) && return 1',
+ \ ' ;;',
+ \ ' esac',
+ \ ' # snip',
+ \ ')'
+ \ ])
+ call cursor(4, 26)
+ END
+
+ let filename = 'Xmatchparen_sh'
+ call writefile(lines, filename, 'D')
+
+ let buf = RunMNVInTerminal('-S '.filename, #{rows: 10})
+ call VerifyScreenDump(buf, 'Test_matchparen_sh_case_1', {})
+ " Send keys one by one so that CursorMoved is triggered.
+ for c in 'A foobar'
+ call term_sendkeys(buf, c)
+ call term_wait(buf)
+ endfor
+ call VerifyScreenDump(buf, 'Test_matchparen_sh_case_2', {})
+ call StopMNVInTerminal(buf)
+endfunc
+
+" Test for the WinScrolled event
+func Test_scroll_winscrolled()
+ CheckScreendump
+
+ let lines =<< trim END
+ source $MNVRUNTIME/plugin/matchparen.mnv
+ set scrolloff=1
+ call setline(1, ['foobar {', '', '', '', '}'])
+ call cursor(5, 1)
+ END
+
+ let filename = 'Xmatchparen_winscrolled'
+ call writefile(lines, filename, 'D')
+
+ let buf = RunMNVInTerminal('-S '.filename, #{rows: 7})
+ call VerifyScreenDump(buf, 'Test_matchparen_winscrolled1', {})
+ call term_sendkeys(buf, "\<C-E>")
+ call VerifyScreenDump(buf, 'Test_matchparen_winscrolled2', {})
+ call term_sendkeys(buf, "\<C-Y>")
+ call VerifyScreenDump(buf, 'Test_matchparen_winscrolled1', {})
+
+ call StopMNVInTerminal(buf)
+endfunc
+
+" mnv: shiftwidth=2 sts=2 expandtab