diff --git a/test/easy-align.vader b/test/easy-align.vader index 17b652b..67196aa 100644 --- a/test/easy-align.vader +++ b/test/easy-align.vader @@ -1,11 +1,108 @@ -Execute: - silent! unlet g:easy_align_delimiters +Execute (Clean up test environment): + " TODO: revert after test silent! unlet g:easy_align_ignore_groups silent! unlet g:easy_align_ignore_unmatched silent! unlet g:easy_align_indentation silent! unlet g:easy_align_delimiter_align + silent! unlet g:easy_align_interactive_modes + + let g:easy_align_delimiters = {} vnoremap :EasyAlign +########################################################### + +Given (space-separated columns): + 1 22222 33 444 555 6666 7 888 + 11 222 3333 4 55 6666 77 888 + 111 22 333 444 55555 6666 7 88888 + 1111 2 33 444 555 66 777 8 + +Do (left-align): + vip + \ + *\ + +Expect: + 1 22222 33 444 555 6666 7 888 + 11 222 3333 4 55 6666 77 888 + 111 22 333 444 55555 6666 7 88888 + 1111 2 33 444 555 66 777 8 + +Do (right-align): + vip + \\ + *\ + +Expect: + 1 22222 33 444 555 6666 7 888 + 11 222 3333 4 55 6666 77 888 + 111 22 333 444 55555 6666 7 88888 + 1111 2 33 444 555 66 777 8 + +Do (center-align): + vip + \\\ + *\ + +Expect: + 1 22222 33 444 555 6666 7 888 + 11 222 3333 4 55 6666 77 888 + 111 22 333 444 55555 6666 7 88888 + 1111 2 33 444 555 66 777 8 + +Given (comma-separated columns): + a,,bbb + aa,,bb + aaa,,b + aaaa,, + aaa,b, + aa,bb, + a,bbb, + +Do (left-align): + vip + \ + *, + +Expect: + a, , bbb + aa, , bb + aaa, , b + aaaa, , + aaa, b, + aa, bb, + a, bbb, + +Do (right-align): + vip + \\ + *, + +Expect: + a, , bbb + aa, , bb + aaa, , b + aaaa, , + aaa, b, + aa, bb, + a, bbb, + +Do (center-align): + vip + \\\ + *, + +Expect: + a, , bbb + aa, , bb + aaa, , b + aaaa, , + aaa, b, + aa, bb, + a, bbb, + +########################################################### + Given (the beatles): Paul McCartney 1942 George Harrison 1943mmdd @@ -427,3 +524,565 @@ Expect ruby: ########################################################### +Given c (C code with comments 1): + /* a */ b = c + aa >= bb + // aaa = bbb = cccc + /* aaaa = */ bbbb === cccc " = dddd = " = eeee + aaaaa /* bbbbb */ == ccccc /* != eeeee = */ === fffff + +Do: + vip\*= + +Expect c: + /* a */ b = c + aa >= bb + // aaa = bbb = cccc + /* aaaa = */ bbbb === cccc " = dddd = " = eeee + aaaaa /* bbbbb */ == ccccc /* != eeeee = */ === fffff + +Do: + vip\\\*= + +Expect c: + /* a */ b = c + aa >= bb + // aaa = bbb = cccc + /* aaaa = */ bbbb === cccc " = dddd = " = eeee + aaaaa /* bbbbb */ == ccccc /* != eeeee = */ === fffff + +########################################################### + +Given c (C code with comments 2): + int a = 1; + long b = 2; + float c = 3; + string d = 4; + // this line should not get aligned + long int e = 5; + std::map f; + std::map g; /* this? */ + short h /* how about this? */ = 6; + string i = "asdf"; + +Do (around =): + vip\= + +Expect c: + int a = 1; + long b = 2; + float c = 3; + string d = 4; + // this line should not get aligned + long int e = 5; + std::map f; + std::map g; /* this? */ + short h /* how about this? */ = 6; + string i = "asdf"; + +Do (right-align around =, comment lines are ignored): + vip\\= + +Expect c: + int a = 1; + long b = 2; + float c = 3; + string d = 4; + // this line should not get aligned + long int e = 5; + std::map f; + std::map g; /* this? */ + short h /* how about this? */ = 6; + string i = "asdf"; + +Do (right-align around =, do not ignore comment lines): + vip\\\= + +Expect c: + int a = 1; + long b = 2; + float c = 3; + string d = 4; + // this line should not get aligned + long int e = 5; + std::map f; + std::map g; /* this? */ + short h /* how about this? */ = 6; + string i = "asdf"; + +########################################################### + +Given ruby (= operators): + a = + a = 1 + bbbb .= 2 + ccccccc = 3 + ccccccccccccccc + ddd = # + eeee === eee = eee = eee=f + fff = ggg += gg &&= gg + g != hhhhhhhh == # 8 + i := 5 + i %= 5 + i *= 5 + j =~ 5 + j >= 5 + aa => 123 + aa <<= 123 + aa >>= 123 + bbb => 123 + c => 1233123 + d => 123 + dddddd &&= 123 + dddddd ||= 123 + dddddd /= 123 + gg <=> ee + +Do (1st =): + vip\= + +Expect ruby: + a = + a = 1 + bbbb .= 2 + ccccccc = 3 + ccccccccccccccc + ddd = # + eeee === eee = eee = eee=f + fff = ggg += gg &&= gg + g != hhhhhhhh == # 8 + i := 5 + i %= 5 + i *= 5 + j =~ 5 + j >= 5 + aa => 123 + aa <<= 123 + aa >>= 123 + bbb => 123 + c => 1233123 + d => 123 + dddddd &&= 123 + dddddd ||= 123 + dddddd /= 123 + gg <=> ee + +Do (LR =): + vip\**= + +Expect ruby: + a = + a = 1 + bbbb .= 2 + ccccccc = 3 + ccccccccccccccc + ddd = # + eeee === eee = eee = eee = f + fff = ggg += gg &&= gg + g != hhhhhhhh == # 8 + i := 5 + i %= 5 + i *= 5 + j =~ 5 + j >= 5 + aa => 123 + aa <<= 123 + aa >>= 123 + bbb => 123 + c => 1233123 + d => 123 + dddddd &&= 123 + dddddd ||= 123 + dddddd /= 123 + gg <=> ee + +Do (Alignment using mode_sequence, delimiter_align): + vip\\\cr*\\= + +Expect ruby: + a = + a = 1 + bbbb .= 2 + ccccccc = 3 + ccccccccccccccc + ddd = # + eeee === eee = eee = eee = f + fff = ggg += gg &&= gg + g != hhhhhhhh == # 8 + i := 5 + i %= 5 + i *= 5 + j =~ 5 + j >= 5 + aa => 123 + aa <<= 123 + aa >>= 123 + bbb => 123 + c => 1233123 + d => 123 + dddddd &&= 123 + dddddd ||= 123 + dddddd /= 123 + gg <=> ee + +Do (mode_sequence starting from 2nd, delimiter_align = center): + vip\\\rc**\\\2= + +Expect ruby: + a = + a = 1 + bbbb .= 2 + ccccccc = 3 + ccccccccccccccc + ddd = # + eeee === eee = eee = eee = f + fff = ggg += gg &&= gg + g != hhhhhhhh == # 8 + i := 5 + i %= 5 + i *= 5 + j =~ 5 + j >= 5 + aa => 123 + aa <<= 123 + aa >>= 123 + bbb => 123 + c => 1233123 + d => 123 + dddddd &&= 123 + dddddd ||= 123 + dddddd /= 123 + gg <=> ee + +Do (around all =s, do not ignore unmatched): + vip\\ + \0\ + \0\ + \\ + *= + +Expect ruby: + a = + a = 1 + bbbb .= 2 + ccccccc = 3 + ccccccccccccccc + ddd = # + eeee ===eee = eee = eee=f + fff = ggg +=gg &&=gg + g != hhhhhhhh==# 8 + i := 5 + i %= 5 + i *= 5 + j =~ 5 + j >= 5 + aa => 123 + aa <<=123 + aa >>=123 + bbb => 123 + c => 1233123 + d => 123 + dddddd &&=123 + dddddd ||=123 + dddddd /= 123 + gg <=>ee + +Do (1st =): + vip\\\2= + +Expect ruby: + a = + a = 1 + bbbb .= 2 + ccccccc = 3 + ccccccccccccccc + ddd = # + eeee === eee = eee = eee=f + fff = ggg += gg &&= gg + g != hhhhhhhh == # 8 + i := 5 + i %= 5 + i *= 5 + j =~ 5 + j >= 5 + aa => 123 + aa <<= 123 + aa >>= 123 + bbb => 123 + c => 1233123 + d => 123 + dddddd &&= 123 + dddddd ||= 123 + dddddd /= 123 + gg <=> ee + +########################################################### + +Given ruby (Trailing ruby line comment): + apple = 1 # comment not aligned + apricot = 'DAD' + 'F#AD' + banana = 'Gros Michel' ## comment 2 + +Do (around the last spaces): + vip\-\ + +Expect ruby: + apple = 1 # comment not aligned + apricot = 'DAD' + 'F#AD' + banana = 'Gros Michel' ## comment 2 + +Execute (define # rule): + let g:easy_align_delimiters = + \ { '#': { 'pattern': '#\+', 'ignores': ['String'], 'delimiter_align': 'l' } } + +Do (using # rule): + vip\\# + +Expect ruby: + apple = 1 # comment not aligned + apricot = 'DAD' + 'F#AD' + banana = 'Gros Michel' ## comment 2 + +Do (using regular expression): + vip\= + gv\ + \\\ + \ + \#\+\ + +Expect ruby: + apple = 1 # comment not aligned + apricot = 'DAD' + 'F#AD' + banana = 'Gros Michel' ## comment 2 + +########################################################### + +Given (method chain): + my_object + .method1.chain + .second_method.call + .third.call + .method_4.execute + +Do (around all .): + vip\*. + +Expect: + my_object + .method1 .chain + .second_method.call + .third .call + .method_4 .execute + +Do (around all . with deep indentation): + vip\\\*. + +Expect: + my_object + .method1 .chain + .second_method.call + .third .call + .method_4 .execute + +Do (right-align around all .): + vip\\*. + +Expect: + my_object + . method1. chain + .second_method. call + . third. call + . method_4.execute + +########################################################### + +Execute (define d rule): + let g:easy_align_delimiters.d = + \ { 'pattern': '\s\+\(\S\+\s*[;=]\)\@=', 'left_margin': 0, 'right_margin': 0 } + +Given c (complex var dec): + const char* str = "Hello"; + int64_t count = 1 + 2; + static double pi = 3.14; + static std::map* scores = pointer; + +Do (using d rule): + vip\d + gv\= + +Expect c: + const char* str = "Hello"; + int64_t count = 1 + 2; + static double pi = 3.14; + static std::map* scores = pointer; + +########################################################### + +Given (indented code): + apple = 1 + banana = 2 + cake = 3 + daisy = 4 + eggplant = 5 + +Do: + vip\= + +Expect: + apple = 1 + banana = 2 + cake = 3 + daisy = 4 + eggplant = 5 + +Do (shallow indentation): + vip\\= + +Expect: + apple = 1 + banana = 2 + cake = 3 + daisy = 4 + eggplant = 5 + +Do (deep indentation): + vip\\\= + +Expect: + apple = 1 + banana = 2 + cake = 3 + daisy = 4 + eggplant = 5 + +Do (no indentation): + vip\\\\= + +Expect: + apple = 1 + banana = 2 + cake = 3 + daisy = 4 + eggplant = 5 + +Do (right-align, shallow indentation): + vip\\\= + +Expect: + apple = 1 + banana = 2 + cake = 3 + daisy = 4 + eggplant = 5 + +Do (center-align, shallow indentation): + vip\\\\= + +Expect: + apple = 1 + banana = 2 + cake = 3 + daisy = 4 + eggplant = 5 + +Do (right-align, deep indentation): + vip\\\\= + +Expect: + apple = 1 + banana = 2 + cake = 3 + daisy = 4 + eggplant = 5 + +Do (center-align, deep indentation): + vip\\\\\= + +Expect: + apple = 1 + banana = 2 + cake = 3 + daisy = 4 + eggplant = 5 + +Do (right-align, no indentation): + vip\\\\\= + +########################################################### + +Expect: + apple = 1 + banana = 2 + cake = 3 + daisy = 4 + eggplant = 5 + +Given (Center-align cases): + aaaa = 123456778901234567890 = + cccccccccccccc = 12345678 = + + aaaa = 123456778901234567890 = + bbbbbb = 4 + cccccccccccccccccc = 12345678 = + + aaaa = 123456778901234567890 = + cccccccccccccccccc = 12345678 = + + aaaaa = 123456778901234567890 = + cc = 12345678 = + + aaaaa = 123456778901234567890 = + bbbbbbbbbb = 12345 = + + aaaaa = 123456778901234567890 = + cccccccccccccccccc = 123 = + + aaaaa = 123456778901234567890 = + cccccccccccccccccc = 12345678 = + + aaaaa = 12345 = + bbbbbbbbbb = 123456778901234567890 = + + aaaaa = 12345 + bbbbbbbbbb = 123456778901234567890 + +Do: + vip\\\= + }jvip\\\= + }jvip\\\= + }jvip\\\= + }jvip\\\2= + }jvip\\\2= + }jvip\\\2= + }jvip\\\2= + }jvip\\\2= + +Expect: + aaaa = 123456778901234567890 = + cccccccccccccc = 12345678 = + + aaaa = 123456778901234567890 = + bbbbbb = 4 + cccccccccccccccccc = 12345678 = + + aaaa = 123456778901234567890 = + cccccccccccccccccc = 12345678 = + + aaaaa = 123456778901234567890 = + cc = 12345678 = + + aaaaa = 123456778901234567890 = + bbbbbbbbbb = 12345 = + + aaaaa = 123456778901234567890 = + cccccccccccccccccc = 123 = + + aaaaa = 123456778901234567890 = + cccccccccccccccccc = 12345678 = + + aaaaa = 12345 = + bbbbbbbbbb = 123456778901234567890 = + + aaaaa = 12345 + bbbbbbbbbb = 123456778901234567890 +