Bram Moolenaar | c9b4b05 | 2006-04-30 18:54:39 +0000 | [diff] [blame] | 1 | Tests for tab pages |
| 2 | |
| 3 | STARTTEST |
| 4 | :so small.vim |
Bram Moolenaar | 33e8778 | 2014-04-29 11:55:29 +0200 | [diff] [blame] | 5 | :lang C |
Bram Moolenaar | c9b4b05 | 2006-04-30 18:54:39 +0000 | [diff] [blame] | 6 | :" Simple test for opening and closing a tab page |
| 7 | :tabnew |
| 8 | :let nr = tabpagenr() |
| 9 | :q |
| 10 | :call append(line('$'), 'tab page ' . nr) |
Bram Moolenaar | 9d2c8c1 | 2007-09-25 16:00:00 +0000 | [diff] [blame] | 11 | :unlet nr |
Bram Moolenaar | c9b4b05 | 2006-04-30 18:54:39 +0000 | [diff] [blame] | 12 | :" |
| 13 | :" Open three tab pages and use ":tabdo" |
| 14 | :0tabnew |
| 15 | :1tabnew |
Bram Moolenaar | 3ffc79a | 2015-01-07 15:57:17 +0100 | [diff] [blame] | 16 | :$tabnew |
Bram Moolenaar | c9b4b05 | 2006-04-30 18:54:39 +0000 | [diff] [blame] | 17 | :tabdo call append(line('$'), 'this is tab page ' . tabpagenr()) |
| 18 | :tabclose! 2 |
| 19 | :tabrewind |
| 20 | :let line1 = getline('$') |
| 21 | :undo |
| 22 | :q |
| 23 | :tablast |
| 24 | :let line2 = getline('$') |
| 25 | :q! |
| 26 | :call append(line('$'), line1) |
| 27 | :call append(line('$'), line2) |
Bram Moolenaar | 9d2c8c1 | 2007-09-25 16:00:00 +0000 | [diff] [blame] | 28 | :unlet line1 line2 |
Bram Moolenaar | c9b4b05 | 2006-04-30 18:54:39 +0000 | [diff] [blame] | 29 | :" |
Bram Moolenaar | 20a825a | 2010-05-31 21:27:30 +0200 | [diff] [blame] | 30 | :" Test for settabvar() and gettabvar() functions. Open a new tab page and |
| 31 | :" set 3 variables to a number, string and a list. Verify that the variables |
| 32 | :" are correctly set. |
| 33 | :tabnew |
| 34 | :tabfirst |
| 35 | :call settabvar(2, 'val_num', 100) |
| 36 | :call settabvar(2, 'val_str', 'SetTabVar test') |
| 37 | :call settabvar(2, 'val_list', ['red', 'blue', 'green']) |
| 38 | :" |
| 39 | :let test_status = 'gettabvar: fail' |
Bram Moolenaar | 6f394f8 | 2013-07-14 13:41:56 +0200 | [diff] [blame] | 40 | :if gettabvar(2, 'val_num') == 100 && gettabvar(2, 'val_str') == 'SetTabVar test' && gettabvar(2, 'val_list') == ['red', 'blue', 'green'] |
Bram Moolenaar | 20a825a | 2010-05-31 21:27:30 +0200 | [diff] [blame] | 41 | : let test_status = 'gettabvar: pass' |
| 42 | :endif |
| 43 | :call append(line('$'), test_status) |
| 44 | :" |
| 45 | :tabnext 2 |
| 46 | :let test_status = 'settabvar: fail' |
| 47 | :if t:val_num == 100 && t:val_str == 'SetTabVar test' && t:val_list == ['red', 'blue', 'green'] |
| 48 | : let test_status = 'settabvar: pass' |
| 49 | :endif |
| 50 | :tabclose |
| 51 | :call append(line('$'), test_status) |
| 52 | :" |
Bram Moolenaar | 7c578d3 | 2012-03-07 22:55:20 +0100 | [diff] [blame] | 53 | :if has('gui') || has('clientserver') |
Bram Moolenaar | 52379ea | 2012-02-22 19:13:08 +0100 | [diff] [blame] | 54 | :" Test for ":tab drop exist-file" to keep current window. |
| 55 | :sp test1 |
| 56 | :tab drop test1 |
| 57 | :let test_status = 'tab drop 1: fail' |
| 58 | :if tabpagenr('$') == 1 && winnr('$') == 2 && winnr() == 1 |
| 59 | : let test_status = 'tab drop 1: pass' |
| 60 | :endif |
| 61 | :close |
| 62 | :call append(line('$'), test_status) |
| 63 | :" |
| 64 | :" |
| 65 | :" Test for ":tab drop new-file" to keep current window of tabpage 1. |
| 66 | :split |
| 67 | :tab drop newfile |
| 68 | :let test_status = 'tab drop 2: fail' |
| 69 | :if tabpagenr('$') == 2 && tabpagewinnr(1, '$') == 2 && tabpagewinnr(1) == 1 |
| 70 | : let test_status = 'tab drop 2: pass' |
| 71 | :endif |
| 72 | :tabclose |
| 73 | :q |
| 74 | :call append(line('$'), test_status) |
| 75 | :" |
| 76 | :" |
| 77 | :" Test for ":tab drop multi-opend-file" to keep current tabpage and window. |
| 78 | :new test1 |
| 79 | :tabnew |
| 80 | :new test1 |
| 81 | :tab drop test1 |
| 82 | :let test_status = 'tab drop 3: fail' |
| 83 | :if tabpagenr() == 2 && tabpagewinnr(2, '$') == 2 && tabpagewinnr(2) == 1 |
| 84 | : let test_status = 'tab drop 3: pass' |
| 85 | :endif |
| 86 | :tabclose |
| 87 | :q |
| 88 | :call append(line('$'), test_status) |
Bram Moolenaar | 7c578d3 | 2012-03-07 22:55:20 +0100 | [diff] [blame] | 89 | :else |
| 90 | :" :drop not supported |
| 91 | :call append(line('$'), 'tab drop 1: pass') |
| 92 | :call append(line('$'), 'tab drop 2: pass') |
| 93 | :call append(line('$'), 'tab drop 3: pass') |
| 94 | :endif |
Bram Moolenaar | 52379ea | 2012-02-22 19:13:08 +0100 | [diff] [blame] | 95 | :" |
| 96 | :" |
Bram Moolenaar | 8cb8dca | 2012-07-06 18:27:39 +0200 | [diff] [blame] | 97 | :for i in range(9) | tabnew | endfor |
| 98 | 1gt |
Bram Moolenaar | 40ce3a4 | 2015-04-21 18:08:39 +0200 | [diff] [blame] | 99 | :$put =tabpagenr() |
Bram Moolenaar | 8cb8dca | 2012-07-06 18:27:39 +0200 | [diff] [blame] | 100 | :tabmove 5 |
Bram Moolenaar | 40ce3a4 | 2015-04-21 18:08:39 +0200 | [diff] [blame] | 101 | :$put =tabpagenr() |
| 102 | :.tabmove |
| 103 | :$put =tabpagenr() |
| 104 | :tabmove - |
| 105 | :$put =tabpagenr() |
| 106 | :tabmove + |
| 107 | :$put =tabpagenr() |
Bram Moolenaar | 8cb8dca | 2012-07-06 18:27:39 +0200 | [diff] [blame] | 108 | :tabmove -2 |
Bram Moolenaar | 40ce3a4 | 2015-04-21 18:08:39 +0200 | [diff] [blame] | 109 | :$put =tabpagenr() |
Bram Moolenaar | 8cb8dca | 2012-07-06 18:27:39 +0200 | [diff] [blame] | 110 | :tabmove +4 |
Bram Moolenaar | 40ce3a4 | 2015-04-21 18:08:39 +0200 | [diff] [blame] | 111 | :$put =tabpagenr() |
Bram Moolenaar | 8cb8dca | 2012-07-06 18:27:39 +0200 | [diff] [blame] | 112 | :tabmove |
Bram Moolenaar | 40ce3a4 | 2015-04-21 18:08:39 +0200 | [diff] [blame] | 113 | :$put =tabpagenr() |
Bram Moolenaar | 8cb8dca | 2012-07-06 18:27:39 +0200 | [diff] [blame] | 114 | :tabmove -20 |
Bram Moolenaar | 40ce3a4 | 2015-04-21 18:08:39 +0200 | [diff] [blame] | 115 | :$put =tabpagenr() |
Bram Moolenaar | 8cb8dca | 2012-07-06 18:27:39 +0200 | [diff] [blame] | 116 | :tabmove +20 |
Bram Moolenaar | 40ce3a4 | 2015-04-21 18:08:39 +0200 | [diff] [blame] | 117 | :$put =tabpagenr() |
| 118 | :0tabmove |
| 119 | :$put =tabpagenr() |
| 120 | :$tabmove |
| 121 | :$put =tabpagenr() |
| 122 | :tabmove 0 |
| 123 | :$put =tabpagenr() |
| 124 | :tabmove $ |
| 125 | :$put =tabpagenr() |
Bram Moolenaar | 8cb8dca | 2012-07-06 18:27:39 +0200 | [diff] [blame] | 126 | :3tabmove |
Bram Moolenaar | 40ce3a4 | 2015-04-21 18:08:39 +0200 | [diff] [blame] | 127 | :$put =tabpagenr() |
Bram Moolenaar | 8cb8dca | 2012-07-06 18:27:39 +0200 | [diff] [blame] | 128 | :7tabmove 5 |
Bram Moolenaar | 40ce3a4 | 2015-04-21 18:08:39 +0200 | [diff] [blame] | 129 | :$put =tabpagenr() |
Bram Moolenaar | 8cb8dca | 2012-07-06 18:27:39 +0200 | [diff] [blame] | 130 | :let a='No error caught.' |
| 131 | :try |
| 132 | :tabmove foo |
| 133 | :catch E474 |
| 134 | :let a='E474 caught.' |
| 135 | :endtry |
Bram Moolenaar | 40ce3a4 | 2015-04-21 18:08:39 +0200 | [diff] [blame] | 136 | :$put =a |
Bram Moolenaar | 8cb8dca | 2012-07-06 18:27:39 +0200 | [diff] [blame] | 137 | :" |
Bram Moolenaar | 49e649f | 2013-05-06 04:50:35 +0200 | [diff] [blame] | 138 | :" Test autocommands |
| 139 | :tabonly! |
| 140 | :let g:r=[] |
| 141 | :command -nargs=1 -bar C :call add(g:r, '=== ' . <q-args> . ' ===')|<args> |
| 142 | :function Test() |
| 143 | let hasau=has('autocmd') |
| 144 | if hasau |
| 145 | autocmd TabEnter * :call add(g:r, 'TabEnter') |
| 146 | autocmd WinEnter * :call add(g:r, 'WinEnter') |
| 147 | autocmd BufEnter * :call add(g:r, 'BufEnter') |
| 148 | autocmd TabLeave * :call add(g:r, 'TabLeave') |
| 149 | autocmd WinLeave * :call add(g:r, 'WinLeave') |
| 150 | autocmd BufLeave * :call add(g:r, 'BufLeave') |
| 151 | endif |
| 152 | let t:a='a' |
| 153 | C tab split |
| 154 | if !hasau |
| 155 | let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter'] |
| 156 | endif |
| 157 | let t:a='b' |
| 158 | C tabnew |
| 159 | if !hasau |
| 160 | let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufLeave', 'BufEnter'] |
| 161 | endif |
| 162 | let t:a='c' |
| 163 | call add(g:r, join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")'))) |
Bram Moolenaar | ee31be6 | 2013-07-14 12:21:57 +0200 | [diff] [blame] | 164 | C call map(range(1, tabpagenr('$')), 'settabvar(v:val, ''a'', v:val*2)') |
Bram Moolenaar | 49e649f | 2013-05-06 04:50:35 +0200 | [diff] [blame] | 165 | call add(g:r, join(map(range(1, tabpagenr('$')), 'gettabvar(v:val, "a")'))) |
| 166 | let w:a='a' |
| 167 | C vsplit |
| 168 | if !hasau |
| 169 | let g:r+=['WinLeave', 'WinEnter'] |
| 170 | endif |
| 171 | let w:a='a' |
| 172 | let tabn=tabpagenr() |
| 173 | let winr=range(1, winnr('$')) |
| 174 | C tabnext 1 |
| 175 | if !hasau |
| 176 | let g:r+=['BufLeave', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', 'BufEnter'] |
| 177 | endif |
| 178 | call add(g:r, join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")'))) |
Bram Moolenaar | ee31be6 | 2013-07-14 12:21:57 +0200 | [diff] [blame] | 179 | C call map(copy(winr), 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)') |
Bram Moolenaar | 49e649f | 2013-05-06 04:50:35 +0200 | [diff] [blame] | 180 | call add(g:r, join(map(copy(winr), 'gettabwinvar('.tabn.', v:val, "a")'))) |
| 181 | if hasau |
| 182 | augroup TabDestructive |
| 183 | autocmd TabEnter * :C tabnext 2 | C tabclose 3 |
| 184 | augroup END |
| 185 | C tabnext 3 |
| 186 | let g:r+=[tabpagenr().'/'.tabpagenr('$')] |
| 187 | autocmd! TabDestructive TabEnter |
| 188 | C tabnew |
| 189 | C tabnext 1 |
| 190 | autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3 |
| 191 | C tabnext 3 |
| 192 | let g:r+=[tabpagenr().'/'.tabpagenr('$')] |
| 193 | else |
| 194 | let g:r+=["=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","2/2","=== tabnew ===","WinLeave","TabLeave","WinEnter","TabEnter","BufLeave","BufEnter","=== tabnext 1 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","BufEnter","=== tabnext 3 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===","BufLeave","WinLeave","TabLeave","WinEnter","TabEnter","=== tabnext 2 ===","=== tabclose 3 ===","BufEnter","=== tabclose 3 ===","2/2",] |
| 195 | endif |
| 196 | endfunction |
| 197 | :call Test() |
| 198 | :$ put =g:r |
| 199 | :" |
Bram Moolenaar | 8cb8dca | 2012-07-06 18:27:39 +0200 | [diff] [blame] | 200 | :" |
Bram Moolenaar | c9b4b05 | 2006-04-30 18:54:39 +0000 | [diff] [blame] | 201 | :/^Results/,$w! test.out |
| 202 | :qa! |
| 203 | ENDTEST |
| 204 | |
| 205 | Results: |