Mercurial > vim
annotate src/testdir/test95.in @ 5899:60cdaa05a6ad v7.4.292
updated for version 7.4.292
Problem: Searching for "a" does not match accented "a" with new regexp
engine, does match with old engine. (David B?rgin)
"ca" does not match "ca" with accented "a" with either engine.
Solution: Change the old engine, check for following composing character
also for single-byte patterns.
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Tue, 13 May 2014 18:04:00 +0200 |
parents | 9982ec574beb |
children | fdea5ea9afd1 |
rev | line source |
---|---|
4476 | 1 Test for regexp patterns with multi-byte support, using utf-8. |
4444 | 2 See test64 for the non-multi-byte tests. |
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 :so mbyte.vim | |
4525
36ddcf4cecbc
updated for version 7.3.1010
Bram Moolenaar <bram@vim.org>
parents:
4521
diff
changeset
|
10 :set nocp encoding=utf-8 viminfo+=nviminfo nomore |
4444 | 11 :" tl is a List of Lists with: |
4547
fc997f05cbc7
updated for version 7.3.1021
Bram Moolenaar <bram@vim.org>
parents:
4545
diff
changeset
|
12 :" 2: test auto/old/new 0: test auto/old 1: test auto/new |
4444 | 13 :" regexp pattern |
14 :" text to test the pattern on | |
15 :" expected match (optional) | |
16 :" expected submatch 1 (optional) | |
17 :" expected submatch 2 (optional) | |
18 :" etc. | |
19 :" When there is no match use only the first two items. | |
20 :let tl = [] | |
21 | |
22 :"""" Multi-byte character tests. These will fail unless vim is compiled | |
23 :"""" with Multibyte (FEAT_MBYTE) or BIG/HUGE features. | |
4545
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
24 :call add(tl, [2, '[[:alpha:][=a=]]\+', '879 aiaãâaiuvna ', 'aiaãâaiuvna']) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
25 :call add(tl, [2, '[[=a=]]\+', 'ddaãâbcd', 'aãâ']) " equivalence classes |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
26 :call add(tl, [2, '[^ม ]\+', 'มม oijasoifjos ifjoisj f osij j มมมมม abcd', 'oijasoifjos']) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
27 :call add(tl, [2, ' [^ ]\+', 'start มabcdม ', ' มabcdม']) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
28 :call add(tl, [2, '[ม[:alpha:][=a=]]\+', '879 aiaãมâมaiuvna ', 'aiaãมâมaiuvna']) |
4444 | 29 |
4468 | 30 :" this is not a normal "i" but 0xec |
4545
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
31 :call add(tl, [2, '\p\+', 'ìa', 'ìa']) |
5221
9982ec574beb
updated for version 7.4a.036
Bram Moolenaar <bram@vim.org>
parents:
4651
diff
changeset
|
32 :call add(tl, [2, '\p*', 'aあ', 'aあ']) |
4468 | 33 |
4478 | 34 :"""" Test recognition of some character classes |
4545
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
35 :call add(tl, [2, '\i\+', '&*¨xx ', 'xx']) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
36 :call add(tl, [2, '\f\+', '&*fname ', 'fname']) |
4478 | 37 |
4527
55bcaa1d2749
updated for version 7.3.1011
Bram Moolenaar <bram@vim.org>
parents:
4525
diff
changeset
|
38 :"""" Test composing character matching |
4545
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
39 :call add(tl, [2, '.ม', 'xม่x yมy', 'yม']) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
40 :call add(tl, [2, '.ม่', 'xม่x yมy', 'xม่']) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
41 :call add(tl, [2, "\u05b9", " x\u05b9 ", "x\u05b9"]) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
42 :call add(tl, [2, ".\u05b9", " x\u05b9 ", "x\u05b9"]) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
43 :call add(tl, [2, "\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"]) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
44 :call add(tl, [2, ".\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"]) |
4547
fc997f05cbc7
updated for version 7.3.1021
Bram Moolenaar <bram@vim.org>
parents:
4545
diff
changeset
|
45 :call add(tl, [2, "\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"]) |
fc997f05cbc7
updated for version 7.3.1021
Bram Moolenaar <bram@vim.org>
parents:
4545
diff
changeset
|
46 :call add(tl, [2, ".\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"]) |
4545
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
47 :call add(tl, [2, "\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"]) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
48 :call add(tl, [2, ".\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"]) |
4547
fc997f05cbc7
updated for version 7.3.1021
Bram Moolenaar <bram@vim.org>
parents:
4545
diff
changeset
|
49 :call add(tl, [2, "\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"]) |
fc997f05cbc7
updated for version 7.3.1021
Bram Moolenaar <bram@vim.org>
parents:
4545
diff
changeset
|
50 :call add(tl, [2, ".\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"]) |
fc997f05cbc7
updated for version 7.3.1021
Bram Moolenaar <bram@vim.org>
parents:
4545
diff
changeset
|
51 :call add(tl, [1, "\u05b9\u05bb", " y\u05b9 x\u05b9\u05bb ", "x\u05b9\u05bb"]) |
fc997f05cbc7
updated for version 7.3.1021
Bram Moolenaar <bram@vim.org>
parents:
4545
diff
changeset
|
52 :call add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"]) |
5899 | 53 :call add(tl, [2, "a", "ca\u0300t"]) |
54 :call add(tl, [2, "a\u0300", "ca\u0300t", "a\u0300"]) | |
4535
45f97c349537
updated for version 7.3.1015
Bram Moolenaar <bram@vim.org>
parents:
4529
diff
changeset
|
55 |
4527
55bcaa1d2749
updated for version 7.3.1011
Bram Moolenaar <bram@vim.org>
parents:
4525
diff
changeset
|
56 |
4525
36ddcf4cecbc
updated for version 7.3.1010
Bram Moolenaar <bram@vim.org>
parents:
4521
diff
changeset
|
57 :"""" Test \Z |
4545
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
58 :call add(tl, [2, 'ú\Z', 'x']) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
59 :call add(tl, [2, 'יהוה\Z', 'יהוה', 'יהוה']) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
60 :call add(tl, [2, 'יְהוָה\Z', 'יהוה', 'יהוה']) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
61 :call add(tl, [2, 'יהוה\Z', 'יְהוָה', 'יְהוָה']) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
62 :call add(tl, [2, 'יְהוָה\Z', 'יְהוָה', 'יְהוָה']) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
63 :call add(tl, [2, 'יְ\Z', 'וְיַ', 'יַ']) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
64 :call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"]) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
65 :call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200dxy", "ק\u200dx"]) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
66 :call add(tl, [2, "ק\u200dx\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"]) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
67 :call add(tl, [2, "ק\u200dx\\Z", "xק\u200dxy", "ק\u200dx"]) |
4551
f0c37f5cf4ea
updated for version 7.3.1023
Bram Moolenaar <bram@vim.org>
parents:
4547
diff
changeset
|
68 :call add(tl, [2, "\u05b9\\Z", "xyz"]) |
f0c37f5cf4ea
updated for version 7.3.1023
Bram Moolenaar <bram@vim.org>
parents:
4547
diff
changeset
|
69 :call add(tl, [2, "\\Z\u05b9", "xyz"]) |
f0c37f5cf4ea
updated for version 7.3.1023
Bram Moolenaar <bram@vim.org>
parents:
4547
diff
changeset
|
70 :call add(tl, [2, "\u05b9\\Z", "xy\u05b9z", "y\u05b9"]) |
f0c37f5cf4ea
updated for version 7.3.1023
Bram Moolenaar <bram@vim.org>
parents:
4547
diff
changeset
|
71 :call add(tl, [2, "\\Z\u05b9", "xy\u05b9z", "y\u05b9"]) |
f0c37f5cf4ea
updated for version 7.3.1023
Bram Moolenaar <bram@vim.org>
parents:
4547
diff
changeset
|
72 :call add(tl, [1, "\u05b9\\+\\Z", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"]) |
f0c37f5cf4ea
updated for version 7.3.1023
Bram Moolenaar <bram@vim.org>
parents:
4547
diff
changeset
|
73 :call add(tl, [1, "\\Z\u05b9\\+", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"]) |
4525
36ddcf4cecbc
updated for version 7.3.1010
Bram Moolenaar <bram@vim.org>
parents:
4521
diff
changeset
|
74 |
4478 | 75 :"""" Combining different tests and features |
4545
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
76 :call add(tl, [2, '[^[=a=]]\+', 'ddaãâbcd', 'dd']) |
4478 | 77 |
4444 | 78 :"""" Run the tests |
4545
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
79 |
4444 | 80 :" |
81 :for t in tl | |
4545
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
82 : let re = t[0] |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
83 : let pat = t[1] |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
84 : let text = t[2] |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
85 : let matchidx = 3 |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
86 : for engine in [0, 1, 2] |
4547
fc997f05cbc7
updated for version 7.3.1021
Bram Moolenaar <bram@vim.org>
parents:
4545
diff
changeset
|
87 : if engine == 2 && re == 0 || engine == 1 && re == 1 |
4545
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
88 : continue |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
89 : endif |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
90 : let ®expengine = engine |
4651
f10f63aaec5c
updated for version 7.3.1073
Bram Moolenaar <bram@vim.org>
parents:
4551
diff
changeset
|
91 : try |
f10f63aaec5c
updated for version 7.3.1073
Bram Moolenaar <bram@vim.org>
parents:
4551
diff
changeset
|
92 : let l = matchlist(text, pat) |
f10f63aaec5c
updated for version 7.3.1073
Bram Moolenaar <bram@vim.org>
parents:
4551
diff
changeset
|
93 : catch |
f10f63aaec5c
updated for version 7.3.1073
Bram Moolenaar <bram@vim.org>
parents:
4551
diff
changeset
|
94 : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", caused an exception: \"' . v:exception . '\"' |
f10f63aaec5c
updated for version 7.3.1073
Bram Moolenaar <bram@vim.org>
parents:
4551
diff
changeset
|
95 : endtry |
4444 | 96 :" check the match itself |
4545
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
97 : if len(l) == 0 && len(t) > matchidx |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
98 : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", did not match, expected: \"' . t[matchidx] . '\"' |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
99 : elseif len(l) > 0 && len(t) == matchidx |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
100 : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected no match' |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
101 : elseif len(t) > matchidx && l[0] != t[matchidx] |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
102 : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", match: \"' . l[0] . '\", expected: \"' . t[matchidx] . '\"' |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
103 : else |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
104 : $put ='OK ' . engine . ' - ' . pat |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
105 : endif |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
106 : if len(l) > 0 |
4444 | 107 :" check all the nine submatches |
4545
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
108 : for i in range(1, 9) |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
109 : if len(t) <= matchidx + i |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
110 : let e = '' |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
111 : else |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
112 : let e = t[matchidx + i] |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
113 : endif |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
114 : if l[i] != e |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
115 : $put ='ERROR: pat: \"' . pat . '\", text: \"' . text . '\", submatch ' . i . ': \"' . l[i] . '\", expected: \"' . e . '\"' |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
116 : endif |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
117 : endfor |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
118 : unlet i |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
119 : endif |
f7944ce459ac
updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents:
4535
diff
changeset
|
120 : endfor |
4444 | 121 :endfor |
122 :unlet t tl e l | |
123 | |
5221
9982ec574beb
updated for version 7.4a.036
Bram Moolenaar <bram@vim.org>
parents:
4651
diff
changeset
|
124 :" check that 'ambiwidth' does not change the meaning of \p |
9982ec574beb
updated for version 7.4a.036
Bram Moolenaar <bram@vim.org>
parents:
4651
diff
changeset
|
125 :set regexpengine=1 ambiwidth=single |
9982ec574beb
updated for version 7.4a.036
Bram Moolenaar <bram@vim.org>
parents:
4651
diff
changeset
|
126 :$put ='eng 1 ambi single: ' . match(\"\u00EC\", '\p') |
9982ec574beb
updated for version 7.4a.036
Bram Moolenaar <bram@vim.org>
parents:
4651
diff
changeset
|
127 :set regexpengine=1 ambiwidth=double |
9982ec574beb
updated for version 7.4a.036
Bram Moolenaar <bram@vim.org>
parents:
4651
diff
changeset
|
128 :$put ='eng 1 ambi double: ' . match(\"\u00EC\", '\p') |
9982ec574beb
updated for version 7.4a.036
Bram Moolenaar <bram@vim.org>
parents:
4651
diff
changeset
|
129 :set regexpengine=2 ambiwidth=single |
9982ec574beb
updated for version 7.4a.036
Bram Moolenaar <bram@vim.org>
parents:
4651
diff
changeset
|
130 :$put ='eng 2 ambi single: ' . match(\"\u00EC\", '\p') |
9982ec574beb
updated for version 7.4a.036
Bram Moolenaar <bram@vim.org>
parents:
4651
diff
changeset
|
131 :set regexpengine=2 ambiwidth=double |
9982ec574beb
updated for version 7.4a.036
Bram Moolenaar <bram@vim.org>
parents:
4651
diff
changeset
|
132 :$put ='eng 2 ambi double: ' . match(\"\u00EC\", '\p') |
9982ec574beb
updated for version 7.4a.036
Bram Moolenaar <bram@vim.org>
parents:
4651
diff
changeset
|
133 |
4444 | 134 :/\%#=1^Results/,$wq! test.out |
135 ENDTEST | |
136 | |
137 Results of test95: |