annotate src/testdir/test95.in @ 4671:b3c59716e700 v7.3.1083

updated for version 7.3.1083 Problem: New regexp engine: Does not support \%^ and \%$. Solution: Support matching start and end of file.
author Bram Moolenaar <bram@vim.org>
date Fri, 31 May 2013 22:14:52 +0200
parents f10f63aaec5c
children 9982ec574beb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4476
3cc2dca142a0 updated for version 7.3.986
Bram Moolenaar <bram@vim.org>
parents: 4468
diff changeset
1 Test for regexp patterns with multi-byte support, using utf-8.
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
2 See test64 for the non-multi-byte tests.
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
3
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
4 A pattern that gives the expected result produces OK, so that we know it was
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
5 actually tried.
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
6
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
7 STARTTEST
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
8 :so small.vim
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
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
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
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
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
13 :" regexp pattern
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
14 :" text to test the pattern on
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
15 :" expected match (optional)
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
16 :" expected submatch 1 (optional)
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
17 :" expected submatch 2 (optional)
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
18 :" etc.
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
19 :" When there is no match use only the first two items.
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
20 :let tl = []
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
21
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
22 :"""" Multi-byte character tests. These will fail unless vim is compiled
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
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
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
29
4468
dde1cf311be6 updated for version 7.3.982
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
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'])
4468
dde1cf311be6 updated for version 7.3.982
Bram Moolenaar <bram@vim.org>
parents: 4444
diff changeset
32
4478
032c9f916f25 updated for version 7.3.987
Bram Moolenaar <bram@vim.org>
parents: 4476
diff changeset
33 :"""" Test recognition of some character classes
4545
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
34 :call add(tl, [2, '\i\+', '&*¨xx ', 'xx'])
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
35 :call add(tl, [2, '\f\+', '&*Ÿfname ', 'fname'])
4478
032c9f916f25 updated for version 7.3.987
Bram Moolenaar <bram@vim.org>
parents: 4476
diff changeset
36
4527
55bcaa1d2749 updated for version 7.3.1011
Bram Moolenaar <bram@vim.org>
parents: 4525
diff changeset
37 :"""" Test composing character matching
4545
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
38 :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
39 :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
40 :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
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\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
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"])
4547
fc997f05cbc7 updated for version 7.3.1021
Bram Moolenaar <bram@vim.org>
parents: 4545
diff changeset
44 :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
45 :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
46 :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
47 :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
48 :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
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, [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
51 :call add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"])
4535
45f97c349537 updated for version 7.3.1015
Bram Moolenaar <bram@vim.org>
parents: 4529
diff changeset
52
4527
55bcaa1d2749 updated for version 7.3.1011
Bram Moolenaar <bram@vim.org>
parents: 4525
diff changeset
53
4525
36ddcf4cecbc updated for version 7.3.1010
Bram Moolenaar <bram@vim.org>
parents: 4521
diff changeset
54 :"""" Test \Z
4545
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
55 :call add(tl, [2, 'ú\Z', 'x'])
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
56 :call add(tl, [2, 'יהוה\Z', 'יהוה', 'יהוה'])
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
57 :call add(tl, [2, 'יְהוָה\Z', 'יהוה', 'יהוה'])
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
58 :call add(tl, [2, 'יהוה\Z', 'יְהוָה', 'יְהוָה'])
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, "ק\u200d\u05b9x\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
62 :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
63 :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
64 :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
65 :call add(tl, [2, "\u05b9\\Z", "xyz"])
f0c37f5cf4ea updated for version 7.3.1023
Bram Moolenaar <bram@vim.org>
parents: 4547
diff changeset
66 :call add(tl, [2, "\\Z\u05b9", "xyz"])
f0c37f5cf4ea updated for version 7.3.1023
Bram Moolenaar <bram@vim.org>
parents: 4547
diff changeset
67 :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
68 :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
69 :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
70 :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
71
4478
032c9f916f25 updated for version 7.3.987
Bram Moolenaar <bram@vim.org>
parents: 4476
diff changeset
72 :"""" Combining different tests and features
4545
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
73 :call add(tl, [2, '[^[=a=]]\+', 'ddaãâbcd', 'dd'])
4478
032c9f916f25 updated for version 7.3.987
Bram Moolenaar <bram@vim.org>
parents: 4476
diff changeset
74
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
75 :"""" Run the tests
4545
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
76
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
77 :"
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
78 :for t in tl
4545
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
79 : let re = t[0]
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
80 : let pat = t[1]
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
81 : let text = t[2]
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
82 : let matchidx = 3
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
83 : for engine in [0, 1, 2]
4547
fc997f05cbc7 updated for version 7.3.1021
Bram Moolenaar <bram@vim.org>
parents: 4545
diff changeset
84 : 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
85 : continue
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
86 : endif
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
87 : let &regexpengine = engine
4651
f10f63aaec5c updated for version 7.3.1073
Bram Moolenaar <bram@vim.org>
parents: 4551
diff changeset
88 : try
f10f63aaec5c updated for version 7.3.1073
Bram Moolenaar <bram@vim.org>
parents: 4551
diff changeset
89 : let l = matchlist(text, pat)
f10f63aaec5c updated for version 7.3.1073
Bram Moolenaar <bram@vim.org>
parents: 4551
diff changeset
90 : catch
f10f63aaec5c updated for version 7.3.1073
Bram Moolenaar <bram@vim.org>
parents: 4551
diff changeset
91 : $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
92 : endtry
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
93 :" check the match itself
4545
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
94 : if len(l) == 0 && len(t) > matchidx
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
95 : $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
96 : elseif len(l) > 0 && len(t) == matchidx
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
97 : $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
98 : elseif len(t) > matchidx && l[0] != t[matchidx]
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
99 : $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
100 : else
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
101 : $put ='OK ' . engine . ' - ' . pat
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
102 : endif
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
103 : if len(l) > 0
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
104 :" check all the nine submatches
4545
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
105 : for i in range(1, 9)
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
106 : if len(t) <= matchidx + i
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
107 : let e = ''
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
108 : else
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
109 : let e = t[matchidx + i]
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
110 : endif
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
111 : if l[i] != e
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
112 : $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
113 : endif
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
114 : endfor
f7944ce459ac updated for version 7.3.1020
Bram Moolenaar <bram@vim.org>
parents: 4535
diff changeset
115 : unlet i
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
4444
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
118 :endfor
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
119 :unlet t tl e l
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
120
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
121 :/\%#=1^Results/,$wq! test.out
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
122 ENDTEST
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
123
ccecb03e5e8b updated for version 7.3.970
Bram Moolenaar <bram@vim.org>
parents:
diff changeset
124 Results of test95: