Mercurial > vim
view src/testdir/test_number.vim @ 35056:79c73c4b3ecb
runtime(comment): include a simple comment toggling plugin
Commit: https://github.com/vim/vim/commit/5400a5d4269874fe4f1c35dfdd3c039ea17dfd62
Author: Maxim Kim <habamax@gmail.com>
Date: Fri Apr 26 19:53:13 2024 +0200
runtime(comment): include a simple comment toggling plugin
fixes https://github.com/vim/vim/issues/14626
closes: https://github.com/vim/vim/issues/14634
Signed-off-by: Maxim Kim <habamax@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Fri, 26 Apr 2024 20:00:03 +0200 |
parents | 0690fd6f9d48 |
children |
line wrap: on
line source
" Test for 'number' and 'relativenumber' source check.vim source view_util.vim source screendump.vim func s:screen_lines(start, end) abort return ScreenLines([a:start, a:end], 8) endfunc func s:compare_lines(expect, actual) call assert_equal(a:expect, a:actual) endfunc func s:test_windows(h, w) abort call NewWindow(a:h, a:w) endfunc func s:close_windows() abort call CloseWindow() endfunc func s:validate_cursor() abort " update skipcol. " wincol(): " f_wincol " -> validate_cursor " -> curs_columns call wincol() endfunc func Test_set_options() set nu rnu call assert_equal(1, &nu) call assert_equal(1, &rnu) call s:test_windows(10, 20) call assert_equal(1, &nu) call assert_equal(1, &rnu) call s:close_windows() set nu& rnu& endfunc func Test_set_global_and_local() " setlocal must NOT reset the other global value set nonu nornu setglobal nu setlocal rnu call assert_equal(1, &g:nu) set nonu nornu setglobal rnu setlocal nu call assert_equal(1, &g:rnu) " setglobal MUST reset the other global value set nonu nornu setglobal nu setglobal rnu call assert_equal(1, &g:nu) set nonu nornu setglobal rnu setglobal nu call assert_equal(1, &g:rnu) " set MUST reset the other global value set nonu nornu set nu set rnu call assert_equal(1, &g:nu) set nonu nornu set rnu set nu call assert_equal(1, &g:rnu) set nu& rnu& endfunc func Test_number() call s:test_windows(10, 20) call setline(1, ["abcdefghij", "klmnopqrst", "uvwxyzABCD", "EFGHIJKLMN", "OPQRSTUVWX", "YZ"]) setl number let lines = s:screen_lines(1, 4) let expect = [ \ " 1 abcd", \ " 2 klmn", \ " 3 uvwx", \ " 4 EFGH", \ ] call s:compare_lines(expect, lines) call s:close_windows() endfunc func Test_relativenumber() call s:test_windows(10, 20) call setline(1, ["abcdefghij", "klmnopqrst", "uvwxyzABCD", "EFGHIJKLMN", "OPQRSTUVWX", "YZ"]) 3 setl relativenumber let lines = s:screen_lines(1, 6) let expect = [ \ " 2 abcd", \ " 1 klmn", \ " 0 uvwx", \ " 1 EFGH", \ " 2 OPQR", \ " 3 YZ ", \ ] call s:compare_lines(expect, lines) call s:close_windows() endfunc func Test_number_with_relativenumber() call s:test_windows(10, 20) call setline(1, ["abcdefghij", "klmnopqrst", "uvwxyzABCD", "EFGHIJKLMN", "OPQRSTUVWX", "YZ"]) 4 setl number relativenumber let lines = s:screen_lines(1, 6) let expect = [ \ " 3 abcd", \ " 2 klmn", \ " 1 uvwx", \ "4 EFGH", \ " 1 OPQR", \ " 2 YZ ", \ ] call s:compare_lines(expect, lines) call s:close_windows() endfunc func Test_number_with_linewrap1() call s:test_windows(3, 20) normal! 61ia setl number wrap call s:validate_cursor() let lines = s:screen_lines(1, 3) let expect = [ \ "<<< aaaa", \ " aaaa", \ " aaaa", \ ] call s:compare_lines(expect, lines) call s:close_windows() endfunc func Test_number_with_linewrap2() call s:test_windows(3, 20) normal! 61ia setl number wrap call s:validate_cursor() 0 call s:validate_cursor() let lines = s:screen_lines(1, 3) let expect = [ \ " 1 aaaa", \ " aaaa", \ " aaaa", \ ] call s:compare_lines(expect, lines) call s:close_windows() endfunc func Test_number_with_linewrap3() call s:test_windows(4, 20) normal! 81ia setl number wrap call s:validate_cursor() setl nonumber call s:validate_cursor() let lines = s:screen_lines(1, 4) let expect = [ \ "<<<aaaaa", \ "aaaaaaaa", \ "aaaaaaaa", \ "a ", \ ] call s:compare_lines(expect, lines) call s:close_windows() endfunc func Test_numberwidth() call s:test_windows(10, 20) call setline(1, repeat(['aaaa'], 10)) setl number numberwidth=6 let lines = s:screen_lines(1, 3) let expect = [ \ " 1 aa", \ " 2 aa", \ " 3 aa", \ ] call s:compare_lines(expect, lines) set relativenumber let lines = s:screen_lines(1, 3) let expect = [ \ "1 aa", \ " 1 aa", \ " 2 aa", \ ] call s:compare_lines(expect, lines) set nonumber let lines = s:screen_lines(1, 3) let expect = [ \ " 0 aa", \ " 1 aa", \ " 2 aa", \ ] call s:compare_lines(expect, lines) call s:close_windows() endfunc func Test_numberwidth_adjusted() call s:test_windows(10, 20) call setline(1, repeat(['aaaa'], 10000)) setl number numberwidth=4 let lines = s:screen_lines(1, 3) let expect = [ \ " 1 aa", \ " 2 aa", \ " 3 aa", \ ] call s:compare_lines(expect, lines) $ let lines = s:screen_lines(8, 10) let expect = [ \ " 9998 aa", \ " 9999 aa", \ "10000 aa", \ ] call s:compare_lines(expect, lines) setl relativenumber let lines = s:screen_lines(8, 10) let expect = [ \ " 2 aa", \ " 1 aa", \ "10000 aa", \ ] call s:compare_lines(expect, lines) setl nonumber let lines = s:screen_lines(8, 10) let expect = [ \ " 2 aaaa", \ " 1 aaaa", \ " 0 aaaa", \ ] call s:compare_lines(expect, lines) call s:close_windows() endfunc " This was causing a memcheck error func Test_relativenumber_uninitialised() new set rnu call setline(1, ["a", "b"]) redraw call feedkeys("j", 'xt') redraw bwipe! endfunc func Test_relativenumber_colors() CheckScreendump let lines =<< trim [CODE] call setline(1, range(200)) 111 set number relativenumber hi LineNr ctermfg=red [CODE] call writefile(lines, 'XTest_relnr', 'D') let buf = RunVimInTerminal('-S XTest_relnr', {'rows': 10, 'cols': 50}) " Default colors call VerifyScreenDump(buf, 'Test_relnr_colors_1', {}) call term_sendkeys(buf, ":hi LineNrAbove ctermfg=blue\<CR>:\<CR>") call VerifyScreenDump(buf, 'Test_relnr_colors_2', {}) call term_sendkeys(buf, ":hi LineNrBelow ctermfg=green\<CR>:\<CR>") call VerifyScreenDump(buf, 'Test_relnr_colors_3', {}) call term_sendkeys(buf, ":hi clear LineNrAbove\<CR>") call VerifyScreenDump(buf, 'Test_relnr_colors_4', {}) " clean up call StopVimInTerminal(buf) endfunc func Test_relativenumber_colors_wrapped() CheckScreendump let lines =<< trim [CODE] set display=lastline scrolloff=0 call setline(1, range(200)->map('v:val->string()->repeat(40)')) 111 set number relativenumber hi LineNr ctermbg=red ctermfg=black hi LineNrAbove ctermbg=blue ctermfg=black hi LineNrBelow ctermbg=green ctermfg=black [CODE] call writefile(lines, 'XTest_relnr_wrap', 'D') let buf = RunVimInTerminal('-S XTest_relnr_wrap', {'rows': 20, 'cols': 50}) call VerifyScreenDump(buf, 'Test_relnr_colors_wrapped_1', {}) call term_sendkeys(buf, "k") call VerifyScreenDump(buf, 'Test_relnr_colors_wrapped_2', {}) call term_sendkeys(buf, "2j") call VerifyScreenDump(buf, 'Test_relnr_colors_wrapped_3', {}) call term_sendkeys(buf, "2j") call VerifyScreenDump(buf, 'Test_relnr_colors_wrapped_4', {}) call term_sendkeys(buf, "k") call VerifyScreenDump(buf, 'Test_relnr_colors_wrapped_5', {}) " clean up call StopVimInTerminal(buf) endfunc func Test_relativenumber_callback() CheckScreendump CheckFeature timers let lines =<< trim END call setline(1, ['aaaaa', 'bbbbb', 'ccccc', 'ddddd']) set relativenumber call cursor(4, 1) func Func(timer) call cursor(1, 1) endfunc call timer_start(300, 'Func') END call writefile(lines, 'Xrnu_timer', 'D') let buf = RunVimInTerminal('-S Xrnu_timer', #{rows: 8}) call TermWait(buf, 310) call VerifyScreenDump(buf, 'Test_relativenumber_callback_1', {}) call StopVimInTerminal(buf) endfunc " Test that line numbers below inserted/deleted lines are updated. func Test_number_insert_delete_lines() CheckScreendump let lines =<< trim END call setline(1, range(1, 7)) set number call cursor(2, 1) END call writefile(lines, 'Xnumber_insert_delete_lines', 'D') let buf = RunVimInTerminal('-S Xnumber_insert_delete_lines', #{rows: 8}) call VerifyScreenDump(buf, 'Test_number_insert_delete_lines_1', {}) call term_sendkeys(buf, "dd") call VerifyScreenDump(buf, 'Test_number_insert_delete_lines_2', {}) call term_sendkeys(buf, "P") call VerifyScreenDump(buf, 'Test_number_insert_delete_lines_1', {}) call term_sendkeys(buf, "2dd") call VerifyScreenDump(buf, 'Test_number_insert_delete_lines_3', {}) call term_sendkeys(buf, "P") call VerifyScreenDump(buf, 'Test_number_insert_delete_lines_1', {}) call StopVimInTerminal(buf) endfunc " Test for displaying line numbers with 'rightleft' func Test_number_rightleft() CheckFeature rightleft new setlocal number setlocal rightleft call setline(1, range(1, 1000)) normal! 9Gzt redraw! call assert_match('^\s\+9 9$', Screenline(1)) normal! 10Gzt redraw! call assert_match('^\s\+01 10$', Screenline(1)) normal! 100Gzt redraw! call assert_match('^\s\+001 100$', Screenline(1)) normal! 1000Gzt redraw! call assert_match('^\s\+0001 1000$', Screenline(1)) bw! endfunc " This used to cause a divide by zero func Test_number_no_text_virtual_edit() vnew call setline(1, ['line one', 'line two']) set number virtualedit=all normal w 4wincmd | normal j bwipe! endfunc " vim: shiftwidth=2 sts=2 expandtab