xref: /vim-8.2.3635/src/testdir/test_retab.vim (revision b7081e13)
1" Test :retab
2
3func SetUp()
4  new
5  call setline(1, "\ta  \t    b        c    ")
6endfunc
7
8func TearDown()
9  bwipe!
10endfunc
11
12func Retab(bang, n)
13  let l:old_tabstop = &tabstop
14  let l:old_line = getline(1)
15  exe "retab" . a:bang . a:n
16  let l:line = getline(1)
17  call setline(1, l:old_line)
18  if a:n > 0
19    " :retab changes 'tabstop' to n with argument n > 0.
20    call assert_equal(a:n, &tabstop)
21    exe 'set tabstop=' . l:old_tabstop
22  else
23    " :retab does not change 'tabstop' with empty or n <= 0.
24    call assert_equal(l:old_tabstop, &tabstop)
25  endif
26  return l:line
27endfunc
28
29func Test_retab()
30  set tabstop=8 noexpandtab
31  call assert_equal("\ta\t    b        c    ",            Retab('',  ''))
32  call assert_equal("\ta\t    b        c    ",            Retab('',  0))
33  call assert_equal("\ta\t    b        c    ",            Retab('',  8))
34  call assert_equal("\ta\t    b\t     c\t  ",             Retab('!', ''))
35  call assert_equal("\ta\t    b\t     c\t  ",             Retab('!', 0))
36  call assert_equal("\ta\t    b\t     c\t  ",             Retab('!', 8))
37
38  call assert_equal("\t\ta\t\t\tb        c    ",          Retab('',  4))
39  call assert_equal("\t\ta\t\t\tb\t\t c\t  ",             Retab('!', 4))
40
41  call assert_equal("        a\t\tb        c    ",        Retab('',  10))
42  call assert_equal("        a\t\tb        c    ",        Retab('!', 10))
43
44  set tabstop=8 expandtab
45  call assert_equal("        a           b        c    ", Retab('',  ''))
46  call assert_equal("        a           b        c    ", Retab('',  0))
47  call assert_equal("        a           b        c    ", Retab('',  8))
48  call assert_equal("        a           b        c    ", Retab('!', ''))
49  call assert_equal("        a           b        c    ", Retab('!', 0))
50  call assert_equal("        a           b        c    ", Retab('!', 8))
51
52  call assert_equal("        a           b        c    ", Retab(' ', 4))
53  call assert_equal("        a           b        c    ", Retab('!', 4))
54
55  call assert_equal("        a           b        c    ", Retab(' ', 10))
56  call assert_equal("        a           b        c    ", Retab('!', 10))
57
58  set tabstop=4 noexpandtab
59  call assert_equal("\ta\t\tb        c    ",              Retab('',  ''))
60  call assert_equal("\ta\t\tb\t\t c\t  ",                 Retab('!', ''))
61  call assert_equal("\t a\t\t\tb        c    ",           Retab('',  3))
62  call assert_equal("\t a\t\t\tb\t\t\tc\t  ",             Retab('!', 3))
63  call assert_equal("    a\t  b        c    ",            Retab('',  5))
64  call assert_equal("    a\t  b\t\t c\t ",                Retab('!', 5))
65
66  set tabstop=4 expandtab
67  call assert_equal("    a       b        c    ",         Retab('',  ''))
68  call assert_equal("    a       b        c    ",         Retab('!', ''))
69  call assert_equal("    a       b        c    ",         Retab('',  3))
70  call assert_equal("    a       b        c    ",         Retab('!', 3))
71  call assert_equal("    a       b        c    ",         Retab('',  5))
72  call assert_equal("    a       b        c    ",         Retab('!', 5))
73endfunc
74
75func Test_retab_error()
76  call assert_fails('retab -1',  'E487:')
77  call assert_fails('retab! -1', 'E487:')
78  call assert_fails('ret -1000', 'E487:')
79  call assert_fails('ret 10000', 'E475:')
80  call assert_fails('ret 80000000000000000000', 'E475:')
81endfunc
82
83" vim: shiftwidth=2 sts=2 expandtab
84