blob: 054fda083be167b0f1ac5723612101bd16bb46ba [file] [log] [blame]
Bram Moolenaar4f505882018-02-10 21:06:32 +01001" Tests for the jumplist functionality
2
3" Tests for the getjumplist() function
4func Test_getjumplist()
Bram Moolenaar4f505882018-02-10 21:06:32 +01005 %bwipe
6 clearjumps
7 call assert_equal([[], 0], getjumplist())
8 call assert_equal([[], 0], getjumplist(1))
9 call assert_equal([[], 0], getjumplist(1, 1))
10
11 call assert_equal([], getjumplist(100))
12 call assert_equal([], getjumplist(1, 100))
13
14 let lines = []
15 for i in range(1, 100)
16 call add(lines, "Line " . i)
17 endfor
18 call writefile(lines, "Xtest")
19
20 " Jump around and create a jump list
21 edit Xtest
22 let bnr = bufnr('%')
23 normal 50%
24 normal G
25 normal gg
26
Bram Moolenaar57ee2b62019-02-12 22:15:06 +010027 let expected = [[
Bram Moolenaar4f505882018-02-10 21:06:32 +010028 \ {'lnum': 1, 'bufnr': bnr, 'col': 0, 'coladd': 0},
Bram Moolenaar4f505882018-02-10 21:06:32 +010029 \ {'lnum': 50, 'bufnr': bnr, 'col': 0, 'coladd': 0},
Bram Moolenaar57ee2b62019-02-12 22:15:06 +010030 \ {'lnum': 100, 'bufnr': bnr, 'col': 0, 'coladd': 0}], 3]
31 call assert_equal(expected, getjumplist())
32 " jumplist doesn't change in between calls
33 call assert_equal(expected, getjumplist())
Bram Moolenaar4f505882018-02-10 21:06:32 +010034
35 " Traverse the jump list and verify the results
36 5
37 exe "normal \<C-O>"
Bram Moolenaar4c313b12019-08-24 22:58:31 +020038 call assert_equal(2, 1->getjumplist()[1])
Bram Moolenaar4f505882018-02-10 21:06:32 +010039 exe "normal 2\<C-O>"
40 call assert_equal(0, getjumplist(1, 1)[1])
41 exe "normal 3\<C-I>"
42 call assert_equal(3, getjumplist()[1])
43 exe "normal \<C-O>"
44 normal 20%
Bram Moolenaar57ee2b62019-02-12 22:15:06 +010045 let expected = [[
Bram Moolenaar4f505882018-02-10 21:06:32 +010046 \ {'lnum': 1, 'bufnr': bnr, 'col': 0, 'coladd': 0},
47 \ {'lnum': 50, 'bufnr': bnr, 'col': 0, 'coladd': 0},
Bram Moolenaar4f505882018-02-10 21:06:32 +010048 \ {'lnum': 5, 'bufnr': bnr, 'col': 0, 'coladd': 0},
Bram Moolenaar57ee2b62019-02-12 22:15:06 +010049 \ {'lnum': 100, 'bufnr': bnr, 'col': 0, 'coladd': 0}], 4]
50 call assert_equal(expected, getjumplist())
51 " jumplist doesn't change in between calls
52 call assert_equal(expected, getjumplist())
Bram Moolenaar4f505882018-02-10 21:06:32 +010053
54 let l = getjumplist()
55 call test_garbagecollect_now()
Bram Moolenaara7e18d22018-02-11 14:29:49 +010056 call assert_equal(4, l[1])
Bram Moolenaar4f505882018-02-10 21:06:32 +010057 clearjumps
58 call test_garbagecollect_now()
Bram Moolenaara7e18d22018-02-11 14:29:49 +010059 call assert_equal(4, l[1])
Bram Moolenaar4f505882018-02-10 21:06:32 +010060
61 call delete("Xtest")
62endfunc
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +020063
Christian Brabandta0f659c2022-04-09 13:35:00 +010064func Test_jumplist_invalid()
65 new
66 clearjumps
67 " put some randome text
68 put ='a'
69 let prev = bufnr('%')
70 setl nomodified bufhidden=wipe
71 e XXJumpListBuffer
72 let bnr = bufnr('%')
73 " 1) empty jumplist
74 let expected = [[
75 \ {'lnum': 2, 'bufnr': prev, 'col': 0, 'coladd': 0}], 1]
76 call assert_equal(expected, getjumplist())
77 let jumps = execute(':jumps')
78 call assert_equal('>', jumps[-1:])
79 " now jump back
80 exe ":norm! \<c-o>"
81 let expected = [[
82 \ {'lnum': 2, 'bufnr': prev, 'col': 0, 'coladd': 0},
83 \ {'lnum': 1, 'bufnr': bnr, 'col': 0, 'coladd': 0}], 0]
84 call assert_equal(expected, getjumplist())
85 let jumps = execute(':jumps')
86 call assert_match('> 0 2 0 -invalid-', jumps)
87endfunc
88
89" Test for '' mark in an empty buffer
90
91func Test_empty_buffer()
92 new
93 insert
94a
95b
96c
97d
98.
99 call assert_equal(1, line("''"))
100 bwipe!
101endfunc
102
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +0200103" vim: shiftwidth=2 sts=2 expandtab