Patch 8.1.1155
Problem:    Termcodes tests can be improved.
Solution:   Add helper functions to simplify tests.  Dragging statusline for
            xterm and sgr. (Dominique Pelle, closes #4237)
Files:      src/testdir/test_termcodes.vim


*** ../vim-8.1.1154/src/testdir/test_termcodes.vim      2019-04-09 
21:51:59.177300145 +0200
--- src/testdir/test_termcodes.vim      2019-04-11 23:53:26.777268934 +0200
***************
*** 5,43 ****
    finish
  endif
  
  func Test_xterm_mouse_click()
    new
    let save_mouse = &mouse
    let save_term = &term
    let save_ttymouse = &ttymouse
!   set mouse=a
!   set term=xterm
    call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer'])
-   redraw
- 
-   " Xterm mouse click
-   set ttymouse=xterm
-   let button = 0x20  " left down
-   let row = 2 + 32
-   let col = 6 + 32
-   call feedkeys("\<Esc>[M" .. list2str([button, col, row]), 'Lx!')
- 
-   let button = 0x23  " release
-   call feedkeys("\<Esc>[M" .. list2str([button, col, row]), 'Lx!')
- 
-   call assert_equal([0, 2, 6, 0], getpos('.'))
- 
-   " SGR mouse click
-   set ttymouse=sgr
-   let button = 0  " left down
-   let row = 3
-   let col = 9
-   call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!')
- 
-   let button = 3  " release
-   call feedkeys(printf("\<Esc>[<%d;%d;%dm", button, col, row), 'Lx!')
  
!   call assert_equal([0, 3, 9, 0], getpos('.'))
  
    let &mouse = save_mouse
    let &term = save_term
--- 5,65 ----
    finish
  endif
  
+ " Helper function to emit a terminal escape code.
+ func TerminalEscapeCode(code_xterm, code_sgr, row, col, m)
+   if &ttymouse ==# 'xterm'
+     " need to use byte encoding here.
+     let str = list2str([a:code_xterm, a:col + 0x20, a:row + 0x20])
+     if has('iconv')
+       let bytes = iconv(str, 'utf-8', 'latin1')
+     else
+       " Hopefully the numbers are not too big.
+       let bytes = str
+     endif
+     call feedkeys("\<Esc>[M" .. bytes, 'Lx!')
+   elseif &ttymouse ==# 'sgr'
+     call feedkeys(printf("\<Esc>[<%d;%d;%d%s", a:code_sgr, a:col, a:row, 
a:m), 'Lx!')
+   endif
+ endfunc
+ 
+ func MouseLeftClick(row, col)
+   call TerminalEscapeCode(0x20, 0, a:row, a:col, 'M')
+ endfunc
+ 
+ func MouseLeftRelease(row, col)
+   call TerminalEscapeCode(0x23, 3, a:row, a:col, 'm')
+ endfunc
+ 
+ func MouseLeftDrag(row, col)
+   call TerminalEscapeCode(0x43, 0x20, a:row, a:col, 'M')
+ endfunc
+ 
+ func MouseWheelUp(row, col)
+   call TerminalEscapeCode(0x40, 0x40, a:row, a:col, 'M')
+ endfunc
+ 
+ func MouseWheelDown(row, col)
+   call TerminalEscapeCode(0x41, 0x41, a:row, a:col, 'M')
+ endfunc
+ 
  func Test_xterm_mouse_click()
    new
    let save_mouse = &mouse
    let save_term = &term
    let save_ttymouse = &ttymouse
!   set mouse=a term=xterm
    call setline(1, ['line 1', 'line 2', 'line 3 is a bit longer'])
  
!   for ttymouse_val in ['xterm', '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
***************
*** 50,110 ****
    let save_mouse = &mouse
    let save_term = &term
    let save_ttymouse = &ttymouse
!   set mouse=a
!   set term=xterm
    call setline(1, range(1, 100))
  
!   " Test Xterm mouse wheel.
!   set ttymouse=xterm
!   let button = 0x41 " wheel down.
!   let row = 1 + 32  " cursor position for mouse wheel is not relevant.
!   let col = 1 + 32
! 
!   call assert_equal(1, line('w0'))
!   call assert_equal([0, 1, 1, 0], getpos('.'))
!   call feedkeys("\<Esc>[M" .. list2str([button, col, row]), 'Lx!')
!   call assert_equal(4, line('w0'))
!   call assert_equal([0, 4, 1, 0], getpos('.'))
!   call feedkeys("\<Esc>[M" .. list2str([button, col, row]), 'Lx!')
!   call assert_equal(7, line('w0'))
!   call assert_equal([0, 7, 1, 0], getpos('.'))
! 
!   let button = 0x40  " wheel up.
! 
!   call feedkeys("\<Esc>[M" .. list2str([button, col, row]), 'Lx!')
!   call assert_equal(4, line('w0'))
!   call assert_equal([0, 7, 1, 0], getpos('.'))
!   call feedkeys("\<Esc>[M" .. list2str([button, col, row]), 'Lx!')
!   call assert_equal(1, line('w0'))
!   call assert_equal([0, 7, 1, 0], getpos('.'))
! 
!   " Test SGR mouse wheel.
!   set ttymouse=sgr
!   go
!   let button = 0x41 " wheel down.
!   let row = 1       " cursor position for mouse wheel is not relevant.
!   let col = 1
! 
!   call assert_equal(1, line('w0'))
!   call assert_equal([0, 1, 1, 0], getpos('.'))
!   call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!')
!   call assert_equal(4, line('w0'))
!   call assert_equal([0, 4, 1, 0], getpos('.'))
!   call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!')
!   call assert_equal(7, line('w0'))
!   call assert_equal([0, 7, 1, 0], getpos('.'))
! 
!   let button = 0x40  " wheel up.
! 
!   call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!')
!   call assert_equal(4, line('w0'))
!   call assert_equal([0, 7, 1, 0], getpos('.'))
!   call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!')
!   call assert_equal(1, line('w0'))
!   call assert_equal([0, 7, 1, 0], getpos('.'))
!   call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!')
!   call assert_equal(1, line('w0'))
!   call assert_equal([0, 7, 1, 0], getpos('.'))
  
    let &mouse = save_mouse
    let &term = save_term
--- 72,102 ----
    let save_mouse = &mouse
    let save_term = &term
    let save_ttymouse = &ttymouse
!   set mouse=a term=xterm
    call setline(1, range(1, 100))
  
!   for ttymouse_val in ['xterm', '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
***************
*** 116,170 ****
    let save_mouse = &mouse
    let save_term = &term
    let save_ttymouse = &ttymouse
!   set mouse=a
!   set term=xterm
!   set ttymouse=sgr
! 
!   " Split horizontally and test dragging the horizontal window separator.
!   split
!   let rowseparator = winheight(0) + 1
! 
!   let button = 0  " left down.
!   let row = rowseparator
!   let col = 1
!   call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!')
! 
!   let drag = 32
!   let row -= 1
!   call feedkeys(printf("\<Esc>[<%d;%d;%dM", drag, col, row), 'Lx!')
!   call assert_equal(rowseparator - 1, winheight(0) + 1)
!   let row += 1
!   call feedkeys(printf("\<Esc>[<%d;%d;%dM", drag, col, row), 'Lx!')
!   call assert_equal(rowseparator, winheight(0) + 1)
! 
!   let release = 3
!   call feedkeys(printf("\<Esc>[<%d;%d;%dm", release, col, row), 'Lx!')
!   call assert_equal(rowseparator, winheight(0) + 1)
  
!   bwipe!
  
!   " Split vertically and test dragging the vertical window separator.
!   vsplit
!   let colseparator = winwidth(0) + 1
! 
!   let button = 0
!   let row = 1
!   let col = colseparator
!   call feedkeys(printf("\<Esc>[<%d;%d;%dM", button, col, row), 'Lx!')
! 
!   let drag = 32
!   let col -= 1
!   call feedkeys(printf("\<Esc>[<%d;%d;%dM", drag, col, row), 'Lx!')
!   call assert_equal(colseparator - 1, winwidth(0) + 1)
!   let col += 1
!   call feedkeys(printf("\<Esc>[<%d;%d;%dM", drag, col, row), 'Lx!')
!   call assert_equal(colseparator, winwidth(0) + 1)
! 
!   let release = 3
!   call feedkeys(printf("\<Esc>[<%d;%d;%dm", release, col, row), 'Lx!')
!   call assert_equal(colseparator, winwidth(0) + 1)
  
-   bwipe!
    let &mouse = save_mouse
    let &term = save_term
    let &ttymouse = save_ttymouse
--- 108,187 ----
    let save_mouse = &mouse
    let save_term = &term
    let save_ttymouse = &ttymouse
!   set mouse=a term=xterm
  
!   for ttymouse_val in ['xterm', '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
! 
!   for ttymouse_val in ['xterm', '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
*** ../vim-8.1.1154/src/version.c       2019-04-11 20:14:52.448664389 +0200
--- src/version.c       2019-04-11 23:02:25.131500056 +0200
***************
*** 773,774 ****
--- 773,776 ----
  {   /* Add new patch number below this line */
+ /**/
+     1155,
  /**/

-- 
Did you hear about the new 3 million dollar West Virginia State Lottery?
The winner gets 3 dollars a year for a million years.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui