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