diff --git a/src/testdir/test_number.vim b/src/testdir/test_number.vim
new file mode 100644
index 0000000..59debce
--- /dev/null
+++ b/src/testdir/test_number.vim
@@ -0,0 +1,254 @@
+" Test for 'number' and 'relativenumber'
+
+source view_util.vim
+
+func! s:screen_lines(start, end) abort
+  return ScreenLines([a:start, a:end], 8)
+endfunc
+
+func! s:compare_lines(expect, actual)
+  call assert_equal(a:expect, a:actual)
+endfunc
+
+func! s:test_windows(h, w) abort
+  call NewWindow(a:h, a:w)
+endfunc
+
+func! s:close_windows() abort
+  call CloseWindow()
+endfunc
+
+func! s:validate_cursor() abort
+  " update skipcol.
+  " wincol():
+  "   f_wincol
+  "     -> validate_cursor
+  "          -> curs_columns
+  call wincol()
+endfunc
+
+func Test_set_options()
+  set nu rnu
+  call assert_equal(1, &nu)
+  call assert_equal(1, &rnu)
+
+  call s:test_windows(10, 20)
+  call assert_equal(1, &nu)
+  call assert_equal(1, &rnu)
+  call s:close_windows()
+
+  set nu& rnu&
+endfunc
+
+func Test_set_global_and_local()
+  " setlocal must NOT reset the other global value
+  set nonu nornu
+  setglobal nu
+  setlocal rnu
+  call assert_equal(1, &g:nu)
+
+  set nonu nornu
+  setglobal rnu
+  setlocal nu
+  call assert_equal(1, &g:rnu)
+
+  " setglobal MUST reset the other global value
+  set nonu nornu
+  setglobal nu
+  setglobal rnu
+  call assert_equal(1, &g:nu)
+
+  set nonu nornu
+  setglobal rnu
+  setglobal nu
+  call assert_equal(1, &g:rnu)
+
+  " set MUST reset the other global value
+  set nonu nornu
+  set nu
+  set rnu
+  call assert_equal(1, &g:nu)
+
+  set nonu nornu
+  set rnu
+  set nu
+  call assert_equal(1, &g:rnu)
+
+  set nu& rnu&
+endfunc
+
+func Test_number()
+  call s:test_windows(10, 20)
+  call setline(1, ["abcdefghij", "klmnopqrst", "uvwxyzABCD", "EFGHIJKLMN", "OPQRSTUVWX", "YZ"])
+  setl number
+  let lines = s:screen_lines(1, 4)
+  let expect = [
+\ "  1 abcd",
+\ "  2 klmn",
+\ "  3 uvwx",
+\ "  4 EFGH",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
+
+func Test_relativenumber()
+  call s:test_windows(10, 20)
+  call setline(1, ["abcdefghij", "klmnopqrst", "uvwxyzABCD", "EFGHIJKLMN", "OPQRSTUVWX", "YZ"])
+  3
+  setl relativenumber
+  let lines = s:screen_lines(1, 6)
+  let expect = [
+\ "  2 abcd",
+\ "  1 klmn",
+\ "  0 uvwx",
+\ "  1 EFGH",
+\ "  2 OPQR",
+\ "  3 YZ  ",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
+
+func Test_number_with_relativenumber()
+  call s:test_windows(10, 20)
+  call setline(1, ["abcdefghij", "klmnopqrst", "uvwxyzABCD", "EFGHIJKLMN", "OPQRSTUVWX", "YZ"])
+  4
+  setl number relativenumber
+  let lines = s:screen_lines(1, 6)
+  let expect = [
+\ "  3 abcd",
+\ "  2 klmn",
+\ "  1 uvwx",
+\ "4   EFGH",
+\ "  1 OPQR",
+\ "  2 YZ  ",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
+
+func Test_number_with_linewrap1()
+  call s:test_windows(3, 20)
+  normal! 61ia
+  setl number wrap
+  call s:validate_cursor()
+  let lines = s:screen_lines(1, 3)
+  let expect = [
+\ "--1 aaaa",
+\ "    aaaa",
+\ "    aaaa",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
+
+" Pending: https://groups.google.com/forum/#!topic/vim_dev/tzNKP7EDWYI
+func XTest_number_with_linewrap2()
+  call s:test_windows(3, 20)
+  normal! 61ia
+  setl number wrap
+  call s:validate_cursor()
+  0
+  call s:validate_cursor()
+  let lines = s:screen_lines(1, 3)
+  let expect = [
+\ "  1 aaaa",
+\ "    aaaa",
+\ "    aaaa",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
+
+" Pending: https://groups.google.com/forum/#!topic/vim_dev/tzNKP7EDWYI
+func XTest_number_with_linewrap3()
+  call s:test_windows(4, 20)
+  normal! 81ia
+  setl number wrap
+  call s:validate_cursor()
+  setl nonumber
+  call s:validate_cursor()
+  let lines = s:screen_lines(1, 4)
+  let expect = [
+\ "aaaaaaaa",
+\ "aaaaaaaa",
+\ "aaaaaaaa",
+\ "a       ",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
+
+func Test_numberwidth()
+  call s:test_windows(10, 20)
+  call setline(1, repeat(['aaaa'], 10))
+  setl number numberwidth=6
+  let lines = s:screen_lines(1, 3)
+  let expect = [
+\ "    1 aa",
+\ "    2 aa",
+\ "    3 aa",
+\ ]
+  call s:compare_lines(expect, lines)
+
+  set relativenumber
+  let lines = s:screen_lines(1, 3)
+  let expect = [
+\ "1     aa",
+\ "    1 aa",
+\ "    2 aa",
+\ ]
+  call s:compare_lines(expect, lines)
+
+  set nonumber
+  let lines = s:screen_lines(1, 3)
+  let expect = [
+\ "    0 aa",
+\ "    1 aa",
+\ "    2 aa",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
+
+func Test_numberwidth_adjusted()
+  call s:test_windows(10, 20)
+  call setline(1, repeat(['aaaa'], 10000))
+  setl number numberwidth=4
+  let lines = s:screen_lines(1, 3)
+  let expect = [
+\ "    1 aa",
+\ "    2 aa",
+\ "    3 aa",
+\ ]
+  call s:compare_lines(expect, lines)
+
+  $
+  let lines = s:screen_lines(8, 10)
+  let expect = [
+\ " 9998 aa",
+\ " 9999 aa",
+\ "10000 aa",
+\ ]
+  call s:compare_lines(expect, lines)
+
+  setl relativenumber
+  let lines = s:screen_lines(8, 10)
+  let expect = [
+\ "    2 aa",
+\ "    1 aa",
+\ "10000 aa",
+\ ]
+  call s:compare_lines(expect, lines)
+
+  setl nonumber
+  let lines = s:screen_lines(8, 10)
+  let expect = [
+\ "  2 aaaa",
+\ "  1 aaaa",
+\ "  0 aaaa",
+\ ]
+  call s:compare_lines(expect, lines)
+  call s:close_windows()
+endfunc
