266 lines
5.1 KiB
VimL
266 lines
5.1 KiB
VimL
" Test for 'number' and 'relativenumber'
|
|
|
|
source view_util.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 = [
|
|
\ "--1 aaaa",
|
|
\ " aaaa",
|
|
\ " aaaa",
|
|
\ ]
|
|
call s:compare_lines(expect, lines)
|
|
call s:close_windows()
|
|
endfunc
|
|
|
|
" Pending: https://groups.google.com/forum/#!topic/vim_dev/tzNKP7EDWYI
|
|
func XTest_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
|
|
|
|
" Pending: https://groups.google.com/forum/#!topic/vim_dev/tzNKP7EDWYI
|
|
func XTest_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 = [
|
|
\ "aaaaaaaa",
|
|
\ "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
|