aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorLucas Hoffmann <l-m-h@web.de>2015-05-15 19:03:48 +0200
committerLucas Hoffmann <l-m-h@web.de>2015-07-11 00:47:49 +0200
commit98c022c329d7e782d3624ce04576cdafa33b4ae0 (patch)
tree1f2bdbd5c163678768c7d1329eef561b2135aa00 /test
parent73d9cd85df478e98a5d229087489c808a6fbb9a4 (diff)
downloadrneovim-98c022c329d7e782d3624ce04576cdafa33b4ae0.tar.gz
rneovim-98c022c329d7e782d3624ce04576cdafa33b4ae0.tar.bz2
rneovim-98c022c329d7e782d3624ce04576cdafa33b4ae0.zip
tests: Migrate legacy test 62.
Diffstat (limited to 'test')
-rw-r--r--test/functional/legacy/062_tab_pages_spec.lua321
1 files changed, 321 insertions, 0 deletions
diff --git a/test/functional/legacy/062_tab_pages_spec.lua b/test/functional/legacy/062_tab_pages_spec.lua
new file mode 100644
index 0000000000..8a3b47de46
--- /dev/null
+++ b/test/functional/legacy/062_tab_pages_spec.lua
@@ -0,0 +1,321 @@
+-- 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
+
+describe('tab pages', function()
+ setup(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
+ ]])
+
+ -- Open three tab pages and use ":tabdo".
+ source([[
+ 0tabnew
+ 1tabnew
+ $tabnew
+ 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
+ ]])
+
+ -- 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([=[
+ 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)
+ ]=])
+
+ -- 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)
+
+ " 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)
+
+ " 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)
+ ]])
+-------
+
+ execute('for i in range(9) | tabnew | endfor')
+ feed('1gt')
+ feed('Go<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('tabmove 5')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('tabmove -2')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('tabmove +4')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('tabmove')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('tabmove -20')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('tabmove +20')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('3tabmove')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute('7tabmove 5')
+ feed('i<C-R>=tabpagenr()<C-M><C-M><esc>')
+ execute([[let a='No error caught.']])
+ execute('try')
+ execute('tabmove foo')
+ execute('catch E474')
+ execute([[let a='E474 caught.']])
+ execute('endtry')
+ feed('i<C-R>=a<C-M><esc>')
+
+ -- Test autocommands.
+ 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
+ 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")')))
+ C call map(range(1, tabpagenr('$')),
+ \ 'settabvar(v:val, ''a'', v:val*2)')
+ call add(g:r, join(map(range(1, tabpagenr('$')),
+ \ '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
+ endfunction
+ call Test()
+ $ put =g:r
+ ]=])
+
+
+ --execute('0,/^Results/-1 d')
+ --execute('qa!')
+
+ -- Assert buffer contents.
+ 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
+ WinEnter
+ TabEnter
+ === tabnew ===
+ WinLeave
+ TabLeave
+ WinEnter
+ TabEnter
+ BufLeave
+ BufEnter
+ a b c
+ === call map(range(1, tabpagenr('$')), 'settabvar(v:val, ''a'', v:val*2)') ===
+ 2 4 6
+ === vsplit ===
+ WinLeave
+ WinEnter
+ === tabnext 1 ===
+ BufLeave
+ WinLeave
+ TabLeave
+ WinEnter
+ TabEnter
+ BufEnter
+ a a
+ === call map(copy(winr), 'settabwinvar('.tabn.', v:val, ''a'', v:val*2)') ===
+ 2 4
+ === 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]=])
+ end)
+end)