Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 1 | Test for regexp patterns without multi-byte support. |
| 2 | See test95 for multi-byte tests. |
Bram Moolenaar | 4d2fffc | 2007-08-14 15:29:16 +0000 | [diff] [blame] | 3 | |
| 4 | A pattern that gives the expected result produces OK, so that we know it was |
| 5 | actually tried. |
| 6 | |
| 7 | STARTTEST |
| 8 | :so small.vim |
| 9 | :" tl is a List of Lists with: |
Bram Moolenaar | ef795d1 | 2015-01-18 16:46:32 +0100 | [diff] [blame] | 10 | :" regexp engine |
Bram Moolenaar | 4d2fffc | 2007-08-14 15:29:16 +0000 | [diff] [blame] | 11 | :" regexp pattern |
| 12 | :" text to test the pattern on |
| 13 | :" expected match (optional) |
| 14 | :" expected submatch 1 (optional) |
| 15 | :" expected submatch 2 (optional) |
| 16 | :" etc. |
| 17 | :" When there is no match use only the first two items. |
| 18 | :let tl = [] |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 19 | :" |
Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 20 | :"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
| 21 | :"""" Previously written tests """""""""""""""""""""""""""""""" |
| 22 | :"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 23 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 24 | :call add(tl, [2, 'ab', 'aab', 'ab']) |
| 25 | :call add(tl, [2, 'b', 'abcdef', 'b']) |
| 26 | :call add(tl, [2, 'bc*', 'abccccdef', 'bcccc']) |
Bram Moolenaar | 36b3a01 | 2013-06-01 12:40:20 +0200 | [diff] [blame] | 27 | :call add(tl, [2, 'bc\{-}', 'abccccdef', 'b']) |
| 28 | :call add(tl, [2, 'bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 29 | :call add(tl, [2, 'bc*', 'abbdef', 'b']) |
| 30 | :call add(tl, [2, 'c*', 'ccc', 'ccc']) |
| 31 | :call add(tl, [2, 'bc*', 'abdef', 'b']) |
| 32 | :call add(tl, [2, 'c*', 'abdef', '']) |
| 33 | :call add(tl, [2, 'bc\+', 'abccccdef', 'bcccc']) |
| 34 | :call add(tl, [2, 'bc\+', 'abdef']) "no match |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 35 | :" |
| 36 | :"operator \| |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 37 | :call add(tl, [2, 'a\|ab', 'cabd', 'a']) "alternation is ordered |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 38 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 39 | :call add(tl, [2, 'c\?', 'ccb', 'c']) |
| 40 | :call add(tl, [2, 'bc\?', 'abd', 'b']) |
| 41 | :call add(tl, [2, 'bc\?', 'abccd', 'bc']) |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 42 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 43 | :call add(tl, [2, '\va{1}', 'ab', 'a']) |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 44 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 45 | :call add(tl, [2, '\va{2}', 'aa', 'aa']) |
| 46 | :call add(tl, [2, '\va{2}', 'caad', 'aa']) |
| 47 | :call add(tl, [2, '\va{2}', 'aba']) |
| 48 | :call add(tl, [2, '\va{2}', 'ab']) |
| 49 | :call add(tl, [2, '\va{2}', 'abaa', 'aa']) |
| 50 | :call add(tl, [2, '\va{2}', 'aaa', 'aa']) |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 51 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 52 | :call add(tl, [2, '\vb{1}', 'abca', 'b']) |
| 53 | :call add(tl, [2, '\vba{2}', 'abaa', 'baa']) |
| 54 | :call add(tl, [2, '\vba{3}', 'aabaac']) |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 55 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 56 | :call add(tl, [2, '\v(ab){1}', 'ab', 'ab', 'ab']) |
| 57 | :call add(tl, [2, '\v(ab){1}', 'dabc', 'ab', 'ab']) |
| 58 | :call add(tl, [2, '\v(ab){1}', 'acb']) |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 59 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 60 | :call add(tl, [2, '\v(ab){0,2}', 'acb', "", ""]) |
| 61 | :call add(tl, [2, '\v(ab){0,2}', 'ab', 'ab', 'ab']) |
| 62 | :call add(tl, [2, '\v(ab){1,2}', 'ab', 'ab', 'ab']) |
| 63 | :call add(tl, [2, '\v(ab){1,2}', 'ababc', 'abab', 'ab']) |
| 64 | :call add(tl, [2, '\v(ab){2,4}', 'ababcab', 'abab', 'ab']) |
| 65 | :call add(tl, [2, '\v(ab){2,4}', 'abcababa', 'abab', 'ab']) |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 66 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 67 | :call add(tl, [2, '\v(ab){2}', 'abab', 'abab', 'ab']) |
| 68 | :call add(tl, [2, '\v(ab){2}', 'cdababe', 'abab', 'ab']) |
| 69 | :call add(tl, [2, '\v(ab){2}', 'abac']) |
| 70 | :call add(tl, [2, '\v(ab){2}', 'abacabab', 'abab', 'ab']) |
| 71 | :call add(tl, [2, '\v((ab){2}){2}', 'abababab', 'abababab', 'abab', 'ab']) |
| 72 | :call add(tl, [2, '\v((ab){2}){2}', 'abacabababab', 'abababab', 'abab', 'ab']) |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 73 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 74 | :call add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a']) |
| 75 | :call add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa']) |
| 76 | :call add(tl, [2, '\v(a{2}){1}', 'aaac', 'aa', 'aa']) |
| 77 | :call add(tl, [2, '\v(a{2}){1}', 'daaac', 'aa', 'aa']) |
| 78 | :call add(tl, [2, '\v(a{1}){2}', 'daaac', 'aa', 'a']) |
| 79 | :call add(tl, [2, '\v(a{1}){2}', 'aaa', 'aa', 'a']) |
| 80 | :call add(tl, [2, '\v(a{2})+', 'adaac', 'aa', 'aa']) |
| 81 | :call add(tl, [2, '\v(a{2})+', 'aa', 'aa', 'aa']) |
| 82 | :call add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa']) |
| 83 | :call add(tl, [2, '\v(a{1}){2}', 'aa', 'aa', 'a']) |
| 84 | :call add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a']) |
| 85 | :call add(tl, [2, '\v(a{2}){2}', 'aaaa', 'aaaa', 'aa']) |
| 86 | :call add(tl, [2, '\v(a{2}){2}', 'aaabaaaa', 'aaaa', 'aa']) |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 87 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 88 | :call add(tl, [2, '\v(a+){2}', 'dadaac', 'aa', 'a']) |
| 89 | :call add(tl, [2, '\v(a{3}){2}', 'aaaaaaa', 'aaaaaa', 'aaa']) |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 90 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 91 | :call add(tl, [2, '\v(a{1,2}){2}', 'daaac', 'aaa', 'a']) |
| 92 | :call add(tl, [2, '\v(a{1,3}){2}', 'daaaac', 'aaaa', 'a']) |
| 93 | :call add(tl, [2, '\v(a{1,3}){2}', 'daaaaac', 'aaaaa', 'aa']) |
| 94 | :call add(tl, [2, '\v(a{1,3}){3}', 'daac']) |
| 95 | :call add(tl, [2, '\v(a{1,2}){2}', 'dac']) |
| 96 | :call add(tl, [2, '\v(a+)+', 'daac', 'aa', 'aa']) |
| 97 | :call add(tl, [2, '\v(a+)+', 'aaa', 'aaa', 'aaa']) |
| 98 | :call add(tl, [2, '\v(a+){1,2}', 'aaa', 'aaa', 'aaa']) |
| 99 | :call add(tl, [2, '\v(a+)(a+)', 'aaa', 'aaa', 'aa', 'a']) |
| 100 | :call add(tl, [2, '\v(a{3})+', 'daaaac', 'aaa', 'aaa']) |
| 101 | :call add(tl, [2, '\v(a|b|c)+', 'aacb', 'aacb', 'b']) |
| 102 | :call add(tl, [2, '\v(a|b|c){2}', 'abcb', 'ab', 'b']) |
| 103 | :call add(tl, [2, '\v(abc){2}', 'abcabd', ]) |
| 104 | :call add(tl, [2, '\v(abc){2}', 'abdabcabc','abcabc', 'abc']) |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 105 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 106 | :call add(tl, [2, 'a*', 'cc', '']) |
| 107 | :call add(tl, [2, '\v(a*)+', 'cc', '']) |
| 108 | :call add(tl, [2, '\v((ab)+)+', 'ab', 'ab', 'ab', 'ab']) |
| 109 | :call add(tl, [2, '\v(((ab)+)+)+', 'ab', 'ab', 'ab', 'ab', 'ab']) |
| 110 | :call add(tl, [2, '\v(((ab)+)+)+', 'dababc', 'abab', 'abab', 'abab', 'ab']) |
| 111 | :call add(tl, [2, '\v(a{0,2})+', 'cc', '']) |
| 112 | :call add(tl, [2, '\v(a*)+', '', '']) |
| 113 | :call add(tl, [2, '\v((a*)+)+', '', '']) |
| 114 | :call add(tl, [2, '\v((ab)*)+', '', '']) |
| 115 | :call add(tl, [2, '\va{1,3}', 'aab', 'aa']) |
| 116 | :call add(tl, [2, '\va{2,3}', 'abaa', 'aa']) |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 117 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 118 | :call add(tl, [2, '\v((ab)+|c*)+', 'abcccaba', 'abcccab', '', 'ab']) |
| 119 | :call add(tl, [2, '\v(a{2})|(b{3})', 'bbabbbb', 'bbb', '', 'bbb']) |
| 120 | :call add(tl, [2, '\va{2}|b{2}', 'abab']) |
| 121 | :call add(tl, [2, '\v(a)+|(c)+', 'bbacbaacbbb', 'a', 'a']) |
| 122 | :call add(tl, [2, '\vab{2,3}c', 'aabbccccccccccccc', 'abbc']) |
| 123 | :call add(tl, [2, '\vab{2,3}c', 'aabbbccccccccccccc', 'abbbc']) |
| 124 | :call add(tl, [2, '\vab{2,3}cd{2,3}e', 'aabbbcddee', 'abbbcdde']) |
| 125 | :call add(tl, [2, '\va(bc){2}d', 'aabcbfbc' ]) |
| 126 | :call add(tl, [2, '\va*a{2}', 'a', ]) |
| 127 | :call add(tl, [2, '\va*a{2}', 'aa', 'aa' ]) |
| 128 | :call add(tl, [2, '\va*a{2}', 'aaa', 'aaa' ]) |
| 129 | :call add(tl, [2, '\va*a{2}', 'bbbabcc', ]) |
| 130 | :call add(tl, [2, '\va*b*|a*c*', 'a', 'a']) |
| 131 | :call add(tl, [2, '\va{1}b{1}|a{1}b{1}', '']) |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 132 | :" |
| 133 | :"submatches |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 134 | :call add(tl, [2, '\v(a)', 'ab', 'a', 'a']) |
| 135 | :call add(tl, [2, '\v(a)(b)', 'ab', 'ab', 'a', 'b']) |
| 136 | :call add(tl, [2, '\v(ab)(b)(c)', 'abbc', 'abbc', 'ab', 'b', 'c']) |
| 137 | :call add(tl, [2, '\v((a)(b))', 'ab', 'ab', 'ab', 'a', 'b']) |
| 138 | :call add(tl, [2, '\v(a)|(b)', 'ab', 'a', 'a']) |
Bram Moolenaar | 3d66014 | 2008-01-01 16:37:52 +0000 | [diff] [blame] | 139 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 140 | :call add(tl, [2, '\v(a*)+', 'aaaa', 'aaaa', '']) |
| 141 | :call add(tl, [2, 'x', 'abcdef']) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 142 | :" |
Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 143 | :"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
| 144 | :""""" Simple tests """"""""""""""""""""""""""""""""""""""""""" |
| 145 | :"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 146 | :" |
Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 147 | :" Search single groups |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 148 | :call add(tl, [2, 'ab', 'aab', 'ab']) |
| 149 | :call add(tl, [2, 'ab', 'baced']) |
| 150 | :call add(tl, [2, 'ab', ' ab ', 'ab']) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 151 | :" |
Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 152 | :" Search multi-modifiers |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 153 | :call add(tl, [2, 'x*', 'xcd', 'x']) |
| 154 | :call add(tl, [2, 'x*', 'xxxxxxxxxxxxxxxxsofijiojgf', 'xxxxxxxxxxxxxxxx']) |
Bram Moolenaar | e0fea9c | 2013-05-27 20:10:50 +0200 | [diff] [blame] | 155 | :" empty match is good |
| 156 | :call add(tl, [2, 'x*', 'abcdoij', '']) |
| 157 | :" no match here |
| 158 | :call add(tl, [2, 'x\+', 'abcdoin']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 159 | :call add(tl, [2, 'x\+', 'abcdeoijdfxxiuhfij', 'xx']) |
| 160 | :call add(tl, [2, 'x\+', 'xxxxx', 'xxxxx']) |
| 161 | :call add(tl, [2, 'x\+', 'abc x siufhiush xxxxxxxxx', 'x']) |
| 162 | :call add(tl, [2, 'x\=', 'x sdfoij', 'x']) |
| 163 | :call add(tl, [2, 'x\=', 'abc sfoij', '']) " empty match is good |
| 164 | :call add(tl, [2, 'x\=', 'xxxxxxxxx c', 'x']) |
| 165 | :call add(tl, [2, 'x\?', 'x sdfoij', 'x']) |
Bram Moolenaar | e0fea9c | 2013-05-27 20:10:50 +0200 | [diff] [blame] | 166 | :" empty match is good |
| 167 | :call add(tl, [2, 'x\?', 'abc sfoij', '']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 168 | :call add(tl, [2, 'x\?', 'xxxxxxxxxx c', 'x']) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 169 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 170 | :call add(tl, [2, 'a\{0,0}', 'abcdfdoij', '']) |
Bram Moolenaar | e0fea9c | 2013-05-27 20:10:50 +0200 | [diff] [blame] | 171 | :" same thing as 'a?' |
| 172 | :call add(tl, [2, 'a\{0,1}', 'asiubid axxxaaa', 'a']) |
| 173 | :" same thing as 'a\{0,1}' |
| 174 | :call add(tl, [2, 'a\{1,0}', 'asiubid axxxaaa', 'a']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 175 | :call add(tl, [2, 'a\{3,6}', 'aa siofuh']) |
| 176 | :call add(tl, [2, 'a\{3,6}', 'aaaaa asfoij afaa', 'aaaaa']) |
| 177 | :call add(tl, [2, 'a\{3,6}', 'aaaaaaaa', 'aaaaaa']) |
| 178 | :call add(tl, [2, 'a\{0}', 'asoiuj', '']) |
| 179 | :call add(tl, [2, 'a\{2}', 'aaaa', 'aa']) |
| 180 | :call add(tl, [2, 'a\{2}', 'iuash fiusahfliusah fiushfilushfi uhsaifuh askfj nasfvius afg aaaa sfiuhuhiushf', 'aa']) |
| 181 | :call add(tl, [2, 'a\{2}', 'abcdefghijklmnopqrestuvwxyz1234567890']) |
Bram Moolenaar | e0fea9c | 2013-05-27 20:10:50 +0200 | [diff] [blame] | 182 | :" same thing as 'a*' |
| 183 | :call add(tl, [2, 'a\{0,}', 'oij sdigfusnf', '']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 184 | :call add(tl, [2, 'a\{0,}', 'aaaaa aa', 'aaaaa']) |
| 185 | :call add(tl, [2, 'a\{2,}', 'sdfiougjdsafg']) |
Bram Moolenaar | 54dafde | 2013-05-31 23:18:00 +0200 | [diff] [blame] | 186 | :call add(tl, [2, 'a\{2,}', 'aaaaasfoij ', 'aaaaa']) |
| 187 | :call add(tl, [2, 'a\{5,}', 'xxaaaaxxx ']) |
| 188 | :call add(tl, [2, 'a\{5,}', 'xxaaaaaxxx ', 'aaaaa']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 189 | :call add(tl, [2, 'a\{,0}', 'oidfguih iuhi hiu aaaa', '']) |
| 190 | :call add(tl, [2, 'a\{,5}', 'abcd', 'a']) |
| 191 | :call add(tl, [2, 'a\{,5}', 'aaaaaaaaaa', 'aaaaa']) |
Bram Moolenaar | 3737fc1 | 2013-06-01 14:42:56 +0200 | [diff] [blame] | 192 | :" leading star as normal char when \{} follows |
| 193 | :call add(tl, [2, '^*\{4,}$', '***']) |
| 194 | :call add(tl, [2, '^*\{4,}$', '****', '****']) |
| 195 | :call add(tl, [2, '^*\{4,}$', '*****', '*****']) |
Bram Moolenaar | e0fea9c | 2013-05-27 20:10:50 +0200 | [diff] [blame] | 196 | :" same thing as 'a*' |
| 197 | :call add(tl, [2, 'a\{}', 'bbbcddiuhfcd', '']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 198 | :call add(tl, [2, 'a\{}', 'aaaaioudfh coisf jda', 'aaaa']) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 199 | :" |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 200 | :call add(tl, [2, 'a\{-0,0}', 'abcdfdoij', '']) |
Bram Moolenaar | e0fea9c | 2013-05-27 20:10:50 +0200 | [diff] [blame] | 201 | :" anti-greedy version of 'a?' |
| 202 | :call add(tl, [2, 'a\{-0,1}', 'asiubid axxxaaa', '']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 203 | :call add(tl, [2, 'a\{-3,6}', 'aa siofuh']) |
| 204 | :call add(tl, [2, 'a\{-3,6}', 'aaaaa asfoij afaa', 'aaa']) |
| 205 | :call add(tl, [2, 'a\{-3,6}', 'aaaaaaaa', 'aaa']) |
| 206 | :call add(tl, [2, 'a\{-0}', 'asoiuj', '']) |
| 207 | :call add(tl, [2, 'a\{-2}', 'aaaa', 'aa']) |
| 208 | :call add(tl, [2, 'a\{-2}', 'abcdefghijklmnopqrestuvwxyz1234567890']) |
Bram Moolenaar | 36b3a01 | 2013-06-01 12:40:20 +0200 | [diff] [blame] | 209 | :call add(tl, [2, 'a\{-0,}', 'oij sdigfusnf', '']) |
| 210 | :call add(tl, [2, 'a\{-0,}', 'aaaaa aa', '']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 211 | :call add(tl, [2, 'a\{-2,}', 'sdfiougjdsafg']) |
Bram Moolenaar | 36b3a01 | 2013-06-01 12:40:20 +0200 | [diff] [blame] | 212 | :call add(tl, [2, 'a\{-2,}', 'aaaaasfoij ', 'aa']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 213 | :call add(tl, [2, 'a\{-,0}', 'oidfguih iuhi hiu aaaa', '']) |
| 214 | :call add(tl, [2, 'a\{-,5}', 'abcd', '']) |
| 215 | :call add(tl, [2, 'a\{-,5}', 'aaaaaaaaaa', '']) |
Bram Moolenaar | e0fea9c | 2013-05-27 20:10:50 +0200 | [diff] [blame] | 216 | :" anti-greedy version of 'a*' |
Bram Moolenaar | 36b3a01 | 2013-06-01 12:40:20 +0200 | [diff] [blame] | 217 | :call add(tl, [2, 'a\{-}', 'bbbcddiuhfcd', '']) |
| 218 | :call add(tl, [2, 'a\{-}', 'aaaaioudfh coisf jda', '']) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 219 | :" |
Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 220 | :" Test groups of characters and submatches |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 221 | :call add(tl, [2, '\(abc\)*', 'abcabcabc', 'abcabcabc', 'abc']) |
| 222 | :call add(tl, [2, '\(ab\)\+', 'abababaaaaa', 'ababab', 'ab']) |
| 223 | :call add(tl, [2, '\(abaaaaa\)*cd', 'cd', 'cd', '']) |
| 224 | :call add(tl, [2, '\(test1\)\? \(test2\)\?', 'test1 test3', 'test1 ', 'test1', '']) |
| 225 | :call add(tl, [2, '\(test1\)\= \(test2\) \(test4443\)\=', ' test2 test4443 yupiiiiiiiiiii', ' test2 test4443', '', 'test2', 'test4443']) |
| 226 | :call add(tl, [2, '\(\(sub1\) hello \(sub 2\)\)', 'asterix sub1 hello sub 2 obelix', 'sub1 hello sub 2', 'sub1 hello sub 2', 'sub1', 'sub 2']) |
| 227 | :call add(tl, [2, '\(\(\(yyxxzz\)\)\)', 'abcdddsfiusfyyzzxxyyxxzz', 'yyxxzz', 'yyxxzz', 'yyxxzz', 'yyxxzz']) |
| 228 | :call add(tl, [2, '\v((ab)+|c+)+', 'abcccaba', 'abcccab', 'ab', 'ab']) |
| 229 | :call add(tl, [2, '\v((ab)|c*)+', 'abcccaba', 'abcccab', '', 'ab']) |
| 230 | :call add(tl, [2, '\v(a(c*)+b)+', 'acbababaaa', 'acbabab', 'ab', '']) |
| 231 | :call add(tl, [2, '\v(a|b*)+', 'aaaa', 'aaaa', '']) |
Bram Moolenaar | ac7c33e | 2013-07-21 17:06:00 +0200 | [diff] [blame] | 232 | :call add(tl, [2, '\p*', 'aá ', 'aá ']) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 233 | :" |
Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 234 | :" Test greedy-ness and lazy-ness |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 235 | :call add(tl, [2, 'a\{-2,7}','aaaaaaaaaaaaa', 'aa']) |
Bram Moolenaar | 54dafde | 2013-05-31 23:18:00 +0200 | [diff] [blame] | 236 | :call add(tl, [2, 'a\{-2,7}x','aaaaaaaaax', 'aaaaaaax']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 237 | :call add(tl, [2, 'a\{2,7}','aaaaaaaaaaaaaaaaaaaa', 'aaaaaaa']) |
Bram Moolenaar | 54dafde | 2013-05-31 23:18:00 +0200 | [diff] [blame] | 238 | :call add(tl, [2, 'a\{2,7}x','aaaaaaaaax', 'aaaaaaax']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 239 | :call add(tl, [2, '\vx(.{-,8})yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz','ayxa','xayzxayz']) |
| 240 | :call add(tl, [2, '\vx(.*)yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz', 'ayxayzxayzxa','']) |
| 241 | :call add(tl, [2, '\v(a{1,2}){-2,3}','aaaaaaa','aaaa','aa']) |
Bram Moolenaar | 9c23506 | 2014-05-13 16:44:29 +0200 | [diff] [blame] | 242 | :call add(tl, [2, '\v(a{-1,3})+', 'aa', 'aa', 'a']) |
| 243 | :call add(tl, [2, '^\s\{-}\zs\( x\|x$\)', ' x', ' x', ' x']) |
| 244 | :call add(tl, [2, '^\s\{-}\zs\(x\| x$\)', ' x', ' x', ' x']) |
| 245 | :call add(tl, [2, '^\s\{-}\ze\(x\| x$\)', ' x', '', ' x']) |
| 246 | :call add(tl, [2, '^\(\s\{-}\)\(x\| x$\)', ' x', ' x', '', ' x']) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 247 | :" |
Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 248 | :" Test Character classes |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 249 | :call add(tl, [2, '\d\+e\d\d','test 10e23 fd','10e23']) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 250 | :" |
Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 251 | :" Test collections and character range [] |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 252 | :call add(tl, [2, '\v[a]', 'abcd', 'a']) |
| 253 | :call add(tl, [2, 'a[bcd]', 'abcd', 'ab']) |
| 254 | :call add(tl, [2, 'a[b-d]', 'acbd', 'ac']) |
| 255 | :call add(tl, [2, '[a-d][e-f][x-x]d', 'cexdxx', 'cexd']) |
| 256 | :call add(tl, [2, '\v[[:alpha:]]+', 'abcdefghijklmnopqrstuvwxyz6','abcdefghijklmnopqrstuvwxyz']) |
| 257 | :call add(tl, [2, '[[:alpha:]\+]', '6x8','x']) |
| 258 | :call add(tl, [2, '[^abc]\+','abcabcabc']) |
| 259 | :call add(tl, [2, '[^abc]','defghiasijvoinasoiunbvb','d']) |
| 260 | :call add(tl, [2, '[^abc]\+','ddddddda','ddddddd']) |
| 261 | :call add(tl, [2, '[^a-d]\+','aaaAAAZIHFNCddd','AAAZIHFNC']) |
| 262 | :call add(tl, [2, '[a-f]*','iiiiiiii','']) |
| 263 | :call add(tl, [2, '[a-f]*','abcdefgh','abcdef']) |
| 264 | :call add(tl, [2, '[^a-f]\+','abcdefgh','gh']) |
| 265 | :call add(tl, [2, '[a-c]\{-3,6}','abcabc','abc']) |
| 266 | :call add(tl, [2, '[^[:alpha:]]\+','abcccadfoij7787ysf287yrnccdu','7787']) |
| 267 | :call add(tl, [2, '[-a]', '-', '-']) |
| 268 | :call add(tl, [2, '[a-]', '-', '-']) |
Bram Moolenaar | 473de61 | 2013-06-08 18:19:48 +0200 | [diff] [blame] | 269 | :call add(tl, [2, '[a-f]*\c','ABCDEFGH','ABCDEF']) |
| 270 | :call add(tl, [2, '[abc][xyz]\c','-af-AF-BY--','BY']) |
Bram Moolenaar | e0fea9c | 2013-05-27 20:10:50 +0200 | [diff] [blame] | 271 | :" filename regexp |
| 272 | :call add(tl, [2, '[-./[:alnum:]_~]\+', 'log13.file', 'log13.file']) |
| 273 | :" special chars |
| 274 | :call add(tl, [2, '[\]\^\-\\]\+', '\^\\\-\---^', '\^\\\-\---^']) |
| 275 | :" collation elem |
| 276 | :call add(tl, [2, '[[.a.]]\+', 'aa', 'aa']) |
| 277 | :" middle of regexp |
| 278 | :call add(tl, [2, 'abc[0-9]*ddd', 'siuhabc ii']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 279 | :call add(tl, [2, 'abc[0-9]*ddd', 'adf abc44482ddd oijs', 'abc44482ddd']) |
| 280 | :call add(tl, [2, '\_[0-9]\+', 'asfi9888u', '9888']) |
| 281 | :call add(tl, [2, '[0-9\n]\+', 'asfi9888u', '9888']) |
Bram Moolenaar | 61db8b5 | 2013-05-26 17:45:49 +0200 | [diff] [blame] | 282 | :call add(tl, [2, '\_[0-9]\+', "asfi\n9888u", "\n9888"]) |
| 283 | :call add(tl, [2, '\_f', " \na ", "\n"]) |
| 284 | :call add(tl, [2, '\_f\+', " \na ", "\na"]) |
Bram Moolenaar | 75d7a06 | 2013-06-01 13:24:24 +0200 | [diff] [blame] | 285 | :call add(tl, [2, '[0-9A-Za-z-_.]\+', " @0_a.A-{ ", "0_a.A-"]) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 286 | :" |
Bram Moolenaar | 4b78063 | 2013-05-31 22:14:52 +0200 | [diff] [blame] | 287 | :"""" Test start/end of line, start/end of file |
| 288 | :call add(tl, [2, '^a.', "a_\nb ", "a_"]) |
| 289 | :call add(tl, [2, '^a.', "b a \na_"]) |
| 290 | :call add(tl, [2, '.a$', " a\n "]) |
| 291 | :call add(tl, [2, '.a$', " a b\n_a", "_a"]) |
| 292 | :call add(tl, [2, '\%^a.', "a a\na", "a "]) |
| 293 | :call add(tl, [2, '\%^a', " a \na "]) |
| 294 | :call add(tl, [2, '.a\%$', " a\n "]) |
| 295 | :call add(tl, [2, '.a\%$', " a\n_a", "_a"]) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 296 | :" |
Bram Moolenaar | 1cfad52 | 2013-08-14 12:06:49 +0200 | [diff] [blame] | 297 | :"""" Test recognition of character classes |
| 298 | :call add(tl, [2, '[0-7]\+', 'x0123456789x', '01234567']) |
| 299 | :call add(tl, [2, '[^0-7]\+', '0a;X+% 897', 'a;X+% 89']) |
| 300 | :call add(tl, [2, '[0-9]\+', 'x0123456789x', '0123456789']) |
| 301 | :call add(tl, [2, '[^0-9]\+', '0a;X+% 9', 'a;X+% ']) |
| 302 | :call add(tl, [2, '[0-9a-fA-F]\+', 'x0189abcdefg', '0189abcdef']) |
| 303 | :call add(tl, [2, '[^0-9A-Fa-f]\+', '0189g;X+% ab', 'g;X+% ']) |
| 304 | :call add(tl, [2, '[a-z_A-Z0-9]\+', ';+aso_SfOij ', 'aso_SfOij']) |
| 305 | :call add(tl, [2, '[^a-z_A-Z0-9]\+', 'aSo_;+% sfOij', ';+% ']) |
| 306 | :call add(tl, [2, '[a-z_A-Z]\+', '0abyz_ABYZ;', 'abyz_ABYZ']) |
| 307 | :call add(tl, [2, '[^a-z_A-Z]\+', 'abAB_09;+% yzYZ', '09;+% ']) |
| 308 | :call add(tl, [2, '[a-z]\+', '0abcxyz1', 'abcxyz']) |
| 309 | :call add(tl, [2, '[a-z]\+', 'AabxyzZ', 'abxyz']) |
| 310 | :call add(tl, [2, '[^a-z]\+', 'a;X09+% x', ';X09+% ']) |
| 311 | :call add(tl, [2, '[^a-z]\+', 'abX0;%yz', 'X0;%']) |
| 312 | :call add(tl, [2, '[a-zA-Z]\+', '0abABxzXZ9', 'abABxzXZ']) |
| 313 | :call add(tl, [2, '[^a-zA-Z]\+', 'ab09_;+ XZ', '09_;+ ']) |
| 314 | :call add(tl, [2, '[A-Z]\+', 'aABXYZz', 'ABXYZ']) |
| 315 | :call add(tl, [2, '[^A-Z]\+', 'ABx0;%YZ', 'x0;%']) |
| 316 | :call add(tl, [2, '[a-z]\+\c', '0abxyzABXYZ;', 'abxyzABXYZ']) |
| 317 | :call add(tl, [2, '[A-Z]\+\c', '0abABxzXZ9', 'abABxzXZ']) |
| 318 | :call add(tl, [2, '\c[^a-z]\+', 'ab09_;+ XZ', '09_;+ ']) |
| 319 | :call add(tl, [2, '\c[^A-Z]\+', 'ab09_;+ XZ', '09_;+ ']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 320 | :call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa']) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 321 | :" |
Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 322 | :"""" Tests for \z features |
Bram Moolenaar | e0fea9c | 2013-05-27 20:10:50 +0200 | [diff] [blame] | 323 | :" match ends at \ze |
| 324 | :call add(tl, [2, 'xx \ze test', 'xx ']) |
| 325 | :call add(tl, [2, 'abc\zeend', 'oij abcend', 'abc']) |
| 326 | :call add(tl, [2, 'aa\zebb\|aaxx', ' aabb ', 'aa']) |
| 327 | :call add(tl, [2, 'aa\zebb\|aaxx', ' aaxx ', 'aaxx']) |
| 328 | :call add(tl, [2, 'aabb\|aa\zebb', ' aabb ', 'aabb']) |
| 329 | :call add(tl, [2, 'aa\zebb\|aaebb', ' aabb ', 'aa']) |
| 330 | :" match starts at \zs |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 331 | :call add(tl, [2, 'abc\zsdd', 'ddabcddxyzt', 'dd']) |
Bram Moolenaar | e0fea9c | 2013-05-27 20:10:50 +0200 | [diff] [blame] | 332 | :call add(tl, [2, 'aa \zsax', ' ax']) |
| 333 | :call add(tl, [2, 'abc \zsmatch\ze abc', 'abc abc abc match abc abc', 'match']) |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 334 | :call add(tl, [2, '\v(a \zsif .*){2}', 'a if then a if last', 'if last', 'a if last']) |
| 335 | :call add(tl, [2, '\>\zs.', 'aword. ', '.']) |
Bram Moolenaar | 9be4481 | 2013-09-05 21:15:44 +0200 | [diff] [blame] | 336 | :call add(tl, [2, '\s\+\ze\[/\|\s\zs\s\+', 'is [a t', ' ']) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 337 | :" |
Bram Moolenaar | 2d5e112 | 2013-05-30 21:42:13 +0200 | [diff] [blame] | 338 | :"""" Tests for \@= and \& features |
| 339 | :call add(tl, [2, 'abc\@=', 'abc', 'ab']) |
| 340 | :call add(tl, [2, 'abc\@=cd', 'abcd', 'abcd']) |
| 341 | :call add(tl, [2, 'abc\@=', 'ababc', 'ab']) |
Bram Moolenaar | e0fea9c | 2013-05-27 20:10:50 +0200 | [diff] [blame] | 342 | :" will never match, no matter the input text |
| 343 | :call add(tl, [2, 'abcd\@=e', 'abcd']) |
| 344 | :" will never match |
| 345 | :call add(tl, [2, 'abcd\@=e', 'any text in here ... ']) |
Bram Moolenaar | 2d5e112 | 2013-05-30 21:42:13 +0200 | [diff] [blame] | 346 | :call add(tl, [2, '\v(abc)@=..', 'xabcd', 'ab', 'abc']) |
Bram Moolenaar | e0fea9c | 2013-05-27 20:10:50 +0200 | [diff] [blame] | 347 | :call add(tl, [2, '\(.*John\)\@=.*Bob', 'here is John, and here is B']) |
Bram Moolenaar | 2d5e112 | 2013-05-30 21:42:13 +0200 | [diff] [blame] | 348 | :call add(tl, [2, '\(John.*\)\@=.*Bob', 'John is Bobs friend', 'John is Bob', 'John is Bobs friend']) |
Bram Moolenaar | 14f55c6 | 2013-05-31 21:45:09 +0200 | [diff] [blame] | 349 | :call add(tl, [2, '\<\S\+\())\)\@=', '$((i=i+1))', 'i=i+1', '))']) |
Bram Moolenaar | e0fea9c | 2013-05-27 20:10:50 +0200 | [diff] [blame] | 350 | :call add(tl, [2, '.*John\&.*Bob', 'here is John, and here is B']) |
Bram Moolenaar | 2d5e112 | 2013-05-30 21:42:13 +0200 | [diff] [blame] | 351 | :call add(tl, [2, '.*John\&.*Bob', 'John is Bobs friend', 'John is Bob']) |
| 352 | :call add(tl, [2, '\v(test1)@=.*yep', 'this is a test1, yep it is', 'test1, yep', 'test1']) |
Bram Moolenaar | b06e20e | 2013-05-30 22:44:02 +0200 | [diff] [blame] | 353 | :call add(tl, [2, 'foo\(bar\)\@!', 'foobar']) |
| 354 | :call add(tl, [2, 'foo\(bar\)\@!', 'foo bar', 'foo']) |
| 355 | :call add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if then else']) |
| 356 | :call add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if else ', 'if else ', ' ']) |
| 357 | :call add(tl, [2, '\(foo\)\@!bar', 'foobar', 'bar']) |
| 358 | :call add(tl, [2, '\(foo\)\@!...bar', 'foobar']) |
| 359 | :call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' bar foo ']) |
| 360 | :call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo bar ']) |
| 361 | :call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo xxx ', 'foo']) |
Bram Moolenaar | a016912 | 2013-06-26 18:16:58 +0200 | [diff] [blame] | 362 | :call add(tl, [2, '[ ]\@!\p\%([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:']) |
Bram Moolenaar | 398d53d | 2013-08-01 15:45:52 +0200 | [diff] [blame] | 363 | :call add(tl, [2, '[ ]\@!\p\([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:', 's']) |
Bram Moolenaar | e53c861 | 2013-07-17 22:35:39 +0200 | [diff] [blame] | 364 | :call add(tl, [2, 'm\k\+_\@=\%(_\@!\k\)\@<=\k\+e', 'mx__xe', 'mx__xe']) |
Bram Moolenaar | 196ed14 | 2013-07-21 18:59:24 +0200 | [diff] [blame] | 365 | :call add(tl, [2, '\%(\U\@<=S\k*\|S\l\)R', 'SuR', 'SuR']) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 366 | :" |
Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 367 | :"""" Combining different tests and features |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 368 | :call add(tl, [2, '[[:alpha:]]\{-2,6}', '787abcdiuhsasiuhb4', 'ab']) |
| 369 | :call add(tl, [2, '', 'abcd', '']) |
| 370 | :call add(tl, [2, '\v(())', 'any possible text', '']) |
| 371 | :call add(tl, [2, '\v%(ab(xyz)c)', ' abxyzc ', 'abxyzc', 'xyz']) |
| 372 | :call add(tl, [2, '\v(test|)empty', 'tesempty', 'empty', '']) |
| 373 | :call add(tl, [2, '\v(a|aa)(a|aa)', 'aaa', 'aa', 'a', 'a']) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 374 | :" |
Bram Moolenaar | d2470e9 | 2013-05-21 13:30:21 +0200 | [diff] [blame] | 375 | :"""" \%u and friends |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 376 | :call add(tl, [2, '\%d32', 'yes no', ' ']) |
| 377 | :call add(tl, [2, '\%o40', 'yes no', ' ']) |
| 378 | :call add(tl, [2, '\%x20', 'yes no', ' ']) |
| 379 | :call add(tl, [2, '\%u0020', 'yes no', ' ']) |
| 380 | :call add(tl, [2, '\%U00000020', 'yes no', ' ']) |
Bram Moolenaar | 595cad2 | 2013-09-22 13:57:24 +0200 | [diff] [blame] | 381 | :call add(tl, [2, '\%d0', "yes\x0ano", "\x0a"]) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 382 | :" |
Bram Moolenaar | d75799ab7 | 2013-06-05 11:05:17 +0200 | [diff] [blame] | 383 | :""""" \%[abc] |
| 384 | :call add(tl, [2, 'foo\%[bar]', 'fobar']) |
| 385 | :call add(tl, [2, 'foo\%[bar]', 'foobar', 'foobar']) |
| 386 | :call add(tl, [2, 'foo\%[bar]', 'fooxx', 'foo']) |
| 387 | :call add(tl, [2, 'foo\%[bar]', 'foobxx', 'foob']) |
| 388 | :call add(tl, [2, 'foo\%[bar]', 'foobaxx', 'fooba']) |
| 389 | :call add(tl, [2, 'foo\%[bar]', 'foobarxx', 'foobar']) |
| 390 | :call add(tl, [2, 'foo\%[bar]x', 'foobxx', 'foobx']) |
| 391 | :call add(tl, [2, 'foo\%[bar]x', 'foobarxx', 'foobarx']) |
| 392 | :call add(tl, [2, '\%[bar]x', 'barxx', 'barx']) |
| 393 | :call add(tl, [2, '\%[bar]x', 'bxx', 'bx']) |
| 394 | :call add(tl, [2, '\%[bar]x', 'xxx', 'x']) |
Bram Moolenaar | d798625 | 2013-06-17 21:33:41 +0200 | [diff] [blame] | 395 | :call add(tl, [2, 'b\%[[ao]r]', 'bar bor', 'bar']) |
Bram Moolenaar | a0c85c7 | 2013-06-17 22:04:38 +0200 | [diff] [blame] | 396 | :call add(tl, [2, 'b\%[[]]r]', 'b]r bor', 'b]r']) |
Bram Moolenaar | eec3e1e | 2013-08-01 18:38:26 +0200 | [diff] [blame] | 397 | :call add(tl, [2, '@\%[\w\-]*', '<http://john.net/pandoc/>[@pandoc]', '@pandoc']) |
Bram Moolenaar | d75799ab7 | 2013-06-05 11:05:17 +0200 | [diff] [blame] | 398 | :" |
Bram Moolenaar | 4b41706 | 2013-05-25 20:19:50 +0200 | [diff] [blame] | 399 | :"""" Alternatives, must use first longest match |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 400 | :call add(tl, [2, 'goo\|go', 'google', 'goo']) |
| 401 | :call add(tl, [2, '\<goo\|\<go', 'google', 'goo']) |
| 402 | :call add(tl, [2, '\<goo\|go', 'google', 'goo']) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 403 | :" |
Bram Moolenaar | 5714b80 | 2013-05-28 22:03:20 +0200 | [diff] [blame] | 404 | :"""" Back references |
| 405 | :call add(tl, [2, '\(\i\+\) \1', ' abc abc', 'abc abc', 'abc']) |
Bram Moolenaar | 428e987 | 2013-05-30 17:05:39 +0200 | [diff] [blame] | 406 | :call add(tl, [2, '\(\i\+\) \1', 'xgoo goox', 'goo goo', 'goo']) |
Bram Moolenaar | 5714b80 | 2013-05-28 22:03:20 +0200 | [diff] [blame] | 407 | :call add(tl, [2, '\(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9', 'xabcddefghiabcddefghix', 'abcddefghiabcddefghi', 'a', 'b', 'c', 'dd', 'e', 'f', 'g', 'h', 'i']) |
Bram Moolenaar | b122e97 | 2013-06-02 16:07:10 +0200 | [diff] [blame] | 408 | :call add(tl, [2, '\(\d*\)a \1b', ' a b ', 'a b', '']) |
Bram Moolenaar | 141f6bb | 2013-06-15 15:09:50 +0200 | [diff] [blame] | 409 | :call add(tl, [2, '^.\(.\).\_..\1.', "aaa\naaa\nb", "aaa\naaa", 'a']) |
Bram Moolenaar | f86c0b0 | 2013-06-26 12:42:44 +0200 | [diff] [blame] | 410 | :call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.com', 'foo.bat/foo.com', 'bat']) |
| 411 | :call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.bat']) |
| 412 | :call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<=$', 'foo.bat/foo.bat', 'foo.bat/foo.bat', 'bat', 'bat']) |
Bram Moolenaar | 560c52d | 2013-06-29 12:10:26 +0200 | [diff] [blame] | 413 | :call add(tl, [2, '\\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}', '2013-06-27${0}', '${0}', '0']) |
Bram Moolenaar | 272fb58 | 2013-11-21 16:03:40 +0100 | [diff] [blame] | 414 | :call add(tl, [2, '^\(a*\)\1$', 'aaaaaaaa', 'aaaaaaaa', 'aaaa']) |
Bram Moolenaar | ee48253 | 2014-05-13 15:56:51 +0200 | [diff] [blame] | 415 | :call add(tl, [2, '^\(a\{-2,}\)\1\+$', 'aaaaaaaaa', 'aaaaaaaaa', 'aaa']) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 416 | :" |
Bram Moolenaar | 75eb161 | 2013-05-29 18:45:11 +0200 | [diff] [blame] | 417 | :"""" Look-behind with limit |
Bram Moolenaar | 61602c5 | 2013-06-01 19:54:43 +0200 | [diff] [blame] | 418 | :call add(tl, [2, '<\@<=span.', 'xxspanxx<spanyyy', 'spany']) |
| 419 | :call add(tl, [2, '<\@1<=span.', 'xxspanxx<spanyyy', 'spany']) |
| 420 | :call add(tl, [2, '<\@2<=span.', 'xxspanxx<spanyyy', 'spany']) |
| 421 | :call add(tl, [2, '\(<<\)\@<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<<']) |
| 422 | :call add(tl, [2, '\(<<\)\@1<=span.', 'xxspanxxxx<spanxx<<spanyyy']) |
| 423 | :call add(tl, [2, '\(<<\)\@2<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<<']) |
| 424 | :call add(tl, [2, '\(foo\)\@<!bar.', 'xx foobar1 xbar2 xx', 'bar2']) |
Bram Moolenaar | 75eb161 | 2013-05-29 18:45:11 +0200 | [diff] [blame] | 425 | :" |
Bram Moolenaar | 473de61 | 2013-06-08 18:19:48 +0200 | [diff] [blame] | 426 | :" look-behind match in front of a zero-width item |
| 427 | :call add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" test header']) |
| 428 | :call add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" Last Changed: 1970', '1970']) |
| 429 | :call add(tl, [2, '\(foo\)\@<=\>', 'foobar']) |
| 430 | :call add(tl, [2, '\(foo\)\@<=\>', 'barfoo', '', 'foo']) |
Bram Moolenaar | bcf4d17 | 2013-06-10 16:35:18 +0200 | [diff] [blame] | 431 | :call add(tl, [2, '\(foo\)\@<=.*', 'foobar', 'bar', 'foo']) |
Bram Moolenaar | 473de61 | 2013-06-08 18:19:48 +0200 | [diff] [blame] | 432 | :" |
Bram Moolenaar | 3f0df06 | 2013-08-14 13:34:25 +0200 | [diff] [blame] | 433 | :" complicated look-behind match |
| 434 | :call add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/']) |
Bram Moolenaar | f211884 | 2013-09-25 18:16:38 +0200 | [diff] [blame] | 435 | :call add(tl, [2, '^[a-z]\+\ze \&\(asdf\)\@<!', 'foo bar', 'foo']) |
Bram Moolenaar | 3f0df06 | 2013-08-14 13:34:25 +0200 | [diff] [blame] | 436 | :" |
Bram Moolenaar | 8795374 | 2013-06-05 18:52:40 +0200 | [diff] [blame] | 437 | :""""" \@> |
| 438 | :call add(tl, [2, '\(a*\)\@>a', 'aaaa']) |
| 439 | :call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa']) |
Bram Moolenaar | 78c93e4 | 2013-09-05 16:05:36 +0200 | [diff] [blame] | 440 | :call add(tl, [2, '^\(.\{-}b\)\@>.', ' abcbd', ' abc', ' ab']) |
Bram Moolenaar | 699c120 | 2013-09-25 16:41:54 +0200 | [diff] [blame] | 441 | :call add(tl, [2, '\(.\{-}\)\(\)\@>$', 'abc', 'abc', 'abc', '']) |
Bram Moolenaar | 8795374 | 2013-06-05 18:52:40 +0200 | [diff] [blame] | 442 | :" TODO: BT engine does not restore submatch after failure |
| 443 | :call add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa']) |
| 444 | :" |
Bram Moolenaar | bad704f | 2013-05-30 11:51:08 +0200 | [diff] [blame] | 445 | :"""" "\_" prepended negated collection matches EOL |
| 446 | :call add(tl, [2, '\_[^8-9]\+', "asfi\n9888", "asfi\n"]) |
| 447 | :call add(tl, [2, '\_[^a]\+', "asfi\n9888", "sfi\n9888"]) |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 448 | :" |
Bram Moolenaar | 16299b5 | 2013-05-30 18:45:23 +0200 | [diff] [blame] | 449 | :"""" Requiring lots of states. |
Bram Moolenaar | 54dafde | 2013-05-31 23:18:00 +0200 | [diff] [blame] | 450 | :call add(tl, [2, '[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}', " 12345678-1234-1234-1234-123456789012 ", "12345678-1234-1234-1234-123456789012", "1234-"]) |
Bram Moolenaar | 16299b5 | 2013-05-30 18:45:23 +0200 | [diff] [blame] | 451 | :" |
Bram Moolenaar | a50d02d | 2013-06-16 15:43:50 +0200 | [diff] [blame] | 452 | :"""" Skip adding state twice |
| 453 | :call add(tl, [2, '^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=', "#if FOO", "#if", ' FOO']) |
Bram Moolenaar | 4d2fffc | 2007-08-14 15:29:16 +0000 | [diff] [blame] | 454 | :" |
Bram Moolenaar | ef795d1 | 2015-01-18 16:46:32 +0100 | [diff] [blame] | 455 | :""" Test \%V atom |
| 456 | :call add(tl, [2, '\%>70vGesamt', 'Jean-Michel Charlier & Victor Hubinon\Gesamtausgabe [Salleck] Buck Danny {Jean-Michel Charlier & Victor Hubinon}\Gesamtausgabe', 'Gesamt']) |
| 457 | :" |
Bram Moolenaar | bad704f | 2013-05-30 11:51:08 +0200 | [diff] [blame] | 458 | :"""" Run the tests |
| 459 | :" |
Bram Moolenaar | 4d2fffc | 2007-08-14 15:29:16 +0000 | [diff] [blame] | 460 | :for t in tl |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 461 | : let re = t[0] |
| 462 | : let pat = t[1] |
| 463 | : let text = t[2] |
| 464 | : let matchidx = 3 |
| 465 | : for engine in [0, 1, 2] |
Bram Moolenaar | 2d46e60 | 2014-08-29 11:56:32 +0200 | [diff] [blame] | 466 | : if engine == 2 && re == 0 || engine == 1 && re == 1 |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 467 | : continue |
| 468 | : endif |
| 469 | : let ®expengine = engine |
Bram Moolenaar | 16299b5 | 2013-05-30 18:45:23 +0200 | [diff] [blame] | 470 | : try |
| 471 | : let l = matchlist(text, pat) |
| 472 | : catch |
Bram Moolenaar | 9c23506 | 2014-05-13 16:44:29 +0200 | [diff] [blame] | 473 | : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: \"' . v:exception . '\"' |
Bram Moolenaar | 16299b5 | 2013-05-30 18:45:23 +0200 | [diff] [blame] | 474 | : endtry |
Bram Moolenaar | 4d2fffc | 2007-08-14 15:29:16 +0000 | [diff] [blame] | 475 | :" check the match itself |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 476 | : if len(l) == 0 && len(t) > matchidx |
Bram Moolenaar | 9c23506 | 2014-05-13 16:44:29 +0200 | [diff] [blame] | 477 | : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", did not match, expected: \"' . t[matchidx] . '\"' |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 478 | : elseif len(l) > 0 && len(t) == matchidx |
Bram Moolenaar | 9c23506 | 2014-05-13 16:44:29 +0200 | [diff] [blame] | 479 | : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected no match' |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 480 | : elseif len(t) > matchidx && l[0] != t[matchidx] |
Bram Moolenaar | 9c23506 | 2014-05-13 16:44:29 +0200 | [diff] [blame] | 481 | : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"' |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 482 | : else |
| 483 | : $put ='OK ' . engine . ' - ' . pat |
| 484 | : endif |
| 485 | : if len(l) > 0 |
Bram Moolenaar | 4d2fffc | 2007-08-14 15:29:16 +0000 | [diff] [blame] | 486 | :" check all the nine submatches |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 487 | : for i in range(1, 9) |
| 488 | : if len(t) <= matchidx + i |
| 489 | : let e = '' |
| 490 | : else |
| 491 | : let e = t[matchidx + i] |
| 492 | : endif |
| 493 | : if l[i] != e |
Bram Moolenaar | 9c23506 | 2014-05-13 16:44:29 +0200 | [diff] [blame] | 494 | : $put ='ERROR ' . engine . ': pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"' |
Bram Moolenaar | fdb6dc1 | 2013-05-25 23:15:27 +0200 | [diff] [blame] | 495 | : endif |
| 496 | : endfor |
| 497 | : unlet i |
| 498 | : endif |
| 499 | : endfor |
Bram Moolenaar | 4d2fffc | 2007-08-14 15:29:16 +0000 | [diff] [blame] | 500 | :endfor |
Bram Moolenaar | 9d2c8c1 | 2007-09-25 16:00:00 +0000 | [diff] [blame] | 501 | :unlet t tl e l |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 502 | :" |
Bram Moolenaar | 560c52d | 2013-06-29 12:10:26 +0200 | [diff] [blame] | 503 | :"""""" multi-line tests """""""""""""""""""" |
Bram Moolenaar | 141f6bb | 2013-06-15 15:09:50 +0200 | [diff] [blame] | 504 | :let tl = [] |
| 505 | :" |
| 506 | :"""" back references |
| 507 | :call add(tl, [2, '^.\(.\).\_..\1.', ['aaa', 'aaa', 'b'], ['XX', 'b']]) |
| 508 | :call add(tl, [2, '\v.*\/(.*)\n.*\/\1$', ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/Dir2/abcdefgh.bat', '', './Dir1/Dir2/file1.txt', './OtherDir1/OtherDir2/file1.txt'], ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/Dir2/abcdefgh.bat', '', 'XX']]) |
| 509 | :" |
| 510 | :"""" line breaks |
| 511 | :call add(tl, [2, '\S.*\nx', ['abc', 'def', 'ghi', 'xjk', 'lmn'], ['abc', 'def', 'XXjk', 'lmn']]) |
| 512 | :" |
Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 513 | :" Check that \_[0-9] matching EOL does not break a following \> |
Bram Moolenaar | 141f6bb | 2013-06-15 15:09:50 +0200 | [diff] [blame] | 514 | :call add(tl, [2, '\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>', ['', 'localnet/192.168.0.1', ''], ['', 'localnet/XX', '']]) |
| 515 | :" |
| 516 | :" Check a pattern with a line break and ^ and $ |
| 517 | :call add(tl, [2, 'a\n^b$\n^c', ['a', 'b', 'c'], ['XX']]) |
| 518 | :" |
Bram Moolenaar | 438ee5b | 2013-11-21 17:13:00 +0100 | [diff] [blame] | 519 | :call add(tl, [2, '\(^.\+\n\)\1', [' dog', ' dog', 'asdf'], ['XXasdf']]) |
| 520 | :" |
Bram Moolenaar | 141f6bb | 2013-06-15 15:09:50 +0200 | [diff] [blame] | 521 | :"""" Run the multi-line tests |
| 522 | :" |
| 523 | :$put ='multi-line tests' |
| 524 | :for t in tl |
| 525 | : let re = t[0] |
| 526 | : let pat = t[1] |
| 527 | : let before = t[2] |
| 528 | : let after = t[3] |
| 529 | : for engine in [0, 1, 2] |
| 530 | : if engine == 2 && re == 0 || engine == 1 && re ==1 |
| 531 | : continue |
| 532 | : endif |
| 533 | : let ®expengine = engine |
| 534 | : new |
| 535 | : call setline(1, before) |
| 536 | : exe '%s/' . pat . '/XX/' |
| 537 | : let result = getline(1, '$') |
| 538 | : q! |
| 539 | : if result != after |
| 540 | : $put ='ERROR: pat: \"' . pat . '\", text: \"' . string(before) . '\", expected: \"' . string(after) . '\", got: \"' . string(result) . '\"' |
| 541 | : else |
| 542 | : $put ='OK ' . engine . ' - ' . pat |
| 543 | : endif |
| 544 | : endfor |
| 545 | :endfor |
| 546 | :unlet t tl |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 547 | :" |
| 548 | :" Check that using a pattern on two lines doesn't get messed up by using |
| 549 | :" matchstr() with \ze in between. |
| 550 | :set re=0 |
| 551 | /^Substitute here |
| 552 | :.+1,.+2s/""/\='"'.matchstr(getline("."), '\d\+\ze<').'"' |
| 553 | /^Substitute here |
| 554 | :.+1,.+2yank |
| 555 | Gop:" |
| 556 | :" |
Bram Moolenaar | 75eb161 | 2013-05-29 18:45:11 +0200 | [diff] [blame] | 557 | :" Check a pattern with a look beind crossing a line boundary |
| 558 | /^Behind: |
| 559 | /\(<\_[xy]\+\)\@3<=start |
| 560 | :.yank |
| 561 | Gop:" |
| 562 | :" |
Bram Moolenaar | dacd7de | 2013-06-04 18:28:48 +0200 | [diff] [blame] | 563 | :" Check matching Visual area |
| 564 | /^Visual: |
| 565 | jfxvfx:s/\%Ve/E/g |
| 566 | jV:s/\%Va/A/g |
| 567 | jfxfxj:s/\%Vo/O/g |
| 568 | :/^Visual/+1,/^Visual/+4yank |
| 569 | Gop:" |
| 570 | :" |
Bram Moolenaar | 044aa29 | 2013-06-04 21:27:38 +0200 | [diff] [blame] | 571 | :" Check matching marks |
| 572 | /^Marks: |
| 573 | jfSmsfEme:.-4,.+6s/.\%>'s.*\%<'e../here/ |
| 574 | jfSmsj0fEme:.-4,.+6s/.\%>'s\_.*\%<'e../again/ |
| 575 | :/^Marks:/+1,/^Marks:/+3yank |
| 576 | Gop:" |
| 577 | :" |
Bram Moolenaar | 423532e | 2013-05-29 21:14:42 +0200 | [diff] [blame] | 578 | :" Check patterns matching cursor position. |
| 579 | :func! Postest() |
| 580 | new |
Bram Moolenaar | 6747fab | 2016-06-28 22:39:16 +0200 | [diff] [blame] | 581 | call setline(1, ['ffooooo', 'boboooo', 'zoooooo', 'koooooo', 'moooooo', "\t\t\tfoo", 'abababababababfoo', 'bababababababafoo', '********_', ' xxxxxxxxxxxx xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxx xxx xxx xxxxxxxx xxxxxxx xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx']) |
Bram Moolenaar | 423532e | 2013-05-29 21:14:42 +0200 | [diff] [blame] | 582 | call setpos('.', [0, 1, 0, 0]) |
| 583 | s/\%>3c.//g |
| 584 | call setpos('.', [0, 2, 4, 0]) |
| 585 | s/\%#.*$//g |
| 586 | call setpos('.', [0, 3, 0, 0]) |
| 587 | s/\%<3c./_/g |
| 588 | %s/\%4l\%>5c./_/g |
| 589 | %s/\%6l\%>25v./_/g |
| 590 | %s/\%>6l\%3c./!/g |
| 591 | %s/\%>7l\%12c./?/g |
| 592 | %s/\%>7l\%<9l\%>5v\%<8v./#/g |
Bram Moolenaar | 6747fab | 2016-06-28 22:39:16 +0200 | [diff] [blame] | 593 | $s/\%(|\u.*\)\@<=[^|\t]\+$//ge |
Bram Moolenaar | 423532e | 2013-05-29 21:14:42 +0200 | [diff] [blame] | 594 | 1,$yank |
| 595 | quit! |
| 596 | endfunc |
| 597 | Go-0-:set re=0 |
| 598 | :call Postest() |
| 599 | :put |
| 600 | o-1-:set re=1 |
| 601 | :call Postest() |
| 602 | :put |
| 603 | o-2-:set re=2 |
| 604 | :call Postest() |
| 605 | :put |
| 606 | :" |
Bram Moolenaar | 4b78063 | 2013-05-31 22:14:52 +0200 | [diff] [blame] | 607 | :" start and end of buffer |
| 608 | /\%^ |
| 609 | yeGop:" |
| 610 | 50%/\%^.. |
| 611 | yeGopA END:" |
| 612 | 50%/\%$ |
| 613 | "ayb20gg/..\%$ |
| 614 | "bybGo"apo"bp:" |
| 615 | :" |
Bram Moolenaar | 2d46e60 | 2014-08-29 11:56:32 +0200 | [diff] [blame] | 616 | :" Check for detecting error |
| 617 | :set regexpengine=2 |
| 618 | :for pat in [' \ze*', ' \zs*'] |
| 619 | : try |
| 620 | : let l = matchlist('x x', pat) |
| 621 | : $put ='E888 NOT detected for ' . pat |
| 622 | : catch |
| 623 | : $put ='E888 detected for ' . pat |
| 624 | : endtry |
| 625 | :endfor |
| 626 | :" |
Bram Moolenaar | 560c52d | 2013-06-29 12:10:26 +0200 | [diff] [blame] | 627 | :""""" Write the results """"""""""""" |
Bram Moolenaar | fbc0d2e | 2013-05-19 19:40:29 +0200 | [diff] [blame] | 628 | :/\%#=1^Results/,$wq! test.out |
Bram Moolenaar | 4d2fffc | 2007-08-14 15:29:16 +0000 | [diff] [blame] | 629 | ENDTEST |
| 630 | |
Bram Moolenaar | 57a285b | 2013-05-26 16:57:28 +0200 | [diff] [blame] | 631 | Substitute here: |
| 632 | <T="">Ta 5</Title> |
| 633 | <T="">Ac 7</Title> |
| 634 | |
Bram Moolenaar | 75eb161 | 2013-05-29 18:45:11 +0200 | [diff] [blame] | 635 | Behind: |
| 636 | asdfasd<yyy |
| 637 | xxstart1 |
| 638 | asdfasd<yy |
Bram Moolenaar | 61602c5 | 2013-06-01 19:54:43 +0200 | [diff] [blame] | 639 | xxxstart2 |
Bram Moolenaar | 75eb161 | 2013-05-29 18:45:11 +0200 | [diff] [blame] | 640 | asdfasd<yy |
Bram Moolenaar | 61602c5 | 2013-06-01 19:54:43 +0200 | [diff] [blame] | 641 | xxstart3 |
Bram Moolenaar | 75eb161 | 2013-05-29 18:45:11 +0200 | [diff] [blame] | 642 | |
Bram Moolenaar | dacd7de | 2013-06-04 18:28:48 +0200 | [diff] [blame] | 643 | Visual: |
| 644 | thexe the thexethe |
| 645 | andaxand andaxand |
| 646 | oooxofor foroxooo |
| 647 | oooxofor foroxooo |
| 648 | |
Bram Moolenaar | 044aa29 | 2013-06-04 21:27:38 +0200 | [diff] [blame] | 649 | Marks: |
| 650 | asdfSasdfsadfEasdf |
| 651 | asdfSas |
| 652 | dfsadfEasdf |
| 653 | |
Bram Moolenaar | 4d2fffc | 2007-08-14 15:29:16 +0000 | [diff] [blame] | 654 | Results of test64: |