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)

3fbd2d7c31

Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
zeertzjq 2023-04-28 13:29:45 +08:00
parent 521e039f27
commit a44c8a3783
3 changed files with 166 additions and 6 deletions

View File

@ -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)

View File

@ -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

View File

@ -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 = [