diff --git a/src/testdir/test_tabpage.vim b/src/testdir/test_tabpage.vim
index 1720107..c139958 100644
--- a/src/testdir/test_tabpage.vim
+++ b/src/testdir/test_tabpage.vim
@@ -94,10 +94,6 @@
   call assert_equal(7, tabpagenr())
   tabmove
   call assert_equal(10, tabpagenr())
-  tabmove -20
-  call assert_equal(1, tabpagenr())
-  tabmove +20
-  call assert_equal(10, tabpagenr())
   0tabmove
   call assert_equal(1, tabpagenr())
   $tabmove
@@ -110,7 +106,16 @@
   call assert_equal(4, tabpagenr())
   7tabmove 5
   call assert_equal(5, tabpagenr())
+  call assert_fails("99tabmove", 'E16:')
+  call assert_fails("+99tabmove", 'E16:')
+  call assert_fails("-99tabmove", 'E16:')
   call assert_fails("tabmove foo", 'E474:')
+  call assert_fails("tabmove 99", 'E474:')
+  call assert_fails("tabmove +99", 'E474:')
+  call assert_fails("tabmove -99", 'E474:')
+  call assert_fails("tabmove -3+", 'E474:')
+  call assert_fails("tabmove $3", 'E474:')
+  1tabonly!
 endfunc
 
 " Test autocommands
@@ -118,7 +123,6 @@
   if !has('autocmd')
     return
   endif
-  tabonly!
   command -nargs=1 -bar C :call add(s:li, '=== ' . <q-args> . ' ===')|<args>
   augroup TestTabpageGroup
     au!
@@ -183,8 +187,10 @@
 
   autocmd TabDestructive TabEnter * nested :C tabnext 2 | C tabclose 3
   let s:li = []
-  C tabnext 3
-  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)
+  call assert_equal(3, tabpagenr('$'))
+  C tabnext 2
+  call assert_equal(2, tabpagenr('$'))
+  call assert_equal(['=== tabnext 2 ===', 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter', '=== tabnext 2 ===', '=== tabclose 3 ==='], s:li)
   call assert_equal(['2/2'], [tabpagenr().'/'.tabpagenr('$')])
 
   delcommand C
@@ -192,8 +198,7 @@
   augroup! TabDestructive
   autocmd! TestTabpageGroup
   augroup! TestTabpageGroup
-  tabonly!
-  bw!
+  1tabonly!
 endfunction
 
 function Test_tabpage_with_tab_modifier()
@@ -224,8 +229,223 @@
   call assert_fails('-99tab help', 'E16:')
 
   delfunction s:check_tab
-  tabonly!
-  bw!
+  1tabonly!
+endfunction
+
+function Check_tab_count(pre_nr, cmd, post_nr)
+  exec 'tabnext' a:pre_nr
+  normal! G
+  exec a:cmd
+  call assert_equal(a:post_nr, tabpagenr(), a:cmd)
+endfunc
+
+" Test for [count] of tabnext
+function Test_tabpage_with_tabnext()
+  for n in range(4)
+    tabedit
+    call setline(1, ['', '', '3'])
+  endfor
+
+  call Check_tab_count(1, 'tabnext', 2)
+  call Check_tab_count(1, '3tabnext', 3)
+  call Check_tab_count(1, '.tabnext', 1)
+  call Check_tab_count(1, '.+1tabnext', 2)
+  call Check_tab_count(2, '+tabnext', 3)
+  call Check_tab_count(2, '+2tabnext', 4)
+  call Check_tab_count(4, '-tabnext', 3)
+  call Check_tab_count(4, '-2tabnext', 2)
+  call Check_tab_count(3, '$tabnext', 5)
+  call assert_fails('0tabnext', 'E16:')
+  call assert_fails('99tabnext', 'E16:')
+  call assert_fails('+99tabnext', 'E16:')
+  call assert_fails('-99tabnext', 'E16:')
+  call Check_tab_count(1, 'tabnext 3', 3)
+  call Check_tab_count(2, 'tabnext +', 3)
+  call Check_tab_count(2, 'tabnext +2', 4)
+  call Check_tab_count(4, 'tabnext -', 3)
+  call Check_tab_count(4, 'tabnext -2', 2)
+  call Check_tab_count(3, 'tabnext $', 5)
+  call assert_fails('tabnext 0', 'E474:')
+  call assert_fails('tabnext .', 'E474:')
+  call assert_fails('tabnext -+', 'E474:')
+  call assert_fails('tabnext +2-', 'E474:')
+  call assert_fails('tabnext $3', 'E474:')
+  call assert_fails('tabnext 99', 'E474:')
+  call assert_fails('tabnext +99', 'E474:')
+  call assert_fails('tabnext -99', 'E474:')
+
+  1tabonly!
+endfunction
+
+" Test for [count] of tabprevious
+function Test_tabpage_with_tabprevious()
+  for n in range(5)
+    tabedit
+    call setline(1, ['', '', '3'])
+  endfor
+
+  for cmd in ['tabNext', 'tabprevious']
+    call Check_tab_count(6, cmd, 5)
+    call Check_tab_count(6, '3' . cmd, 3)
+    call Check_tab_count(6, '8' . cmd, 4)
+    call Check_tab_count(6, cmd . ' 3', 3)
+    call Check_tab_count(6, cmd . ' 8', 4)
+    for n in range(2)
+      for c in ['0', '.+3', '+', '+2' , '-', '-2' , '$', '+99', '-99']
+        if n == 0 " pre count
+          let entire_cmd = c . cmd
+          let err_code = 'E16:'
+        else
+          let entire_cmd = cmd . ' ' . c
+          let err_code = 'E474:'
+        endif
+        call assert_fails(entire_cmd, err_code)
+      endfor
+    endfor
+  endfor
+
+  1tabonly!
+endfunction
+
+function s:reconstruct_tabpage_for_test(nr)
+  let n = (a:nr > 2) ? a:nr - 2 : 1
+  1tabonly!
+  0tabedit n0
+  for n in range(1, n)
+    exec '$tabedit n' . n
+    if n == 1
+      call setline(1, ['', '', '3'])
+    endif
+  endfor
+endfunc
+
+" Test for [count] of tabclose
+function Test_tabpage_with_tabclose()
+
+  " pre count
+  call s:reconstruct_tabpage_for_test(6)
+  call Check_tab_count(3, 'tabclose!', 3)
+  call Check_tab_count(1, '3tabclose', 1)
+  call Check_tab_count(4, '4tabclose', 3)
+  call Check_tab_count(3, '1tabclose', 2)
+  call Check_tab_count(2, 'tabclose', 1)
+  call assert_equal(1, tabpagenr('$'))
+  call assert_equal('', bufname(''))
+
+  call s:reconstruct_tabpage_for_test(6)
+  call Check_tab_count(2, '$tabclose', 2)
+  call Check_tab_count(4, '.tabclose', 4)
+  call Check_tab_count(3, '.+tabclose', 3)
+  call Check_tab_count(3, '.-2tabclose', 2)
+  call Check_tab_count(1, '.+1tabclose!', 1)
+  call assert_equal(1, tabpagenr('$'))
+  call assert_equal('', bufname(''))
+
+  " post count
+  call s:reconstruct_tabpage_for_test(6)
+  call Check_tab_count(3, 'tabclose!', 3)
+  call Check_tab_count(1, 'tabclose 3', 1)
+  call Check_tab_count(4, 'tabclose 4', 3)
+  call Check_tab_count(3, 'tabclose 1', 2)
+  call Check_tab_count(2, 'tabclose', 1)
+  call assert_equal(1, tabpagenr('$'))
+  call assert_equal('', bufname(''))
+
+  call s:reconstruct_tabpage_for_test(6)
+  call Check_tab_count(2, 'tabclose $', 2)
+  call Check_tab_count(4, 'tabclose', 4)
+  call Check_tab_count(3, 'tabclose +', 3)
+  call Check_tab_count(3, 'tabclose -2', 2)
+  call Check_tab_count(1, 'tabclose! +1', 1)
+  call assert_equal(1, tabpagenr('$'))
+  call assert_equal('', bufname(''))
+
+  call s:reconstruct_tabpage_for_test(6)
+  for n in range(2)
+    for c in ['0', '$3', '99', '+99', '-99']
+      if n == 0 " pre count
+        let entire_cmd = c . 'tabclose'
+        let err_code = 'E16:'
+      else
+        let entire_cmd = 'tabclose ' . c
+        let err_code = 'E474:'
+      endif
+      call assert_fails(entire_cmd, err_code)
+      call assert_equal(6, tabpagenr('$'))
+    endfor
+  endfor
+
+  call assert_fails('3tabclose', 'E37:')
+  call assert_fails('tabclose 3', 'E37:')
+  call assert_fails('tabclose -+', 'E474:')
+  call assert_fails('tabclose +2-', 'E474:')
+  call assert_equal(6, tabpagenr('$'))
+
+  1tabonly!
+endfunction
+
+" Test for [count] of tabonly
+function Test_tabpage_with_tabonly()
+
+  " Test for the normal behavior (pre count only)
+  let tc = [ [4, '.', '!'], [2, '.+', ''], [3, '.-2', '!'], [1, '.+1', '!'] ]
+  for c in tc
+    call s:reconstruct_tabpage_for_test(6)
+    let entire_cmd = c[1] . 'tabonly' . c[2]
+    call Check_tab_count(c[0], entire_cmd, 1)
+    call assert_equal(1, tabpagenr('$'))
+  endfor
+
+  " Test for the normal behavior
+  let tc2 = [ [3, '', ''], [1, '3', ''], [4, '4', '!'], [3, '1', '!'],
+        \    [2, '', '!'],
+        \    [2, '$', '!'], [3, '+', '!'], [3, '-2', '!'], [3, '+1', '!']
+        \  ]
+  for n in range(2)
+    for c in tc2
+      call s:reconstruct_tabpage_for_test(6)
+      if n == 0 " pre count
+        let entire_cmd = c[1] . 'tabonly' . c[2]
+      else
+        let entire_cmd = 'tabonly' . c[2] . ' ' . c[1]
+      endif
+      call Check_tab_count(c[0], entire_cmd, 1)
+      call assert_equal(1, tabpagenr('$'))
+    endfor
+  endfor
+
+  " Test for the error behavior
+  for n in range(2)
+    for c in ['0', '$3', '99', '+99', '-99']
+      call s:reconstruct_tabpage_for_test(6)
+      if n == 0 " pre count
+        let entire_cmd = c . 'tabonly'
+        let err_code = 'E16:'
+      else
+        let entire_cmd = 'tabonly ' . c
+        let err_code = 'E474:'
+      endif
+      call assert_fails(entire_cmd, err_code)
+      call assert_equal(6, tabpagenr('$'))
+    endfor
+  endfor
+
+  " Test for the error behavior (post count only)
+  for c in tc
+    call s:reconstruct_tabpage_for_test(6)
+    let entire_cmd = 'tabonly' . c[2] . ' ' . c[1]
+    let err_code = 'E474:'
+    call assert_fails(entire_cmd, err_code)
+    call assert_equal(6, tabpagenr('$'))
+  endfor
+
+  call assert_fails('tabonly -+', 'E474:')
+  call assert_fails('tabonly +2-', 'E474:')
+  call assert_equal(6, tabpagenr('$'))
+
+  1tabonly!
+  new
+  only!
 endfunction
 
 func Test_tabnext_on_buf_unload1()
