aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/functional/legacy/062_tab_pages_spec.lua267
1 files changed, 93 insertions, 174 deletions
diff --git a/test/functional/legacy/062_tab_pages_spec.lua b/test/functional/legacy/062_tab_pages_spec.lua
index 8a3b47de46..6bbb06f9a7 100644
--- a/test/functional/legacy/062_tab_pages_spec.lua
+++ b/test/functional/legacy/062_tab_pages_spec.lua
@@ -1,28 +1,21 @@
-- Tests for tab pages
local helpers = require('test.functional.helpers')
-local feed, insert, source = helpers.feed, helpers.insert, helpers.source
-local clear, execute, expect = helpers.clear, helpers.execute, helpers.expect
+local feed, insert, source, clear, execute, expect, eval, eq =
+ helpers.feed, helpers.insert, helpers.source, helpers.clear,
+ helpers.execute, helpers.expect, helpers.eval, helpers.eq
describe('tab pages', function()
- setup(clear)
+ before_each(clear)
- it('is working', function()
- insert([=[
- Results:]=])
-
- execute('lang C')
-
- -- Simple test for opening and closing a tab page.
- source([[
- tabnew
- let nr = tabpagenr()
- q
- call append(line('$'), 'tab page ' . nr)
- unlet nr
- ]])
+ it('can be opened and closed', function()
+ execute('tabnew')
+ eq(2, eval('tabpagenr()'))
+ execute('quit')
+ eq(1, eval('tabpagenr()'))
+ end)
- -- Open three tab pages and use ":tabdo".
+ it('can be iterated with :tabdo', function()
source([[
0tabnew
1tabnew
@@ -30,142 +23,112 @@ describe('tab pages', function()
tabdo call append(line('$'), 'this is tab page ' . tabpagenr())
tabclose! 2
tabrewind
- let line1 = getline('$')
- undo
- q
- tablast
- let line2 = getline('$')
- q!
- call append(line('$'), line1)
- call append(line('$'), line2)
- unlet line1 line2
]])
+ eq('this is tab page 1', eval("getline('$')"))
+ execute('tablast')
+ eq('this is tab page 4', eval("getline('$')"))
+ end)
+ it('have local variables accasible with settabvar()/gettabvar()', function()
-- Test for settabvar() and gettabvar() functions. Open a new tab page and
-- set 3 variables to a number, string and a list. Verify that the
-- variables are correctly set.
- source([=[
+ source([[
tabnew
tabfirst
call settabvar(2, 'val_num', 100)
call settabvar(2, 'val_str', 'SetTabVar test')
call settabvar(2, 'val_list', ['red', 'blue', 'green'])
+ ]])
- let test_status = 'gettabvar: fail'
- if gettabvar(2, 'val_num') == 100 &&
- \ gettabvar(2, 'val_str') == 'SetTabVar test' &&
- \ gettabvar(2, 'val_list') == ['red', 'blue', 'green']
- let test_status = 'gettabvar: pass'
- endif
- call append(line('$'), test_status)
-
- tabnext 2
- let test_status = 'settabvar: fail'
- if t:val_num == 100 &&
- \ t:val_str == 'SetTabVar test' &&
- \ t:val_list == ['red', 'blue', 'green']
- let test_status = 'settabvar: pass'
- endif
- tabclose
- call append(line('$'), test_status)
- ]=])
+ eq(100, eval('gettabvar(2, "val_num")'))
+ eq('SetTabVar test', eval('gettabvar(2, "val_str")'))
+ eq({'red', 'blue', 'green'}, eval('gettabvar(2, "val_list")'))
+ execute('tabnext 2')
+ eq(100, eval('t:val_num'))
+ eq('SetTabVar test', eval('t:val_str'))
+ eq({'red', 'blue', 'green'}, eval('t:val_list'))
+ end)
- -- Test some drop features
- source([[
- " Test for ":tab drop exist-file" to keep current window.
- sp test1
- tab drop test1
- let test_status = 'tab drop 1: fail'
- if tabpagenr('$') == 1 && winnr('$') == 2 && winnr() == 1
- let test_status = 'tab drop 1: pass'
- endif
- close
- call append(line('$'), test_status)
+ it('work together with the drop feature and loaded buffers', function()
+ -- Test for ":tab drop exist-file" to keep current window.
+ execute('sp test1')
+ execute('tab drop test1')
+ eq(1, eval('tabpagenr("$")'))
+ eq(2, eval('winnr("$")'))
+ eq(1, eval('winnr()'))
+ end)
- " Test for ":tab drop new-file" to keep current window of tabpage 1.
- split
- tab drop newfile
- let test_status = 'tab drop 2: fail'
- if tabpagenr('$') == 2 &&
- \ tabpagewinnr(1, '$') == 2 &&
- \ tabpagewinnr(1) == 1
- let test_status = 'tab drop 2: pass'
- endif
- tabclose
- q
- call append(line('$'), test_status)
+ it('work together with the drop feature and new files', function()
+ -- Test for ":tab drop new-file" to keep current window of tabpage 1.
+ execute('split')
+ execute('tab drop newfile')
+ eq(2, eval('tabpagenr("$")'))
+ eq(2, eval('tabpagewinnr(1, "$")'))
+ eq(1, eval('tabpagewinnr(1)'))
+ end)
- " Test for ":tab drop multi-opend-file" to keep current tabpage and
- " window.
- new test1
- tabnew
- new test1
- tab drop test1
- let test_status = 'tab drop 3: fail'
- if tabpagenr() == 2 &&
- \ tabpagewinnr(2, '$') == 2 &&
- \ tabpagewinnr(2) == 1
- let test_status = 'tab drop 3: pass'
- endif
- tabclose
- q
- call append(line('$'), test_status)
- ]])
--------
+ it('work together with the drop feature and multi loaded buffers', function()
+ -- Test for ":tab drop multi-opend-file" to keep current tabpage and
+ -- window.
+ execute('new test1')
+ execute('tabnew')
+ execute('new test1')
+ execute('tab drop test1')
+ eq(2, eval('tabpagenr()'))
+ eq(2, eval('tabpagewinnr(2, "$")'))
+ eq(1, eval('tabpagewinnr(2)'))
+ end)
+ it('can be navigated with :tabmove', function()
+ execute('lang C')
execute('for i in range(9) | tabnew | endfor')
feed('1gt')
- feed('Go<C-R>=tabpagenr()<C-M><C-M><esc>')
+ eq(1, eval('tabpagenr()'))
execute('tabmove 5')
- feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ eq(6, eval('tabpagenr()'))
execute('tabmove -2')
- feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ eq(4, eval('tabpagenr()'))
execute('tabmove +4')
- feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ eq(8, eval('tabpagenr()'))
execute('tabmove')
- feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ eq(10, eval('tabpagenr()'))
execute('tabmove -20')
- feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ eq(1, eval('tabpagenr()'))
execute('tabmove +20')
- feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ eq(10, eval('tabpagenr()'))
execute('3tabmove')
- feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ eq(4, eval('tabpagenr()'))
execute('7tabmove 5')
- feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
- execute([[let a='No error caught.']])
+ eq(6, eval('tabpagenr()'))
+ execute('let a="No error caught."')
execute('try')
execute('tabmove foo')
execute('catch E474')
- execute([[let a='E474 caught.']])
+ execute('let a="E474 caught."')
execute('endtry')
- feed('i<C-R>=a<C-M><esc>')
+ eq('E474 caught.', eval('a'))
+ end)
+
+ it('can trigger certain autocommands', function()
+ insert('Results:')
-- Test autocommands.
- source([=[
+ source([[
tabonly!
let g:r=[]
command -nargs=1 -bar C :call add(g:r, '=== '.<q-args>.' ===')|<args>
function Test()
- let hasau=has('autocmd')
- if hasau
- autocmd TabEnter * :call add(g:r, 'TabEnter')
- autocmd WinEnter * :call add(g:r, 'WinEnter')
- autocmd BufEnter * :call add(g:r, 'BufEnter')
- autocmd TabLeave * :call add(g:r, 'TabLeave')
- autocmd WinLeave * :call add(g:r, 'WinLeave')
- autocmd BufLeave * :call add(g:r, 'BufLeave')
- endif
+ autocmd TabEnter * :call add(g:r, 'TabEnter')
+ autocmd WinEnter * :call add(g:r, 'WinEnter')
+ autocmd BufEnter * :call add(g:r, 'BufEnter')
+ autocmd TabLeave * :call add(g:r, 'TabLeave')
+ autocmd WinLeave * :call add(g:r, 'WinLeave')
+ autocmd BufLeave * :call add(g:r, 'BufLeave')
let t:a='a'
C tab split
- if !hasau
- let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter']
- endif
let t:a='b'
C tabnew
- if !hasau
- let g:r+=['WinLeave', 'TabLeave', 'WinEnter', 'TabEnter',
- \ 'BufLeave', 'BufEnter']
- endif
let t:a='c'
call add(g:r, join(map(range(1, tabpagenr('$')),
\ 'gettabvar(v:val, "a")')))
@@ -175,80 +138,36 @@ describe('tab pages', function()
\ 'gettabvar(v:val, "a")')))
let w:a='a'
C vsplit
- if !hasau
- let g:r+=['WinLeave', 'WinEnter']
- endif
let w:a='a'
let tabn=tabpagenr()
let winr=range(1, winnr('$'))
C tabnext 1
- if !hasau
- let g:r+=['BufLeave', 'WinLeave', 'TabLeave', 'WinEnter',
- \ 'TabEnter', 'BufEnter']
- endif
call add(g:r, join(map(copy(winr),
\ 'gettabwinvar('.tabn.', v:val, "a")')))
C call map(copy(winr),
\ 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)')
call add(g:r, join(map(copy(winr),
\ 'gettabwinvar('.tabn.', v:val, "a")')))
- if hasau
- augroup TabDestructive
- autocmd TabEnter * :C tabnext 2 | C tabclose 3
- augroup END
- C tabnext 3
- let g:r+=[tabpagenr().'/'.tabpagenr('$')]
- autocmd! TabDestructive TabEnter
- C tabnew
- C tabnext 1
- autocmd TabDestructive TabEnter * nested
- \ :C tabnext 2 | C tabclose 3
- C tabnext 3
- let g:r+=[tabpagenr().'/'.tabpagenr('$')]
- else
- 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"]
- endif
+ augroup TabDestructive
+ autocmd TabEnter * :C tabnext 2 | C tabclose 3
+ augroup END
+ C tabnext 3
+ let g:r+=[tabpagenr().'/'.tabpagenr('$')]
+ autocmd! TabDestructive TabEnter
+ C tabnew
+ C tabnext 1
+ autocmd TabDestructive TabEnter * nested
+ \ :C tabnext 2 | C tabclose 3
+ C tabnext 3
+ let g:r+=[tabpagenr().'/'.tabpagenr('$')]
endfunction
call Test()
$ put =g:r
- ]=])
-
-
- --execute('0,/^Results/-1 d')
- --execute('qa!')
+ ]])
-- Assert buffer contents.
- expect([=[
+ expect([[
Results:
- tab page 2
- this is tab page 3
- this is tab page 1
- this is tab page 4
- gettabvar: pass
- settabvar: pass
- tab drop 1: pass
- tab drop 2: pass
- tab drop 3: pass
- 1
- 6
- 4
- 8
- 10
- 1
- 10
- 4
- 6
- E474 caught.
=== tab split ===
WinLeave
TabLeave
@@ -316,6 +235,6 @@ describe('tab pages', function()
=== tabclose 3 ===
BufEnter
=== tabclose 3 ===
- 2/2]=])
+ 2/2]])
end)
end)