1dc9a0817SBram Moolenaar" Test for 'number' and 'relativenumber' 2dc9a0817SBram Moolenaar 3efae76abSBram Moolenaarsource check.vim 4dc9a0817SBram Moolenaarsource view_util.vim 5dc9a0817SBram Moolenaar 6efae76abSBram Moolenaarsource screendump.vim 7efae76abSBram Moolenaar 81e115360SBram Moolenaarfunc s:screen_lines(start, end) abort 9dc9a0817SBram Moolenaar return ScreenLines([a:start, a:end], 8) 10dc9a0817SBram Moolenaarendfunc 11dc9a0817SBram Moolenaar 121e115360SBram Moolenaarfunc s:compare_lines(expect, actual) 13dc9a0817SBram Moolenaar call assert_equal(a:expect, a:actual) 14dc9a0817SBram Moolenaarendfunc 15dc9a0817SBram Moolenaar 161e115360SBram Moolenaarfunc s:test_windows(h, w) abort 17dc9a0817SBram Moolenaar call NewWindow(a:h, a:w) 18dc9a0817SBram Moolenaarendfunc 19dc9a0817SBram Moolenaar 201e115360SBram Moolenaarfunc s:close_windows() abort 21dc9a0817SBram Moolenaar call CloseWindow() 22dc9a0817SBram Moolenaarendfunc 23dc9a0817SBram Moolenaar 241e115360SBram Moolenaarfunc s:validate_cursor() abort 25dc9a0817SBram Moolenaar " update skipcol. 26dc9a0817SBram Moolenaar " wincol(): 27dc9a0817SBram Moolenaar " f_wincol 28dc9a0817SBram Moolenaar " -> validate_cursor 29dc9a0817SBram Moolenaar " -> curs_columns 30dc9a0817SBram Moolenaar call wincol() 31dc9a0817SBram Moolenaarendfunc 32dc9a0817SBram Moolenaar 33dc9a0817SBram Moolenaarfunc Test_set_options() 34dc9a0817SBram Moolenaar set nu rnu 35dc9a0817SBram Moolenaar call assert_equal(1, &nu) 36dc9a0817SBram Moolenaar call assert_equal(1, &rnu) 37dc9a0817SBram Moolenaar 38dc9a0817SBram Moolenaar call s:test_windows(10, 20) 39dc9a0817SBram Moolenaar call assert_equal(1, &nu) 40dc9a0817SBram Moolenaar call assert_equal(1, &rnu) 41dc9a0817SBram Moolenaar call s:close_windows() 42dc9a0817SBram Moolenaar 43dc9a0817SBram Moolenaar set nu& rnu& 44dc9a0817SBram Moolenaarendfunc 45dc9a0817SBram Moolenaar 46dc9a0817SBram Moolenaarfunc Test_set_global_and_local() 47dc9a0817SBram Moolenaar " setlocal must NOT reset the other global value 48dc9a0817SBram Moolenaar set nonu nornu 49dc9a0817SBram Moolenaar setglobal nu 50dc9a0817SBram Moolenaar setlocal rnu 51dc9a0817SBram Moolenaar call assert_equal(1, &g:nu) 52dc9a0817SBram Moolenaar 53dc9a0817SBram Moolenaar set nonu nornu 54dc9a0817SBram Moolenaar setglobal rnu 55dc9a0817SBram Moolenaar setlocal nu 56dc9a0817SBram Moolenaar call assert_equal(1, &g:rnu) 57dc9a0817SBram Moolenaar 58dc9a0817SBram Moolenaar " setglobal MUST reset the other global value 59dc9a0817SBram Moolenaar set nonu nornu 60dc9a0817SBram Moolenaar setglobal nu 61dc9a0817SBram Moolenaar setglobal rnu 62dc9a0817SBram Moolenaar call assert_equal(1, &g:nu) 63dc9a0817SBram Moolenaar 64dc9a0817SBram Moolenaar set nonu nornu 65dc9a0817SBram Moolenaar setglobal rnu 66dc9a0817SBram Moolenaar setglobal nu 67dc9a0817SBram Moolenaar call assert_equal(1, &g:rnu) 68dc9a0817SBram Moolenaar 69dc9a0817SBram Moolenaar " set MUST reset the other global value 70dc9a0817SBram Moolenaar set nonu nornu 71dc9a0817SBram Moolenaar set nu 72dc9a0817SBram Moolenaar set rnu 73dc9a0817SBram Moolenaar call assert_equal(1, &g:nu) 74dc9a0817SBram Moolenaar 75dc9a0817SBram Moolenaar set nonu nornu 76dc9a0817SBram Moolenaar set rnu 77dc9a0817SBram Moolenaar set nu 78dc9a0817SBram Moolenaar call assert_equal(1, &g:rnu) 79dc9a0817SBram Moolenaar 80dc9a0817SBram Moolenaar set nu& rnu& 81dc9a0817SBram Moolenaarendfunc 82dc9a0817SBram Moolenaar 83dc9a0817SBram Moolenaarfunc Test_number() 84dc9a0817SBram Moolenaar call s:test_windows(10, 20) 85dc9a0817SBram Moolenaar call setline(1, ["abcdefghij", "klmnopqrst", "uvwxyzABCD", "EFGHIJKLMN", "OPQRSTUVWX", "YZ"]) 86dc9a0817SBram Moolenaar setl number 87dc9a0817SBram Moolenaar let lines = s:screen_lines(1, 4) 88dc9a0817SBram Moolenaar let expect = [ 89dc9a0817SBram Moolenaar\ " 1 abcd", 90dc9a0817SBram Moolenaar\ " 2 klmn", 91dc9a0817SBram Moolenaar\ " 3 uvwx", 92dc9a0817SBram Moolenaar\ " 4 EFGH", 93dc9a0817SBram Moolenaar\ ] 94dc9a0817SBram Moolenaar call s:compare_lines(expect, lines) 95dc9a0817SBram Moolenaar call s:close_windows() 96dc9a0817SBram Moolenaarendfunc 97dc9a0817SBram Moolenaar 98dc9a0817SBram Moolenaarfunc Test_relativenumber() 99dc9a0817SBram Moolenaar call s:test_windows(10, 20) 100dc9a0817SBram Moolenaar call setline(1, ["abcdefghij", "klmnopqrst", "uvwxyzABCD", "EFGHIJKLMN", "OPQRSTUVWX", "YZ"]) 101dc9a0817SBram Moolenaar 3 102dc9a0817SBram Moolenaar setl relativenumber 103dc9a0817SBram Moolenaar let lines = s:screen_lines(1, 6) 104dc9a0817SBram Moolenaar let expect = [ 105dc9a0817SBram Moolenaar\ " 2 abcd", 106dc9a0817SBram Moolenaar\ " 1 klmn", 107dc9a0817SBram Moolenaar\ " 0 uvwx", 108dc9a0817SBram Moolenaar\ " 1 EFGH", 109dc9a0817SBram Moolenaar\ " 2 OPQR", 110dc9a0817SBram Moolenaar\ " 3 YZ ", 111dc9a0817SBram Moolenaar\ ] 112dc9a0817SBram Moolenaar call s:compare_lines(expect, lines) 113dc9a0817SBram Moolenaar call s:close_windows() 114dc9a0817SBram Moolenaarendfunc 115dc9a0817SBram Moolenaar 116dc9a0817SBram Moolenaarfunc Test_number_with_relativenumber() 117dc9a0817SBram Moolenaar call s:test_windows(10, 20) 118dc9a0817SBram Moolenaar call setline(1, ["abcdefghij", "klmnopqrst", "uvwxyzABCD", "EFGHIJKLMN", "OPQRSTUVWX", "YZ"]) 119dc9a0817SBram Moolenaar 4 120dc9a0817SBram Moolenaar setl number relativenumber 121dc9a0817SBram Moolenaar let lines = s:screen_lines(1, 6) 122dc9a0817SBram Moolenaar let expect = [ 123dc9a0817SBram Moolenaar\ " 3 abcd", 124dc9a0817SBram Moolenaar\ " 2 klmn", 125dc9a0817SBram Moolenaar\ " 1 uvwx", 126dc9a0817SBram Moolenaar\ "4 EFGH", 127dc9a0817SBram Moolenaar\ " 1 OPQR", 128dc9a0817SBram Moolenaar\ " 2 YZ ", 129dc9a0817SBram Moolenaar\ ] 130dc9a0817SBram Moolenaar call s:compare_lines(expect, lines) 131dc9a0817SBram Moolenaar call s:close_windows() 132dc9a0817SBram Moolenaarendfunc 133dc9a0817SBram Moolenaar 134dc9a0817SBram Moolenaarfunc Test_number_with_linewrap1() 135dc9a0817SBram Moolenaar call s:test_windows(3, 20) 136dc9a0817SBram Moolenaar normal! 61ia 137dc9a0817SBram Moolenaar setl number wrap 138dc9a0817SBram Moolenaar call s:validate_cursor() 139dc9a0817SBram Moolenaar let lines = s:screen_lines(1, 3) 140dc9a0817SBram Moolenaar let expect = [ 141dc9a0817SBram Moolenaar\ "--1 aaaa", 142dc9a0817SBram Moolenaar\ " aaaa", 143dc9a0817SBram Moolenaar\ " aaaa", 144dc9a0817SBram Moolenaar\ ] 145dc9a0817SBram Moolenaar call s:compare_lines(expect, lines) 146dc9a0817SBram Moolenaar call s:close_windows() 147dc9a0817SBram Moolenaarendfunc 148dc9a0817SBram Moolenaar 149dc9a0817SBram Moolenaar" Pending: https://groups.google.com/forum/#!topic/vim_dev/tzNKP7EDWYI 150dc9a0817SBram Moolenaarfunc XTest_number_with_linewrap2() 151dc9a0817SBram Moolenaar call s:test_windows(3, 20) 152dc9a0817SBram Moolenaar normal! 61ia 153dc9a0817SBram Moolenaar setl number wrap 154dc9a0817SBram Moolenaar call s:validate_cursor() 155dc9a0817SBram Moolenaar 0 156dc9a0817SBram Moolenaar call s:validate_cursor() 157dc9a0817SBram Moolenaar let lines = s:screen_lines(1, 3) 158dc9a0817SBram Moolenaar let expect = [ 159dc9a0817SBram Moolenaar\ " 1 aaaa", 160dc9a0817SBram Moolenaar\ " aaaa", 161dc9a0817SBram Moolenaar\ " aaaa", 162dc9a0817SBram Moolenaar\ ] 163dc9a0817SBram Moolenaar call s:compare_lines(expect, lines) 164dc9a0817SBram Moolenaar call s:close_windows() 165dc9a0817SBram Moolenaarendfunc 166dc9a0817SBram Moolenaar 167dc9a0817SBram Moolenaar" Pending: https://groups.google.com/forum/#!topic/vim_dev/tzNKP7EDWYI 168dc9a0817SBram Moolenaarfunc XTest_number_with_linewrap3() 169dc9a0817SBram Moolenaar call s:test_windows(4, 20) 170dc9a0817SBram Moolenaar normal! 81ia 171dc9a0817SBram Moolenaar setl number wrap 172dc9a0817SBram Moolenaar call s:validate_cursor() 173dc9a0817SBram Moolenaar setl nonumber 174dc9a0817SBram Moolenaar call s:validate_cursor() 175dc9a0817SBram Moolenaar let lines = s:screen_lines(1, 4) 176dc9a0817SBram Moolenaar let expect = [ 177dc9a0817SBram Moolenaar\ "aaaaaaaa", 178dc9a0817SBram Moolenaar\ "aaaaaaaa", 179dc9a0817SBram Moolenaar\ "aaaaaaaa", 180dc9a0817SBram Moolenaar\ "a ", 181dc9a0817SBram Moolenaar\ ] 182dc9a0817SBram Moolenaar call s:compare_lines(expect, lines) 183dc9a0817SBram Moolenaar call s:close_windows() 184dc9a0817SBram Moolenaarendfunc 185dc9a0817SBram Moolenaar 186dc9a0817SBram Moolenaarfunc Test_numberwidth() 187dc9a0817SBram Moolenaar call s:test_windows(10, 20) 188dc9a0817SBram Moolenaar call setline(1, repeat(['aaaa'], 10)) 189dc9a0817SBram Moolenaar setl number numberwidth=6 190dc9a0817SBram Moolenaar let lines = s:screen_lines(1, 3) 191dc9a0817SBram Moolenaar let expect = [ 192dc9a0817SBram Moolenaar\ " 1 aa", 193dc9a0817SBram Moolenaar\ " 2 aa", 194dc9a0817SBram Moolenaar\ " 3 aa", 195dc9a0817SBram Moolenaar\ ] 196dc9a0817SBram Moolenaar call s:compare_lines(expect, lines) 197dc9a0817SBram Moolenaar 198dc9a0817SBram Moolenaar set relativenumber 199dc9a0817SBram Moolenaar let lines = s:screen_lines(1, 3) 200dc9a0817SBram Moolenaar let expect = [ 201dc9a0817SBram Moolenaar\ "1 aa", 202dc9a0817SBram Moolenaar\ " 1 aa", 203dc9a0817SBram Moolenaar\ " 2 aa", 204dc9a0817SBram Moolenaar\ ] 205dc9a0817SBram Moolenaar call s:compare_lines(expect, lines) 206dc9a0817SBram Moolenaar 207dc9a0817SBram Moolenaar set nonumber 208dc9a0817SBram Moolenaar let lines = s:screen_lines(1, 3) 209dc9a0817SBram Moolenaar let expect = [ 210dc9a0817SBram Moolenaar\ " 0 aa", 211dc9a0817SBram Moolenaar\ " 1 aa", 212dc9a0817SBram Moolenaar\ " 2 aa", 213dc9a0817SBram Moolenaar\ ] 214dc9a0817SBram Moolenaar call s:compare_lines(expect, lines) 215dc9a0817SBram Moolenaar call s:close_windows() 216dc9a0817SBram Moolenaarendfunc 217dc9a0817SBram Moolenaar 218dc9a0817SBram Moolenaarfunc Test_numberwidth_adjusted() 219dc9a0817SBram Moolenaar call s:test_windows(10, 20) 220dc9a0817SBram Moolenaar call setline(1, repeat(['aaaa'], 10000)) 221dc9a0817SBram Moolenaar setl number numberwidth=4 222dc9a0817SBram Moolenaar let lines = s:screen_lines(1, 3) 223dc9a0817SBram Moolenaar let expect = [ 224dc9a0817SBram Moolenaar\ " 1 aa", 225dc9a0817SBram Moolenaar\ " 2 aa", 226dc9a0817SBram Moolenaar\ " 3 aa", 227dc9a0817SBram Moolenaar\ ] 228dc9a0817SBram Moolenaar call s:compare_lines(expect, lines) 229dc9a0817SBram Moolenaar 230dc9a0817SBram Moolenaar $ 231dc9a0817SBram Moolenaar let lines = s:screen_lines(8, 10) 232dc9a0817SBram Moolenaar let expect = [ 233dc9a0817SBram Moolenaar\ " 9998 aa", 234dc9a0817SBram Moolenaar\ " 9999 aa", 235dc9a0817SBram Moolenaar\ "10000 aa", 236dc9a0817SBram Moolenaar\ ] 237dc9a0817SBram Moolenaar call s:compare_lines(expect, lines) 238dc9a0817SBram Moolenaar 239dc9a0817SBram Moolenaar setl relativenumber 240dc9a0817SBram Moolenaar let lines = s:screen_lines(8, 10) 241dc9a0817SBram Moolenaar let expect = [ 242dc9a0817SBram Moolenaar\ " 2 aa", 243dc9a0817SBram Moolenaar\ " 1 aa", 244dc9a0817SBram Moolenaar\ "10000 aa", 245dc9a0817SBram Moolenaar\ ] 246dc9a0817SBram Moolenaar call s:compare_lines(expect, lines) 247dc9a0817SBram Moolenaar 248dc9a0817SBram Moolenaar setl nonumber 249dc9a0817SBram Moolenaar let lines = s:screen_lines(8, 10) 250dc9a0817SBram Moolenaar let expect = [ 251dc9a0817SBram Moolenaar\ " 2 aaaa", 252dc9a0817SBram Moolenaar\ " 1 aaaa", 253dc9a0817SBram Moolenaar\ " 0 aaaa", 254dc9a0817SBram Moolenaar\ ] 255dc9a0817SBram Moolenaar call s:compare_lines(expect, lines) 256dc9a0817SBram Moolenaar call s:close_windows() 257dc9a0817SBram Moolenaarendfunc 258ec572ad6SBram Moolenaar 259ec572ad6SBram Moolenaar" This was causing a memcheck error 260ec572ad6SBram Moolenaarfunc Test_relativenumber_uninitialised() 261ec572ad6SBram Moolenaar new 262ec572ad6SBram Moolenaar set rnu 263ec572ad6SBram Moolenaar call setline(1, ["a", "b"]) 264ec572ad6SBram Moolenaar redraw 265ec572ad6SBram Moolenaar call feedkeys("j", 'xt') 266ec572ad6SBram Moolenaar redraw 267ec572ad6SBram Moolenaar bwipe! 268ec572ad6SBram Moolenaarendfunc 269efae76abSBram Moolenaar 270efae76abSBram Moolenaarfunc Test_relativenumber_colors() 271efae76abSBram Moolenaar CheckScreendump 272efae76abSBram Moolenaar 273efae76abSBram Moolenaar let lines =<< trim [CODE] 274efae76abSBram Moolenaar call setline(1, range(200)) 275efae76abSBram Moolenaar 111 276efae76abSBram Moolenaar set number relativenumber 277efae76abSBram Moolenaar hi LineNr ctermfg=red 278efae76abSBram Moolenaar [CODE] 279efae76abSBram Moolenaar call writefile(lines, 'XTest_relnr') 280efae76abSBram Moolenaar 281efae76abSBram Moolenaar " Check that the balloon shows up after a mouse move 282efae76abSBram Moolenaar let buf = RunVimInTerminal('-S XTest_relnr', {'rows': 10, 'cols': 50}) 2836a2c5a7dSBram Moolenaar call TermWait(buf, 50) 284efae76abSBram Moolenaar " Default colors 285efae76abSBram Moolenaar call VerifyScreenDump(buf, 'Test_relnr_colors_1', {}) 286efae76abSBram Moolenaar 2878040a714SBram Moolenaar call term_sendkeys(buf, ":hi LineNrAbove ctermfg=blue\<CR>:\<CR>") 288efae76abSBram Moolenaar call VerifyScreenDump(buf, 'Test_relnr_colors_2', {}) 289efae76abSBram Moolenaar 2908040a714SBram Moolenaar call term_sendkeys(buf, ":hi LineNrBelow ctermfg=green\<CR>:\<CR>") 291efae76abSBram Moolenaar call VerifyScreenDump(buf, 'Test_relnr_colors_3', {}) 292efae76abSBram Moolenaar 293efae76abSBram Moolenaar call term_sendkeys(buf, ":hi clear LineNrAbove\<CR>") 294efae76abSBram Moolenaar call VerifyScreenDump(buf, 'Test_relnr_colors_4', {}) 295efae76abSBram Moolenaar 296efae76abSBram Moolenaar " clean up 297efae76abSBram Moolenaar call StopVimInTerminal(buf) 298efae76abSBram Moolenaar call delete('XTest_relnr') 299efae76abSBram Moolenaarendfunc 3006d91bcb4SBram Moolenaar 30129f0dc36SChristian Brabandt" Test for displaying line numbers with 'rightleft' 30229f0dc36SChristian Brabandtfunc Test_number_rightleft() 30329f0dc36SChristian Brabandt CheckFeature rightleft 30429f0dc36SChristian Brabandt new 30529f0dc36SChristian Brabandt setlocal number 30629f0dc36SChristian Brabandt setlocal rightleft 30729f0dc36SChristian Brabandt call setline(1, range(1, 1000)) 30829f0dc36SChristian Brabandt normal! 9Gzt 30929f0dc36SChristian Brabandt redraw! 31029f0dc36SChristian Brabandt call assert_match('^\s\+9 9$', Screenline(1)) 31129f0dc36SChristian Brabandt normal! 10Gzt 31229f0dc36SChristian Brabandt redraw! 31329f0dc36SChristian Brabandt call assert_match('^\s\+01 10$', Screenline(1)) 31429f0dc36SChristian Brabandt normal! 100Gzt 31529f0dc36SChristian Brabandt redraw! 31629f0dc36SChristian Brabandt call assert_match('^\s\+001 100$', Screenline(1)) 31729f0dc36SChristian Brabandt normal! 1000Gzt 31829f0dc36SChristian Brabandt redraw! 31929f0dc36SChristian Brabandt call assert_match('^\s\+0001 1000$', Screenline(1)) 32029f0dc36SChristian Brabandt bw! 32129f0dc36SChristian Brabandtendfunc 32229f0dc36SChristian Brabandt 323*02f8694aSBram Moolenaar" This used to cause a divide by zero 324*02f8694aSBram Moolenaarfunc Test_number_no_text_virtual_edit() 325*02f8694aSBram Moolenaar vnew 326*02f8694aSBram Moolenaar call setline(1, ['line one', 'line two']) 327*02f8694aSBram Moolenaar set number virtualedit=all 328*02f8694aSBram Moolenaar normal w 329*02f8694aSBram Moolenaar 4wincmd | 330*02f8694aSBram Moolenaar normal j 331*02f8694aSBram Moolenaar bwipe! 332*02f8694aSBram Moolenaarendfunc 333*02f8694aSBram Moolenaar 3346d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 335