aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-04-28 13:29:45 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-04-28 16:42:23 +0800
commita44c8a3783014cc14066f46b1d9a15b0ccb08d8f (patch)
tree4ac9535cd39e51c31e436635cdc1b7dd907d2f41
parent521e039f27dea42653a31a89f2496a0a9e62c43b (diff)
downloadrneovim-a44c8a3783014cc14066f46b1d9a15b0ccb08d8f.tar.gz
rneovim-a44c8a3783014cc14066f46b1d9a15b0ccb08d8f.tar.bz2
rneovim-a44c8a3783014cc14066f46b1d9a15b0ccb08d8f.zip
vim-patch:partial:8.1.1155: termcodes tests can be improved
Problem: Termcodes tests can be improved. Solution: Add helper functions to simplify tests. Dragging statusline for xterm and sgr. (Dominique Pelle, closes vim/vim#4237) https://github.com/vim/vim/commit/3fbd2d7c316eaeea463b2f84f29b36d439306bf9 Co-authored-by: Bram Moolenaar <Bram@vim.org>
-rw-r--r--test/old/testdir/mouse.vim4
-rw-r--r--test/old/testdir/test_selectmode.vim11
-rw-r--r--test/old/testdir/test_termcodes.vim157
3 files changed, 166 insertions, 6 deletions
diff --git a/test/old/testdir/mouse.vim b/test/old/testdir/mouse.vim
index 119f4725cf..a3b0ddd008 100644
--- a/test/old/testdir/mouse.vim
+++ b/test/old/testdir/mouse.vim
@@ -1,5 +1,9 @@
" Helper functions for generating mouse events
+let g:Ttymouse_values = ['sgr']
+let g:Ttymouse_dec = []
+let g:Ttymouse_netterm = []
+
func MouseLeftClick(row, col)
call nvim_input_mouse('left', 'press', '', 0, a:row - 1, a:col - 1)
call getchar(1)
diff --git a/test/old/testdir/test_selectmode.vim b/test/old/testdir/test_selectmode.vim
index c72e345efd..d1afd5204f 100644
--- a/test/old/testdir/test_selectmode.vim
+++ b/test/old/testdir/test_selectmode.vim
@@ -163,7 +163,7 @@ endfunc
" Test double/triple/quadruple click to start 'select' mode
func Test_term_mouse_multiple_clicks_to_select_mode()
let save_mouse = &mouse
- " let save_term = &term
+ let save_term = &term
" let save_ttymouse = &ttymouse
" call test_override('no_query_mouse', 1)
" set mouse=a term=xterm mousetime=200
@@ -171,10 +171,9 @@ func Test_term_mouse_multiple_clicks_to_select_mode()
set selectmode=mouse
new
- " for ttymouse_val in g:Ttymouse_values + g:Ttymouse_dec
- " let msg = 'ttymouse=' .. ttymouse_val
- " exe 'set ttymouse=' .. ttymouse_val
- let msg = ''
+ for ttymouse_val in g:Ttymouse_values + g:Ttymouse_dec
+ let msg = 'ttymouse=' .. ttymouse_val
+ " exe 'set ttymouse=' .. ttymouse_val
" Single-click and drag should 'select' the characters
call setline(1, ['foo [foo bar] foo', 'foo'])
@@ -247,7 +246,7 @@ func Test_term_mouse_multiple_clicks_to_select_mode()
call assert_equal("\<c-s>", mode(), msg)
norm! x
call assert_equal(['axaa', 'bxbb'], getline(1, '$'), msg)
- " endfor
+ endfor
let &mouse = save_mouse
" let &term = save_term
diff --git a/test/old/testdir/test_termcodes.vim b/test/old/testdir/test_termcodes.vim
index 99bc2d1d37..8587659334 100644
--- a/test/old/testdir/test_termcodes.vim
+++ b/test/old/testdir/test_termcodes.vim
@@ -1,4 +1,161 @@
+source check.vim
+" CheckNotGui
+" CheckUnix
+
+source shared.vim
+source mouse.vim
+source view_util.vim
+source term_util.vim
+
+func Test_xterm_mouse_click()
+ new
+ let save_mouse = &mouse
+ let save_term = &term
+ " let save_ttymouse = &ttymouse
+ " set mouse=a term=xterm
+ set mouse=a
+ call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer'])
+ for ttymouse_val in ['sgr']
+ " exe 'set ttymouse=' . ttymouse_val
+ go
+ call assert_equal([0, 1, 1, 0], getpos('.'))
+ let row = 2
+ let col = 6
+ call MouseLeftClick(row, col)
+ call MouseLeftRelease(row, col)
+ call assert_equal([0, 2, 6, 0], getpos('.'))
+ endfor
+
+ let &mouse = save_mouse
+ " let &term = save_term
+ " let &ttymouse = save_ttymouse
+ bwipe!
+endfunc
+
+func Test_xterm_mouse_wheel()
+ new
+ let save_mouse = &mouse
+ let save_term = &term
+ " let save_ttymouse = &ttymouse
+ " set mouse=a term=xterm
+ set mouse=a
+ call setline(1, range(1, 100))
+
+ for ttymouse_val in ['sgr']
+ " exe 'set ttymouse=' . ttymouse_val
+ go
+ call assert_equal(1, line('w0'))
+ call assert_equal([0, 1, 1, 0], getpos('.'))
+
+ call MouseWheelDown(1, 1)
+ call assert_equal(4, line('w0'))
+ call assert_equal([0, 4, 1, 0], getpos('.'))
+
+ call MouseWheelDown(1, 1)
+ call assert_equal(7, line('w0'))
+ call assert_equal([0, 7, 1, 0], getpos('.'))
+
+ call MouseWheelUp(1, 1)
+ call assert_equal(4, line('w0'))
+ call assert_equal([0, 7, 1, 0], getpos('.'))
+
+ call MouseWheelUp(1, 1)
+ call assert_equal(1, line('w0'))
+ call assert_equal([0, 7, 1, 0], getpos('.'))
+ endfor
+
+ let &mouse = save_mouse
+ " let &term = save_term
+ " let &ttymouse = save_ttymouse
+ bwipe!
+endfunc
+
+func Test_xterm_mouse_drag_window_separator()
+ let save_mouse = &mouse
+ let save_term = &term
+ " let save_ttymouse = &ttymouse
+ " set mouse=a term=xterm
+ set mouse=a
+
+ for ttymouse_val in ['sgr']
+ " exe 'set ttymouse=' . ttymouse_val
+
+ " Split horizontally and test dragging the horizontal window separator.
+ split
+ let rowseparator = winheight(0) + 1
+ let row = rowseparator
+ let col = 1
+ call MouseLeftClick(row, col)
+
+ let row -= 1
+ call MouseLeftDrag(row, col)
+ call assert_equal(rowseparator - 1, winheight(0) + 1)
+ let row += 1
+ call MouseLeftDrag(row, col)
+ call assert_equal(rowseparator, winheight(0) + 1)
+ call MouseLeftRelease(row, col)
+ call assert_equal(rowseparator, winheight(0) + 1)
+
+ bwipe!
+
+ " Split vertically and test dragging the vertical window separator.
+ vsplit
+ let colseparator = winwidth(0) + 1
+
+ let row = 1
+ let col = colseparator
+ call MouseLeftClick(row, col)
+ let col -= 1
+ call MouseLeftDrag(row, col)
+ call assert_equal(colseparator - 1, winwidth(0) + 1)
+ let col += 1
+ call MouseLeftDrag(row, col)
+ call assert_equal(colseparator, winwidth(0) + 1)
+ call MouseLeftRelease(row, col)
+ call assert_equal(colseparator, winwidth(0) + 1)
+
+ bwipe!
+ endfor
+
+ let &mouse = save_mouse
+ " let &term = save_term
+ " let &ttymouse = save_ttymouse
+endfunc
+
+func Test_xterm_mouse_drag_statusline()
+ let save_mouse = &mouse
+ let save_term = &term
+ " let save_ttymouse = &ttymouse
+ " set mouse=a term=xterm
+ set mouse=a
+
+ for ttymouse_val in ['sgr']
+ " exe 'set ttymouse=' . ttymouse_val
+
+ call assert_equal(1, &cmdheight)
+ let rowstatusline = winheight(0) + 1
+ let row = rowstatusline
+ let col = 1
+ call MouseLeftClick(row, col)
+ let row -= 1
+ call MouseLeftDrag(row, col)
+ call assert_equal(2, &cmdheight)
+ call assert_equal(rowstatusline - 1, winheight(0) + 1)
+ let row += 1
+ call MouseLeftDrag(row, col)
+ call assert_equal(1, &cmdheight)
+ call assert_equal(rowstatusline, winheight(0) + 1)
+ call MouseLeftRelease(row, col)
+ call assert_equal(1, &cmdheight)
+ call assert_equal(rowstatusline, winheight(0) + 1)
+ endfor
+
+ let &mouse = save_mouse
+ " let &term = save_term
+ " let &ttymouse = save_ttymouse
+endfunc
+
" Test for translation of special key codes (<xF1>, <xF2>, etc.)
func Test_Keycode_Translation()
let keycodes = [