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