blob: cbaad24187bae8f062b82b5dcc0c683a0bec2442 [file] [log] [blame]
Bram Moolenaar5a46a582016-01-15 15:56:58 +01001" Tests for cursor().
2
3func Test_wrong_arguments()
Bram Moolenaar37175402017-03-18 20:18:45 +01004 call assert_fails('call cursor(1. 3)', 'E474:')
Bram Moolenaar92b83cc2020-04-25 15:24:44 +02005 call assert_fails('call cursor(test_null_list())', 'E474:')
Bram Moolenaar5a46a582016-01-15 15:56:58 +01006endfunc
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)
Bram Moolenaar2ab375e2016-02-10 22:23:06 +010018 call assert_equal([2, 2, 0, 2], getcurpos()[1:])
Bram Moolenaar5a46a582016-01-15 15:56:58 +010019 " line number zero keeps the line number
20 call cursor(0, 1)
Bram Moolenaar2ab375e2016-02-10 22:23:06 +010021 call assert_equal([2, 1, 0, 1], getcurpos()[1:])
Bram Moolenaar5a46a582016-01-15 15:56:58 +010022 " col number zero keeps the column
23 call cursor(3, 0)
Bram Moolenaar2ab375e2016-02-10 22:23:06 +010024 call assert_equal([3, 1, 0, 1], getcurpos()[1:])
Bram Moolenaar5a46a582016-01-15 15:56:58 +010025 " below last line goes to last line
Bram Moolenaar1a3a8912019-08-23 22:31:37 +020026 eval [9, 1]->cursor()
Bram Moolenaar2ab375e2016-02-10 22:23:06 +010027 call assert_equal([4, 1, 0, 1], getcurpos()[1:])
Bram Moolenaar5a46a582016-01-15 15:56:58 +010028
Bram Moolenaar17aca702019-05-16 22:24:55 +020029 call setline(1, ["\<TAB>"])
30 call cursor(1, 1, 1)
31 call assert_equal([1, 1, 1], getcurpos()[1:3])
32
Bram Moolenaar9a963372020-12-21 21:58:46 +010033 call assert_fails('call cursor(-1, -1)', 'E475:')
Bram Moolenaar17aca702019-05-16 22:24:55 +020034
Bram Moolenaar5a46a582016-01-15 15:56:58 +010035 quit!
36endfunc
Bram Moolenaar2ab375e2016-02-10 22:23:06 +010037
38" Very short version of what matchparen does.
39function s:Highlight_Matching_Pair()
40 let save_cursor = getcurpos()
Bram Moolenaaraad222c2019-09-06 22:46:09 +020041 eval save_cursor->setpos('.')
Bram Moolenaar2ab375e2016-02-10 22:23:06 +010042endfunc
43
44func Test_curswant_with_autocommand()
45 new
46 call setline(1, ['func()', '{', '}', '----'])
47 autocmd! CursorMovedI * call s:Highlight_Matching_Pair()
Bram Moolenaareb992cb2017-03-09 18:20:16 +010048 call test_override("char_avail", 1)
Bram Moolenaar2ab375e2016-02-10 22:23:06 +010049 exe "normal! 3Ga\<Down>X\<Esc>"
Bram Moolenaareb992cb2017-03-09 18:20:16 +010050 call test_override("char_avail", 0)
Bram Moolenaar2ab375e2016-02-10 22:23:06 +010051 call assert_equal('-X---', getline(4))
52 autocmd! CursorMovedI *
53 quit!
54endfunc
55
Bram Moolenaar177ab9e2019-01-15 21:12:57 +010056" 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
Bram Moolenaarb3d17a22019-07-07 18:28:14 +020076
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,
Bram Moolenaarf92e58c2019-09-08 21:51:41 +020087 \ 'endcol': wincol + 7}, winid->screenpos(1, 1))
Bram Moolenaarb3d17a22019-07-07 18:28:14 +020088 call assert_equal({'row': winrow,
89 \ 'col': wincol + 13,
90 \ 'curscol': wincol + 13,
Bram Moolenaar196b4662019-09-06 21:34:30 +020091 \ 'endcol': wincol + 13}, winid->screenpos(1, 7))
Bram Moolenaarb3d17a22019-07-07 18:28:14 +020092 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
Bram Moolenaarbdd2c292020-06-22 21:34:30 +0200102 call assert_equal({}, screenpos(999, 1, 1))
Bram Moolenaarb3d17a22019-07-07 18:28:14 +0200103 bwipe!
Bram Moolenaar8dd46e72020-12-17 21:35:29 +0100104
105 call assert_equal({'col': 1, 'row': 1, 'endcol': 1, 'curscol': 1}, screenpos(win_getid(), 1, 1))
106 nmenu WinBar.TEST :
107 call assert_equal({'col': 1, 'row': 2, 'endcol': 1, 'curscol': 1}, screenpos(win_getid(), 1, 1))
108 nunmenu WinBar.TEST
Bram Moolenaarb3d17a22019-07-07 18:28:14 +0200109endfunc
Bram Moolenaar38ba4dc2019-10-27 21:39:09 +0100110
111func Test_screenpos_number()
112 rightbelow new
113 rightbelow 73vsplit
114 call setline (1, repeat('x', 66))
115 setlocal number
116 redraw
117 let winid = win_getid()
118 let [winrow, wincol] = win_screenpos(winid)
119 let pos = screenpos(winid, 1, 66)
120 call assert_equal(winrow, pos.row)
121 call assert_equal(wincol + 66 + 3, pos.col)
122 close
123 bwipe!
124endfunc
Bram Moolenaar08f41572020-04-20 16:50:00 +0200125
126" vim: shiftwidth=2 sts=2 expandtab