annotate src/testdir/test_regexp_utf8.vim @ 26356:0884f2be6c2a v8.2.3709

patch 8.2.3709: Vim9: backtick expression expanded when not desired Commit: https://github.com/vim/vim/commit/fad2742d538123abb9b384a053fd581f2acf6bb0 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Nov 30 21:58:19 2021 +0000 patch 8.2.3709: Vim9: backtick expression expanded when not desired Problem: Vim9: backtick expression expanded when not desired. Solution: Only expand a backtick expression for commands that expand their argument. Remove a few outdated TODO comments.
author Bram Moolenaar <Bram@vim.org>
date Tue, 30 Nov 2021 23:00:04 +0100
parents 1c999a6e9d92
children fb4c30606b4a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8825
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
1 " Tests for regexp in utf8 encoding
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
2
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
3 func s:equivalence_test()
24351
585695c70392 patch 8.2.2716: the equivalent class regexp is missing some characters
Bram Moolenaar <Bram@vim.org>
parents: 23471
diff changeset
4 let str = "AÀÁÂÃÄÅĀĂĄǍǞǠǺȂȦȺḀẠẢẤẦẨẪẬẮẰẲẴẶ BƁɃḂḄḆ CÇĆĈĊČƇȻḈꞒ DĎĐƊḊḌḎḐḒ EÈÉÊËĒĔĖĘĚȄȆȨɆḔḖḘḚḜẸẺẼẾỀỂỄỆ FƑḞꞘ GĜĞĠĢƓǤǦǴḠꞠ HĤĦȞḢḤḦḨḪⱧ IÌÍÎÏĨĪĬĮİƗǏȈȊḬḮỈỊ JĴɈ KĶƘǨḰḲḴⱩꝀ LĹĻĽĿŁȽḶḸḺḼⱠ MḾṀṂ NÑŃŅŇǸṄṆṈṊꞤ OÒÓÔÕÖØŌŎŐƟƠǑǪǬǾȌȎȪȬȮȰṌṎṐṒỌỎỐỒỔỖỘỚỜỞỠỢ PƤṔṖⱣ QɊ RŔŖŘȐȒɌṘṚṜṞⱤꞦ SŚŜŞŠȘṠṢṤṦṨⱾꞨ TŢŤŦƬƮȚȾṪṬṮṰ UÙÚÛÜŨŪŬŮŰƯǕǙǛǓǗȔȖɄṲṴṶṸṺỤỦỨỪỬỮỰ VƲṼṾ WŴẀẂẄẆẈ XẊẌ YÝŶŸƳȲɎẎỲỴỶỸ ZŹŻŽƵẐẒẔⱫ aàáâãäåāăąǎǟǡǻȃȧᶏḁẚạảấầẩẫậắằẳẵặⱥ bƀɓᵬᶀḃḅḇ cçćĉċčƈȼḉꞓꞔ dďđɗᵭᶁᶑḋḍḏḑḓ eèéêëēĕėęěȅȇȩɇᶒḕḗḙḛḝẹẻẽếềểễệ fƒᵮᶂḟꞙ gĝğġģǥǧǵɠᶃḡꞡ hĥħȟḣḥḧḩḫẖⱨꞕ iìíîïĩīĭįǐȉȋɨᶖḭḯỉị jĵǰɉ kķƙǩᶄḱḳḵⱪꝁ lĺļľŀłƚḷḹḻḽⱡ mᵯḿṁṃ nñńņňʼnǹᵰᶇṅṇṉṋꞥ oòóôõöøōŏőơǒǫǭǿȍȏȫȭȯȱɵṍṏṑṓọỏốồổỗộớờởỡợ pƥᵱᵽᶈṕṗ qɋʠ rŕŗřȑȓɍɽᵲᵳᶉṛṝṟꞧ sśŝşšșȿᵴᶊṡṣṥṧṩꞩ tţťŧƫƭțʈᵵṫṭṯṱẗⱦ uùúûüũūŭůűųǚǖưǔǘǜȕȗʉᵾᶙṳṵṷṹṻụủứừửữự vʋᶌṽṿ wŵẁẃẅẇẉẘ xẋẍ yýÿŷƴȳɏẏẙỳỵỷỹ zźżžƶᵶᶎẑẓẕⱬ"
8825
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
5 let groups = split(str)
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
6 for group1 in groups
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 for c in split(group1, '\zs')
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 " next statement confirms that equivalence class matches every
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 " character in group
24351
585695c70392 patch 8.2.2716: the equivalent class regexp is missing some characters
Bram Moolenaar <Bram@vim.org>
parents: 23471
diff changeset
10 call assert_match('^[[=' .. c .. '=]]*$', group1)
8825
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 for group2 in groups
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 if group2 != group1
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 " next statement converts that equivalence class doesn't match
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14 " character in any other group
24351
585695c70392 patch 8.2.2716: the equivalent class regexp is missing some characters
Bram Moolenaar <Bram@vim.org>
parents: 23471
diff changeset
15 call assert_equal(-1, match(group2, '[[=' .. c .. '=]]'), c)
8825
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16 endif
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
17 endfor
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 endfor
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19 endfor
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20 endfunc
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
22 func Test_equivalence_re1()
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
23 set re=1
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
24 call s:equivalence_test()
9896
7b39615c0db1 commit https://github.com/vim/vim/commit/6bff02eb530aa29aafa2cb5627399837be7a5dd5
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
25 set re=0
8825
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26 endfunc
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
27
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
28 func Test_equivalence_re2()
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
29 set re=2
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
30 call s:equivalence_test()
9896
7b39615c0db1 commit https://github.com/vim/vim/commit/6bff02eb530aa29aafa2cb5627399837be7a5dd5
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
31 set re=0
8825
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
32 endfunc
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
33
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
34 func s:classes_test()
21407
6d8696fd4945 patch 8.2.1254: MS-Windows: regexp test may fail if 'iskeyword' set wrongly
Bram Moolenaar <Bram@vim.org>
parents: 20772
diff changeset
35 if has('win32')
6d8696fd4945 patch 8.2.1254: MS-Windows: regexp test may fail if 'iskeyword' set wrongly
Bram Moolenaar <Bram@vim.org>
parents: 20772
diff changeset
36 set iskeyword=@,48-57,_,192-255
6d8696fd4945 patch 8.2.1254: MS-Windows: regexp test may fail if 'iskeyword' set wrongly
Bram Moolenaar <Bram@vim.org>
parents: 20772
diff changeset
37 endif
8999
f414db42d167 commit https://github.com/vim/vim/commit/490465bda6ab66f78041709cc02f48a25486a3e5
Christian Brabandt <cb@256bit.org>
parents: 8995
diff changeset
38 set isprint=@,161-255
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
39 call assert_equal('Motörhead', matchstr('Motörhead', '[[:print:]]\+'))
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
40
11267
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
41 let alnumchars = ''
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
42 let alphachars = ''
11267
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
43 let backspacechar = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
44 let blankchars = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
45 let cntrlchars = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
46 let digitchars = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
47 let escapechar = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
48 let graphchars = ''
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
49 let lowerchars = ''
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
50 let printchars = ''
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
51 let punctchars = ''
11267
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
52 let returnchar = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
53 let spacechars = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
54 let tabchar = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
55 let upperchars = ''
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
56 let xdigitchars = ''
15709
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
57 let identchars = ''
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
58 let identchars1 = ''
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
59 let kwordchars = ''
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
60 let kwordchars1 = ''
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
61 let fnamechars = ''
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
62 let fnamechars1 = ''
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
63 let i = 1
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
64 while i <= 255
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
65 let c = nr2char(i)
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
66 if c =~ '[[:alpha:]]'
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
67 let alphachars .= c
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
68 endif
11267
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
69 if c =~ '[[:alnum:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
70 let alnumchars .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
71 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
72 if c =~ '[[:backspace:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
73 let backspacechar .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
74 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
75 if c =~ '[[:blank:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
76 let blankchars .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
77 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
78 if c =~ '[[:cntrl:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
79 let cntrlchars .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
80 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
81 if c =~ '[[:digit:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
82 let digitchars .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
83 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
84 if c =~ '[[:escape:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
85 let escapechar .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
86 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
87 if c =~ '[[:graph:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
88 let graphchars .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
89 endif
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
90 if c =~ '[[:lower:]]'
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
91 let lowerchars .= c
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
92 endif
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
93 if c =~ '[[:print:]]'
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
94 let printchars .= c
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
95 endif
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
96 if c =~ '[[:punct:]]'
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
97 let punctchars .= c
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
98 endif
11267
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
99 if c =~ '[[:return:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
100 let returnchar .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
101 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
102 if c =~ '[[:space:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
103 let spacechars .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
104 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
105 if c =~ '[[:tab:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
106 let tabchar .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
107 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
108 if c =~ '[[:upper:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
109 let upperchars .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
110 endif
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
111 if c =~ '[[:xdigit:]]'
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
112 let xdigitchars .= c
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
113 endif
15709
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
114 if c =~ '[[:ident:]]'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
115 let identchars .= c
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
116 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
117 if c =~ '\i'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
118 let identchars1 .= c
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
119 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
120 if c =~ '[[:keyword:]]'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
121 let kwordchars .= c
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
122 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
123 if c =~ '\k'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
124 let kwordchars1 .= c
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
125 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
126 if c =~ '[[:fname:]]'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
127 let fnamechars .= c
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
128 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
129 if c =~ '\f'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
130 let fnamechars1 .= c
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
131 endif
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
132 let i += 1
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
133 endwhile
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
134
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
135 call assert_equal('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', alphachars)
11267
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
136 call assert_equal('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', alnumchars)
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
137 call assert_equal("\b", backspacechar)
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
138 call assert_equal("\t ", blankchars)
11287
e800e8149a5b patch 8.0.0529: line in test commented out
Christian Brabandt <cb@256bit.org>
parents: 11267
diff changeset
139 call assert_equal("\x01\x02\x03\x04\x05\x06\x07\b\t\n\x0b\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\e\x1c\x1d\x1e\x1f\x7f", cntrlchars)
11267
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
140 call assert_equal("0123456789", digitchars)
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
141 call assert_equal("\<Esc>", escapechar)
11287
e800e8149a5b patch 8.0.0529: line in test commented out
Christian Brabandt <cb@256bit.org>
parents: 11267
diff changeset
142 call assert_equal('!"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~', graphchars)
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
143 call assert_equal('abcdefghijklmnopqrstuvwxyzµßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ', lowerchars)
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
144 call assert_equal(' !"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ', printchars)
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
145 call assert_equal('!"#$%&''()*+,-./:;<=>?@[\]^_`{|}~', punctchars)
11267
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
146 call assert_equal('ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞ', upperchars)
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
147 call assert_equal("\r", returnchar)
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
148 call assert_equal("\t\n\x0b\f\r ", spacechars)
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
149 call assert_equal("\t", tabchar)
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
150 call assert_equal('0123456789ABCDEFabcdef', xdigitchars)
15709
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
151
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
152 if has('win32')
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
153 let identchars_ok = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
154 let kwordchars_ok = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyzµÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
155 elseif has('ebcdic')
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
156 let identchars_ok = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz€ŒŽœž¬®µº¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
157 let kwordchars_ok = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz€ŒŽœž¬®µº¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
158 else
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
159 let identchars_ok = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyzµÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
160 let kwordchars_ok = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyzµÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
161 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
162
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
163 if has('win32')
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
164 let fnamechars_ok = '!#$%+,-./0123456789:=@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]_abcdefghijklmnopqrstuvwxyz{}~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
165 elseif has('amiga')
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
166 let fnamechars_ok = '$+,-./0123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
167 elseif has('vms')
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
168 let fnamechars_ok = '#$%+,-./0123456789:;<>ABCDEFGHIJKLMNOPQRSTUVWXYZ[]_abcdefghijklmnopqrstuvwxyz~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
169 elseif has('ebcdic')
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
170 let fnamechars_ok = '#$%+,-./=ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
171 else
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
172 let fnamechars_ok = '#$%+,-./0123456789=ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
173 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
174
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
175 call assert_equal(identchars_ok, identchars)
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
176 call assert_equal(kwordchars_ok, kwordchars)
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
177 call assert_equal(fnamechars_ok, fnamechars)
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
178
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
179 call assert_equal(identchars1, identchars)
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
180 call assert_equal(kwordchars1, kwordchars)
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
181 call assert_equal(fnamechars1, fnamechars)
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
182 endfunc
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
183
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
184 func Test_classes_re1()
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
185 set re=1
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
186 call s:classes_test()
9896
7b39615c0db1 commit https://github.com/vim/vim/commit/6bff02eb530aa29aafa2cb5627399837be7a5dd5
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
187 set re=0
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
188 endfunc
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
189
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
190 func Test_classes_re2()
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
191 set re=2
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
192 call s:classes_test()
9896
7b39615c0db1 commit https://github.com/vim/vim/commit/6bff02eb530aa29aafa2cb5627399837be7a5dd5
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
193 set re=0
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
194 endfunc
11480
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
195
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
196 func Test_reversed_range()
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
197 for re in range(0, 2)
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
198 exe 'set re=' . re
24351
585695c70392 patch 8.2.2716: the equivalent class regexp is missing some characters
Bram Moolenaar <Bram@vim.org>
parents: 23471
diff changeset
199 call assert_fails('call match("abc def", "[c-a]")', 'E944:', re)
11480
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
200 endfor
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
201 set re=0
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
202 endfunc
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
203
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
204 func Test_large_class()
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
205 set re=1
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
206 call assert_fails('call match("abc def", "[\u3000-\u4000]")', 'E945:')
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
207 set re=2
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
208 call assert_equal(0, 'abc def' =~# '[\u3000-\u4000]')
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
209 call assert_equal(1, "\u3042" =~# '[\u3000-\u4000]')
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
210 set re=0
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
211 endfunc
17444
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
212
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
213 func Test_optmatch_toolong()
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
214 set re=1
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
215 " Can only handle about 8000 characters.
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
216 let pat = '\\%[' .. repeat('x', 9000) .. ']'
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
217 call assert_fails('call match("abc def", "' .. pat .. '")', 'E339:')
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
218 set re=0
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
219 endfunc
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
220
18906
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
221 " Test for regexp patterns with multi-byte support, using utf-8.
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
222 func Test_multibyte_chars()
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
223 " tl is a List of Lists with:
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
224 " 2: test auto/old/new 0: test auto/old 1: test auto/new
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
225 " regexp pattern
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
226 " text to test the pattern on
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
227 " expected match (optional)
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
228 " expected submatch 1 (optional)
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
229 " expected submatch 2 (optional)
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
230 " etc.
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
231 " When there is no match use only the first two items.
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
232 let tl = []
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
233
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
234 " Multi-byte character tests. These will fail unless vim is compiled
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
235 " with Multibyte (FEAT_MBYTE) or BIG/HUGE features.
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
236 call add(tl, [2, '[[:alpha:][=a=]]\+', '879 aiaãâaiuvna ', 'aiaãâaiuvna'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
237 call add(tl, [2, '[[=a=]]\+', 'ddaãâbcd', 'aãâ']) " equivalence classes
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
238 call add(tl, [2, '[^ม ]\+', 'มม oijasoifjos ifjoisj f osij j มมมมม abcd', 'oijasoifjos'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
239 call add(tl, [2, ' [^ ]\+', 'start มabcdม ', ' มabcdม'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
240 call add(tl, [2, '[ม[:alpha:][=a=]]\+', '879 aiaãมâมaiuvna ', 'aiaãมâมaiuvna'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
241
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
242 " this is not a normal "i" but 0xec
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
243 call add(tl, [2, '\p\+', 'ìa', 'ìa'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
244 call add(tl, [2, '\p*', 'aあ', 'aあ'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
245
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
246 " Test recognition of some character classes
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
247 call add(tl, [2, '\i\+', '&*¨xx ', 'xx'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
248 call add(tl, [2, '\f\+', '&*Ÿfname ', 'fname'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
249
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
250 " Test composing character matching
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
251 call add(tl, [2, '.ม', 'xม่x yมy', 'yม'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
252 call add(tl, [2, '.ม่', 'xม่x yมy', 'xม่'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
253 call add(tl, [2, "\u05b9", " x\u05b9 ", "x\u05b9"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
254 call add(tl, [2, ".\u05b9", " x\u05b9 ", "x\u05b9"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
255 call add(tl, [2, "\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
256 call add(tl, [2, ".\u05b9\u05bb", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
257 call add(tl, [2, "\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
258 call add(tl, [2, ".\u05bb\u05b9", " x\u05b9\u05bb ", "x\u05b9\u05bb"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
259 call add(tl, [2, "\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
260 call add(tl, [2, ".\u05b9", " y\u05bb x\u05b9 ", "x\u05b9"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
261 call add(tl, [2, "\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
262 call add(tl, [2, ".\u05b9", " y\u05bb\u05b9 x\u05b9 ", "y\u05bb\u05b9"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
263 call add(tl, [1, "\u05b9\u05bb", " y\u05b9 x\u05b9\u05bb ", "x\u05b9\u05bb"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
264 call add(tl, [2, ".\u05b9\u05bb", " y\u05bb x\u05b9\u05bb ", "x\u05b9\u05bb"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
265 call add(tl, [2, "a", "ca\u0300t"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
266 call add(tl, [2, "ca", "ca\u0300t"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
267 call add(tl, [2, "a\u0300", "ca\u0300t", "a\u0300"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
268 call add(tl, [2, 'a\%C', "ca\u0300t", "a\u0300"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
269 call add(tl, [2, 'ca\%C', "ca\u0300t", "ca\u0300"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
270 call add(tl, [2, 'ca\%Ct', "ca\u0300t", "ca\u0300t"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
271
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
272 " Test \Z
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
273 call add(tl, [2, 'ú\Z', 'x'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
274 call add(tl, [2, 'יהוה\Z', 'יהוה', 'יהוה'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
275 call add(tl, [2, 'יְהוָה\Z', 'יהוה', 'יהוה'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
276 call add(tl, [2, 'יהוה\Z', 'יְהוָה', 'יְהוָה'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
277 call add(tl, [2, 'יְהוָה\Z', 'יְהוָה', 'יְהוָה'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
278 call add(tl, [2, 'יְ\Z', 'וְיַ', 'יַ'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
279 call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
280 call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200dxy", "ק\u200dx"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
281 call add(tl, [2, "ק\u200dx\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
282 call add(tl, [2, "ק\u200dx\\Z", "xק\u200dxy", "ק\u200dx"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
283 call add(tl, [2, "\u05b9\\Z", "xyz"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
284 call add(tl, [2, "\\Z\u05b9", "xyz"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
285 call add(tl, [2, "\u05b9\\Z", "xy\u05b9z", "y\u05b9"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
286 call add(tl, [2, "\\Z\u05b9", "xy\u05b9z", "y\u05b9"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
287 call add(tl, [1, "\u05b9\\+\\Z", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
288 call add(tl, [1, "\\Z\u05b9\\+", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
289
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
290 " Combining different tests and features
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
291 call add(tl, [2, '[^[=a=]]\+', 'ddaãâbcd', 'dd'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
292
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
293 " Run the tests
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
294 for t in tl
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
295 let re = t[0]
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
296 let pat = t[1]
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
297 let text = t[2]
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
298 let matchidx = 3
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
299 for engine in [0, 1, 2]
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
300 if engine == 2 && re == 0 || engine == 1 && re == 1
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
301 continue
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
302 endif
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
303 let &regexpengine = engine
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
304 try
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
305 let l = matchlist(text, pat)
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
306 catch
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
307 call assert_report('Error ' . engine . ': pat: \"' . pat .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
308 \ '\", text: \"' . text .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
309 \ '\", caused an exception: \"' . v:exception . '\"')
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
310 endtry
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
311 " check the match itself
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
312 if len(l) == 0 && len(t) > matchidx
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
313 call assert_report('Error ' . engine . ': pat: \"' . pat .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
314 \ '\", text: \"' . text .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
315 \ '\", did not match, expected: \"' . t[matchidx] . '\"')
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
316 elseif len(l) > 0 && len(t) == matchidx
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
317 call assert_report('Error ' . engine . ': pat: \"' . pat .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
318 \ '\", text: \"' . text . '\", match: \"' . l[0] .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
319 \ '\", expected no match')
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
320 elseif len(t) > matchidx && l[0] != t[matchidx]
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
321 call assert_report('Error ' . engine . ': pat: \"' . pat .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
322 \ '\", text: \"' . text . '\", match: \"' . l[0] .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
323 \ '\", expected: \"' . t[matchidx] . '\"')
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
324 else
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
325 " Test passed
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
326 endif
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
327 if len(l) > 0
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
328 " check all the nine submatches
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
329 for i in range(1, 9)
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
330 if len(t) <= matchidx + i
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
331 let e = ''
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
332 else
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
333 let e = t[matchidx + i]
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
334 endif
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
335 if l[i] != e
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
336 call assert_report('Error ' . engine . ': pat: \"' . pat .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
337 \ '\", text: \"' . text . '\", submatch ' . i .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
338 \ ': \"' . l[i] . '\", expected: \"' . e . '\"')
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
339 endif
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
340 endfor
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
341 unlet i
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
342 endif
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
343 endfor
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
344 endfor
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
345 set regexpengine&
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
346 endfunc
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
347
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
348 " check that 'ambiwidth' does not change the meaning of \p
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
349 func Test_ambiwidth()
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
350 set regexpengine=1 ambiwidth=single
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
351 call assert_equal(0, match("\u00EC", '\p'))
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
352 set regexpengine=1 ambiwidth=double
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
353 call assert_equal(0, match("\u00EC", '\p'))
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
354 set regexpengine=2 ambiwidth=single
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
355 call assert_equal(0, match("\u00EC", '\p'))
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
356 set regexpengine=2 ambiwidth=double
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
357 call assert_equal(0, match("\u00EC", '\p'))
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
358 set regexpengine& ambiwidth&
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
359 endfunc
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
360
20772
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
361 func Run_regexp_ignore_case()
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
362 call assert_equal('iIİ', substitute('iIİ', '\([iIİ]\)', '\1', 'g'))
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
363
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
364 call assert_equal('iIx', substitute('iIİ', '\c\([İ]\)', 'x', 'g'))
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
365 call assert_equal('xxİ', substitute('iIİ', '\(i\c\)', 'x', 'g'))
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
366 call assert_equal('iIx', substitute('iIİ', '\(İ\c\)', 'x', 'g'))
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
367 call assert_equal('iIx', substitute('iIİ', '\c\(\%u0130\)', 'x', 'g'))
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
368 call assert_equal('iIx', substitute('iIİ', '\c\([\u0130]\)', 'x', 'g'))
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
369 call assert_equal('iIx', substitute('iIİ', '\c\([\u012f-\u0131]\)', 'x', 'g'))
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
370 endfunc
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
371
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
372 func Test_regexp_ignore_case()
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
373 set regexpengine=1
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
374 call Run_regexp_ignore_case()
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
375 set regexpengine=2
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
376 call Run_regexp_ignore_case()
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
377 set regexpengine&
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
378 endfunc
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
379
21489
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
380 " Tests for regexp with multi-byte encoding and various magic settings
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
381 func Run_regexp_multibyte_magic()
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
382 let text =<< trim END
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
383 1 a aa abb abbccc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
384 2 d dd dee deefff
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
385 3 g gg ghh ghhiii
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
386 4 j jj jkk jkklll
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
387 5 m mm mnn mnnooo
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
388 6 x ^aa$ x
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
389 7 (a)(b) abbaa
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
390 8 axx [ab]xx
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
391 9 หม่x อมx
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
392 a อมx หม่x
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
393 b ちカヨは
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
394 c x ¬€x
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
395 d 天使x
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
396 e y
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
397 f z
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
398 g a啷bb
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
399 j 0123❤x
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
400 k combinations
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
401 l äö üᾱ̆́
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
402 END
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
403
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
404 new
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
405 call setline(1, text)
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
406 exe 'normal /a*b\{2}c\+/e' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
407 call assert_equal('1 a aa abb abbcc', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
408 exe 'normal /\Md\*e\{2}f\+/e' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
409 call assert_equal('2 d dd dee deeff', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
410 set nomagic
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
411 exe 'normal /g\*h\{2}i\+/e' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
412 call assert_equal('3 g gg ghh ghhii', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
413 exe 'normal /\mj*k\{2}l\+/e' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
414 call assert_equal('4 j jj jkk jkkll', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
415 exe 'normal /\vm*n{2}o+/e' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
416 call assert_equal('5 m mm mnn mnnoo', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
417 exe 'normal /\V^aa$/' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
418 call assert_equal('6 x aa$ x', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
419 set magic
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
420 exe 'normal /\v(a)(b)\2\1\1/e' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
421 call assert_equal('7 (a)(b) abba', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
422 exe 'normal /\V[ab]\(\[xy]\)\1' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
423 call assert_equal('8 axx ab]xx', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
424
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
425 " search for multi-byte without composing char
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
426 exe 'normal /ม' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
427 call assert_equal('9 หม่x อx', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
428
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
429 " search for multi-byte with composing char
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
430 exe 'normal /ม่' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
431 call assert_equal('a อมx หx', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
432
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
433 " find word by change of word class
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
434 exe 'normal /ち\<カヨ\>は' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
435 call assert_equal('b カヨは', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
436
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
437 " Test \%u, [\u] and friends
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
438 " c
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
439 exe 'normal /\%u20ac' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
440 call assert_equal('c x ¬x', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
441 " d
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
442 exe 'normal /[\u4f7f\u5929]\+' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
443 call assert_equal('d 使x', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
444 " e
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
445 exe 'normal /\%U12345678' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
446 call assert_equal('e y', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
447 " f
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
448 exe 'normal /[\U1234abcd\u1234\uabcd]' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
449 call assert_equal('f z', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
450 " g
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
451 exe 'normal /\%d21879b' .. "\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
452 call assert_equal('g abb', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
453
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
454 " j Test backwards search from a multi-byte char
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
455 exe "normal /x\<CR>x?.\<CR>x"
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
456 call assert_equal('j 012❤', getline('.'))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
457 " k
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
458 let @w=':%s#comb[i]nations#œ̄ṣ́m̥̄ᾱ̆́#g'
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
459 @w
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
460 call assert_equal('k œ̄ṣ́m̥̄ᾱ̆́', getline(18))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
461
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
462 close!
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
463 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
464
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
465 func Test_regexp_multibyte_magic()
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
466 set regexpengine=1
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
467 call Run_regexp_multibyte_magic()
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
468 set regexpengine=2
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
469 call Run_regexp_multibyte_magic()
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
470 set regexpengine&
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
471 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
472
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
473 " Test for 7.3.192
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
474 " command ":s/ \?/ /g" splits multi-byte characters into bytes
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
475 func Test_split_multibyte_to_bytes()
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
476 new
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
477 call setline(1, 'l äö üᾱ̆́')
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
478 s/ \?/ /g
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
479 call assert_equal(' l ä ö ü ᾱ̆́', getline(1))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
480 close!
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
481 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
482
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
483 " Test for matchstr() with multibyte characters
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
484 func Test_matchstr_multibyte()
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
485 new
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
486 call assert_equal('ב', matchstr("אבגד", ".", 0, 2))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
487 call assert_equal('בג', matchstr("אבגד", "..", 0, 2))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
488 call assert_equal('א', matchstr("אבגד", ".", 0, 0))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
489 call assert_equal('ג', matchstr("אבגד", ".", 4, -1))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
490 close!
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
491 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
492
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
493 " Test for 7.4.636
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
494 " A search with end offset gets stuck at end of file.
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
495 func Test_search_with_end_offset()
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
496 new
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
497 call setline(1, ['', 'dog(a', 'cat('])
22476
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21489
diff changeset
498 exe "normal /(/e+\<CR>"
b3751f4d3b26 patch 8.2.1786: various Normal mode commands not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 21489
diff changeset
499 normal n"ayn
21489
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
500 call assert_equal("a\ncat(", @a)
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
501 close!
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
502 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
503
23262
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
504 " Check that "^" matches even when the line starts with a combining char
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
505 func Test_match_start_of_line_combining()
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
506 new
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
507 call setline(1, ['', "\u05ae", ''])
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
508 exe "normal gg/^\<CR>"
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
509 call assert_equal(2, getcurpos()[1])
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
510 bwipe!
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
511 endfunc
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
512
23471
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
513 " Check that [[:upper:]] matches for automatic engine
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
514 func Test_match_char_class_upper()
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
515 new
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
516 let _engine=&regexpengine
23262
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
517
23471
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
518 " Test 1: [[:upper:]]\{2,\}
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
519 set regexpengine=0
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
520 call setline(1, ['05. ПЕСНЯ О ГЕРОЯХ муз. А. Давиденко, М. Коваля и Б. Шехтера ...', '05. PJESNJA O GJEROJAKH mus. A. Davidjenko, M. Kovalja i B. Shjekhtjera ...'])
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
521 call cursor(1,1)
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
522 let search_cmd='norm /\<[[:upper:]]\{2,\}\>' .. "\<CR>"
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
523 exe search_cmd
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
524 call assert_equal(4, searchcount().total, 'TEST 1')
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
525 set regexpengine=1
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
526 exe search_cmd
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
527 call assert_equal(2, searchcount().total, 'TEST 1')
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
528 set regexpengine=2
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
529 exe search_cmd
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
530 call assert_equal(4, searchcount().total, 'TEST 1')
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
531
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
532 " Test 2: [[:upper:]].\+
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
533 let search_cmd='norm /\<[[:upper:]].\+\>' .. "\<CR>"
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
534 set regexpengine=0
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
535 exe search_cmd
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
536 call assert_equal(2, searchcount().total, 'TEST 2')
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
537 set regexpengine=1
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
538 exe search_cmd
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
539 call assert_equal(1, searchcount().total, 'TEST 2')
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
540 set regexpengine=2
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
541 exe search_cmd
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
542 call assert_equal(2, searchcount().total, 'TEST 2')
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
543
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
544 " Test 3: [[:lower:]]\+
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
545 let search_cmd='norm /\<[[:lower:]]\+\>' .. "\<CR>"
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
546 set regexpengine=0
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
547 exe search_cmd
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
548 call assert_equal(4, searchcount().total, 'TEST 3 lower')
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
549 set regexpengine=1
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
550 exe search_cmd
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
551 call assert_equal(2, searchcount().total, 'TEST 3 lower')
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
552 set regexpengine=2
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
553 exe search_cmd
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
554 call assert_equal(4, searchcount().total, 'TEST 3 lower')
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
555
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
556 " clean up
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
557 let &regexpengine=_engine
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
558 bwipe!
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
559 endfunc
23262
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
560
25747
1c999a6e9d92 patch 8.2.3409: reading beyond end of line with invalid utf-8 character
Bram Moolenaar <Bram@vim.org>
parents: 24351
diff changeset
561 func Test_match_invalid_byte()
1c999a6e9d92 patch 8.2.3409: reading beyond end of line with invalid utf-8 character
Bram Moolenaar <Bram@vim.org>
parents: 24351
diff changeset
562 call writefile(0z630a.765d30aa0a.2e0a.790a.4030, 'Xinvalid')
1c999a6e9d92 patch 8.2.3409: reading beyond end of line with invalid utf-8 character
Bram Moolenaar <Bram@vim.org>
parents: 24351
diff changeset
563 new
1c999a6e9d92 patch 8.2.3409: reading beyond end of line with invalid utf-8 character
Bram Moolenaar <Bram@vim.org>
parents: 24351
diff changeset
564 source Xinvalid
1c999a6e9d92 patch 8.2.3409: reading beyond end of line with invalid utf-8 character
Bram Moolenaar <Bram@vim.org>
parents: 24351
diff changeset
565 bwipe!
1c999a6e9d92 patch 8.2.3409: reading beyond end of line with invalid utf-8 character
Bram Moolenaar <Bram@vim.org>
parents: 24351
diff changeset
566 call delete('Xinvalid')
1c999a6e9d92 patch 8.2.3409: reading beyond end of line with invalid utf-8 character
Bram Moolenaar <Bram@vim.org>
parents: 24351
diff changeset
567 endfunc
1c999a6e9d92 patch 8.2.3409: reading beyond end of line with invalid utf-8 character
Bram Moolenaar <Bram@vim.org>
parents: 24351
diff changeset
568
18906
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
569 " vim: shiftwidth=2 sts=2 expandtab