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