1" Tests for cursor(). 2 3func Test_wrong_arguments() 4 call assert_fails('call cursor(1. 3)', 'E474:') 5 call assert_fails('call cursor(test_null_list())', 'E474:') 6endfunc 7 8func Test_move_cursor() 9 new 10 call setline(1, ['aaa', 'bbb', 'ccc', 'ddd']) 11 12 call cursor([1, 1, 0, 1]) 13 call assert_equal([1, 1, 0, 1], getcurpos()[1:]) 14 call cursor([4, 3, 0, 3]) 15 call assert_equal([4, 3, 0, 3], getcurpos()[1:]) 16 17 call cursor(2, 2) 18 call assert_equal([2, 2, 0, 2], getcurpos()[1:]) 19 " line number zero keeps the line number 20 call cursor(0, 1) 21 call assert_equal([2, 1, 0, 1], getcurpos()[1:]) 22 " col number zero keeps the column 23 call cursor(3, 0) 24 call assert_equal([3, 1, 0, 1], getcurpos()[1:]) 25 " below last line goes to last line 26 eval [9, 1]->cursor() 27 call assert_equal([4, 1, 0, 1], getcurpos()[1:]) 28 29 call setline(1, ["\<TAB>"]) 30 call cursor(1, 1, 1) 31 call assert_equal([1, 1, 1], getcurpos()[1:3]) 32 33 call assert_equal(-1, cursor(-1, -1)) 34 35 quit! 36endfunc 37 38" Very short version of what matchparen does. 39function s:Highlight_Matching_Pair() 40 let save_cursor = getcurpos() 41 eval save_cursor->setpos('.') 42endfunc 43 44func Test_curswant_with_autocommand() 45 new 46 call setline(1, ['func()', '{', '}', '----']) 47 autocmd! CursorMovedI * call s:Highlight_Matching_Pair() 48 call test_override("char_avail", 1) 49 exe "normal! 3Ga\<Down>X\<Esc>" 50 call test_override("char_avail", 0) 51 call assert_equal('-X---', getline(4)) 52 autocmd! CursorMovedI * 53 quit! 54endfunc 55 56" Tests for behavior of curswant with cursorcolumn/line 57func Test_curswant_with_cursorcolumn() 58 new 59 call setline(1, ['01234567', '']) 60 exe "normal! ggf6j" 61 call assert_equal(6, winsaveview().curswant) 62 set cursorcolumn 63 call assert_equal(6, winsaveview().curswant) 64 quit! 65endfunc 66 67func Test_curswant_with_cursorline() 68 new 69 call setline(1, ['01234567', '']) 70 exe "normal! ggf6j" 71 call assert_equal(6, winsaveview().curswant) 72 set cursorline 73 call assert_equal(6, winsaveview().curswant) 74 quit! 75endfunc 76 77func Test_screenpos() 78 rightbelow new 79 rightbelow 20vsplit 80 call setline(1, ["\tsome text", "long wrapping line here", "next line"]) 81 redraw 82 let winid = win_getid() 83 let [winrow, wincol] = win_screenpos(winid) 84 call assert_equal({'row': winrow, 85 \ 'col': wincol + 0, 86 \ 'curscol': wincol + 7, 87 \ 'endcol': wincol + 7}, winid->screenpos(1, 1)) 88 call assert_equal({'row': winrow, 89 \ 'col': wincol + 13, 90 \ 'curscol': wincol + 13, 91 \ 'endcol': wincol + 13}, winid->screenpos(1, 7)) 92 call assert_equal({'row': winrow + 2, 93 \ 'col': wincol + 1, 94 \ 'curscol': wincol + 1, 95 \ 'endcol': wincol + 1}, screenpos(winid, 2, 22)) 96 setlocal number 97 call assert_equal({'row': winrow + 3, 98 \ 'col': wincol + 9, 99 \ 'curscol': wincol + 9, 100 \ 'endcol': wincol + 9}, screenpos(winid, 2, 22)) 101 close 102 call assert_equal({}, screenpos(999, 1, 1)) 103 bwipe! 104endfunc 105 106func Test_screenpos_number() 107 rightbelow new 108 rightbelow 73vsplit 109 call setline (1, repeat('x', 66)) 110 setlocal number 111 redraw 112 let winid = win_getid() 113 let [winrow, wincol] = win_screenpos(winid) 114 let pos = screenpos(winid, 1, 66) 115 call assert_equal(winrow, pos.row) 116 call assert_equal(wincol + 66 + 3, pos.col) 117 close 118 bwipe! 119endfunc 120 121" vim: shiftwidth=2 sts=2 expandtab 122