Imported Upstream version 8.0.586
[platform/upstream/vim.git] / src / testdir / test_retab.vim
1 " Test :retab
2 func SetUp()
3   new
4   call setline(1, "\ta  \t    b        c    ")
5 endfunc
6
7 func TearDown()
8   bwipe!
9 endfunc
10
11 func 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
26 endfunc
27
28 func 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))
72 endfunc
73
74 func Test_retab_error()
75   call assert_fails('retab -1',  'E487:')
76   call assert_fails('retab! -1', 'E487:')
77 endfunc