Mercurial > vim
comparison src/testdir/test_tabpage.vim @ 9906:1ed0cab95f9a v7.4.2227
commit https://github.com/vim/vim/commit/1381d791478ee77c8368b89a3d4954316bf839b5
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Aug 18 22:11:42 2016 +0200
patch 7.4.2227
Problem: Tab page tests are old style.
Solution: Change into new style tests. (Hirohito Higashi)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Thu, 18 Aug 2016 22:15:06 +0200 |
parents | |
children | e1a8b2601fe0 |
comparison
equal
deleted
inserted
replaced
9905:4055df6532a0 | 9906:1ed0cab95f9a |
---|---|
1 " Tests for tabpage | |
2 | |
3 function Test_tabpage() | |
4 bw! | |
5 " Simple test for opening and closing a tab page | |
6 tabnew | |
7 call assert_equal(2, tabpagenr()) | |
8 quit | |
9 | |
10 " Open three tab pages and use ":tabdo" | |
11 0tabnew | |
12 1tabnew | |
13 $tabnew | |
14 tabdo call append(line('$'), tabpagenr()) | |
15 tabclose! 2 | |
16 tabrewind | |
17 let line1 = getline('$') | |
18 undo | |
19 q | |
20 tablast | |
21 let line2 = getline('$') | |
22 q! | |
23 call append(line('$'), line1) | |
24 call append(line('$'), line2) | |
25 unlet line1 line2 | |
26 call assert_equal(['', '3', '1', '4'], getline(1, '$')) | |
27 " | |
28 " Test for settabvar() and gettabvar() functions. Open a new tab page and | |
29 " set 3 variables to a number, string and a list. Verify that the variables | |
30 " are correctly set. | |
31 tabnew | |
32 tabfirst | |
33 call settabvar(2, 'val_num', 100) | |
34 call settabvar(2, 'val_str', 'SetTabVar test') | |
35 call settabvar(2, 'val_list', ['red', 'blue', 'green']) | |
36 " | |
37 call assert_true(gettabvar(2, 'val_num') == 100 && gettabvar(2, 'val_str') == 'SetTabVar test' && gettabvar(2, 'val_list') == ['red', 'blue', 'green']) | |
38 | |
39 tabnext 2 | |
40 call assert_true(t:val_num == 100 && t:val_str == 'SetTabVar test' && t:val_list == ['red', 'blue', 'green']) | |
41 tabclose | |
42 | |
43 if has('gui') || has('clientserver') | |
44 " Test for ":tab drop exist-file" to keep current window. | |
45 sp test1 | |
46 tab drop test1 | |
47 call assert_true(tabpagenr('$') == 1 && winnr('$') == 2 && winnr() == 1) | |
48 close | |
49 " | |
50 " | |
51 " Test for ":tab drop new-file" to keep current window of tabpage 1. | |
52 split | |
53 tab drop newfile | |
54 call assert_true(tabpagenr('$') == 2 && tabpagewinnr(1, '$') == 2 && tabpagewinnr(1) == 1) | |
55 tabclose | |
56 q | |
57 " | |
58 " | |
59 " Test for ":tab drop multi-opend-file" to keep current tabpage and window. | |
60 new test1 | |
61 tabnew | |
62 new test1 | |
63 tab drop test1 | |
64 call assert_true(tabpagenr() == 2 && tabpagewinnr(2, '$') == 2 && tabpagewinnr(2) == 1) | |
65 tabclose | |
66 q | |
67 endif | |
68 " | |
69 " | |
70 for i in range(9) | tabnew | endfor | |
71 normal! 1gt | |
72 call assert_equal(1, tabpagenr()) | |
73 tabmove 5 | |
74 call assert_equal(5, tabpagenr()) | |
75 .tabmove | |
76 call assert_equal(5, tabpagenr()) | |
77 tabmove - | |
78 call assert_equal(4, tabpagenr()) | |
79 tabmove + | |
80 call assert_equal(5, tabpagenr()) | |
81 tabmove -2 | |
82 call assert_equal(3, tabpagenr()) | |
83 tabmove +4 | |
84 call assert_equal(7, tabpagenr()) | |
85 tabmove | |
86 call assert_equal(10, tabpagenr()) | |
87 tabmove -20 | |
88 call assert_equal(1, tabpagenr()) | |
89 tabmove +20 | |
90 call assert_equal(10, tabpagenr()) | |
91 0tabmove | |
92 call assert_equal(1, tabpagenr()) | |
93 $tabmove | |
94 call assert_equal(10, tabpagenr()) | |
95 tabmove 0 | |
96 call assert_equal(1, tabpagenr()) | |
97 tabmove $ | |
98 call assert_equal(10, tabpagenr()) | |
99 3tabmove | |
100 call assert_equal(4, tabpagenr()) | |
101 7tabmove 5 | |
102 call assert_equal(5, tabpagenr()) | |
103 call assert_fails("tabmove foo", 'E474:') | |
104 endfunc | |
105 | |
106 " Test autocommands | |
107 function Test_tabpage_with_autocmd() | |
108 if !has('autocmd') | |
109 return | |
110 endif | |
111 tabonly! | |
112 command -nargs=1 -bar C :call add(s:li, '=== ' . <q-args> . ' ===')|<args> | |
113 augroup TestTabpageGroup | |
114 au! | |
115 autocmd TabEnter * call add(s:li, 'TabEnter') | |
116 autocmd WinEnter * call add(s:li, 'WinEnter') | |
117 autocmd BufEnter * call add(s:li, 'BufEnter') | |
118 autocmd TabLeave * call add(s:li, 'TabLeave') | |
119 autocmd WinLeave * call add(s:li, 'WinLeave') | |
120 autocmd BufLeave * call add(s:li, 'BufLeave') | |
121 augroup END | |
122 | |
123 let s:li = [] | |
124 let t:a='a' | |
125 C tab split | |
126 call assert_equal(['=== tab split ===', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'], s:li) | |
127 let s:li = [] | |
128 let t:a='b' | |
129 C tabnew | |
130 call assert_equal(['=== tabnew ===', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufLeave', 'BufEnter'], s:li) | |
131 let t:a='c' | |
132 let s:li = split(join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")')) , '\s\+') | |
133 call assert_equal(['a', 'b', 'c'], s:li) | |
134 | |
135 let s:li = [] | |
136 C call map(range(1, tabpagenr('$')), 'settabvar(v:val, ''a'', v:val*2)') | |
137 call assert_equal(["=== call map(range(1, tabpagenr('$')), 'settabvar(v:val, ''a'', v:val*2)') ==="], s:li) | |
138 let s:li = split(join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")')) , '\s\+') | |
139 call assert_equal(['2', '4', '6'], s:li) | |
140 | |
141 let s:li = [] | |
142 let w:a='a' | |
143 C vsplit | |
144 call assert_equal(['=== vsplit ===', 'WinLeave', 'WinEnter'], s:li) | |
145 let s:li = [] | |
146 let w:a='a' | |
147 let tabn=tabpagenr() | |
148 let winr=range(1, winnr('$')) | |
149 C tabnext 1 | |
150 call assert_equal(['=== tabnext 1 ===', 'BufLeave', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufEnter'], s:li) | |
151 let s:li = split(join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")')), '\s\+') | |
152 call assert_equal(['a', 'a'], s:li) | |
153 let s:li = [] | |
154 C call map(copy(winr), 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)') | |
155 let s:li = split(join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")')), '\s\+') | |
156 call assert_equal(['2', '4'], s:li) | |
157 | |
158 augroup TabDestructive | |
159 autocmd TabEnter * :C tabnext 2 | C tabclose 3 | |
160 augroup END | |
161 let s:li = [] | |
162 C tabnext 3 | |
163 call assert_equal(['=== tabnext 3 ===', 'BufLeave', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', '=== tabnext 2 ===', '=== tabclose 3 ==='], s:li) | |
164 call assert_equal(['2/2'], [tabpagenr().'/'.tabpagenr('$')]) | |
165 | |
166 autocmd! TabDestructive TabEnter | |
167 let s:li = [] | |
168 C tabnew | |
169 call assert_equal(['=== tabnew ===', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufLeave', 'BufEnter'], s:li) | |
170 let s:li = [] | |
171 C tabnext 1 | |
172 call assert_equal(['=== tabnext 1 ===', 'BufLeave', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufEnter'], s:li) | |
173 | |
174 autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3 | |
175 let s:li = [] | |
176 C tabnext 3 | |
177 call assert_equal(['=== tabnext 3 ===', 'BufLeave', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', '=== tabnext 2 ===', 'BufLeave', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', '=== tabnext 2 ===', '=== tabclose 3 ===', 'BufEnter', '=== tabclose 3 ==='], s:li) | |
178 call assert_equal(['2/2'], [tabpagenr().'/'.tabpagenr('$')]) | |
179 | |
180 delcommand C | |
181 autocmd! TabDestructive | |
182 augroup! TabDestructive | |
183 autocmd! TestTabpageGroup | |
184 augroup! TestTabpageGroup | |
185 tabonly! | |
186 bw! | |
187 endfunction | |
188 | |
189 " vim: shiftwidth=2 sts=2 expandtab |