1" Test :z 2 3func Test_z() 4 call setline(1, range(1, 100)) 5 6 let a = execute('20z3') 7 call assert_equal("\n20\n21\n22", a) 8 call assert_equal(22, line('.')) 9 " 'window' should be set to the {count} value. 10 call assert_equal(3, &window) 11 12 " If there is only one window, then twice the amount of 'scroll' is used. 13 set scroll=2 14 let a = execute('20z') 15 call assert_equal("\n20\n21\n22\n23", a) 16 call assert_equal(23, line('.')) 17 18 let a = execute('20z+3') 19 " FIXME: I would expect the same result as '20z3' but it 20 " gives "\n21\n22\n23" instead. Bug in Vim or in ":help :z"? 21 "call assert_equal("\n20\n21\n22", a) 22 "call assert_equal(22, line('.')) 23 24 let a = execute('20z-3') 25 call assert_equal("\n18\n19\n20", a) 26 call assert_equal(20, line('.')) 27 28 let a = execute('20z=3') 29 call assert_match("^\n18\n19\n-\\+\n20\n-\\+\n21\n22$", a) 30 call assert_equal(20, line('.')) 31 32 let a = execute('20z^3') 33 call assert_equal("\n14\n15\n16\n17", a) 34 call assert_equal(17, line('.')) 35 36 let a = execute('20z.3') 37 call assert_equal("\n19\n20\n21", a) 38 call assert_equal(21, line('.')) 39 40 let a = execute('20z#3') 41 call assert_equal("\n 20 20\n 21 21\n 22 22", a) 42 call assert_equal(22, line('.')) 43 44 let a = execute('20z#-3') 45 call assert_equal("\n 18 18\n 19 19\n 20 20", a) 46 call assert_equal(20, line('.')) 47 48 let a = execute('20z#=3') 49 call assert_match("^\n 18 18\n 19 19\n-\\+\n 20 20\n-\\+\n 21 21\n 22 22$", a) 50 call assert_equal(20, line('.')) 51 52 " Test with {count} bigger than the number of lines in buffer. 53 let a = execute('20z1000') 54 call assert_match("^\n20\n21\n.*\n99\n100$", a) 55 call assert_equal(100, line('.')) 56 57 let a = execute('20z-1000') 58 call assert_match("^\n1\n2\n.*\n19\n20$", a) 59 call assert_equal(20, line('.')) 60 61 let a = execute('20z=1000') 62 call assert_match("^\n1\n.*\n-\\+\n20\n-\\\+\n.*\n100$", a) 63 call assert_equal(20, line('.')) 64 65 call assert_fails('20z=a', 'E144:') 66 67 set window& scroll& 68 bw! 69endfunc 70 71func Test_z_overflow() 72 " This used to access invalid memory as a result of an integer overflow 73 " and freeze vim. 74 normal ox 75 normal Heat 76 z777777776666666 77 ') 78endfunc 79 80func Test_z_negative_lnum() 81 new 82 z^ 83 call assert_equal(1, line('.')) 84 bwipe! 85endfunc 86