annotate src/testdir/test_regexp_utf8.vim @ 28958:7fb63ad3a9ab v8.2.5001

patch 8.2.5001: checking translations affects the search pattern history Commit: https://github.com/vim/vim/commit/8a3704723c40779d688ef957dbe5bd8b65c25f95 Author: Bram Moolenaar <Bram@vim.org> Date: Sun May 22 15:28:31 2022 +0100 patch 8.2.5001: checking translations affects the search pattern history Problem: Checking translations affects the search pattern history. Solution: Use "keeppatterns". (Doug Kearns)
author Bram Moolenaar <Bram@vim.org>
date Sun, 22 May 2022 16:30:03 +0200
parents 0815a43eebce
children e7158d889784
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 else
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
156 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
157 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
158 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
159
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
160 if has('win32')
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
161 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
162 elseif has('amiga')
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
163 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
164 elseif has('vms')
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
165 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
166 else
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
167 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
168 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
169
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
170 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
171 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
172 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
173
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
174 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
175 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
176 call assert_equal(fnamechars1, fnamechars)
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
177 endfunc
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
178
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
179 func Test_classes_re1()
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
180 set re=1
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
181 call s:classes_test()
9896
7b39615c0db1 commit https://github.com/vim/vim/commit/6bff02eb530aa29aafa2cb5627399837be7a5dd5
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
182 set re=0
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
183 endfunc
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
184
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
185 func Test_classes_re2()
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
186 set re=2
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
187 call s:classes_test()
9896
7b39615c0db1 commit https://github.com/vim/vim/commit/6bff02eb530aa29aafa2cb5627399837be7a5dd5
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
188 set re=0
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
189 endfunc
11480
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
190
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
191 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
192 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
193 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
194 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
195 endfor
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
196 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
197 endfunc
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
198
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
199 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
200 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
201 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
202 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
203 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
204 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
205 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
206 endfunc
17444
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
207
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
208 func Test_optmatch_toolong()
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
209 set re=1
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
210 " 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
211 let pat = '\\%[' .. repeat('x', 9000) .. ']'
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
212 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
213 set re=0
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
214 endfunc
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
215
18906
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
216 " 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
217 func Test_multibyte_chars()
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
218 " 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
219 " 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
220 " regexp pattern
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
221 " 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
222 " expected match (optional)
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
223 " expected submatch 1 (optional)
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
224 " expected submatch 2 (optional)
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
225 " etc.
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
226 " 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
227 let tl = []
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
228
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
229 " 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
230 " 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
231 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
232 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
233 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
234 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
235 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
236
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
237 " 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
238 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
239 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
240
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
241 " 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
242 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
243 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
244
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
245 " Test composing character matching
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
246 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
247 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
248 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
249 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
250 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
251 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
252 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
253 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
254 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
255 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
256 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
257 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
258 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
259 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
260 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
261 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
262 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
263 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
264 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
265 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
266
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
267 " Test \Z
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, 'ú\Z', 'x'])
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, 'יהוה\Z', 'יהוה', 'יהוה'])
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, 'יְהוָה\Z', 'יהוה', 'יהוה'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
271 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
272 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
273 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
274 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
275 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
276 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
277 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
278 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
279 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
280 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
281 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
282 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
283 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
284
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
285 " 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
286 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
287
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
288 " Run the tests
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
289 for t in tl
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
290 let re = t[0]
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
291 let pat = t[1]
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
292 let text = t[2]
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
293 let matchidx = 3
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
294 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
295 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
296 continue
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
297 endif
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
298 let &regexpengine = engine
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
299 try
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
300 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
301 catch
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
302 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
303 \ '\", text: \"' . text .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
304 \ '\", 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
305 endtry
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
306 " check the match itself
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
307 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
308 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
309 \ '\", text: \"' . text .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
310 \ '\", 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
311 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
312 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
313 \ '\", 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
314 \ '\", expected no match')
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
315 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
316 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
317 \ '\", 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
318 \ '\", expected: \"' . t[matchidx] . '\"')
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
319 else
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
320 " Test passed
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
321 endif
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
322 if len(l) > 0
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
323 " 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
324 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
325 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
326 let e = ''
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
327 else
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
328 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
329 endif
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
330 if l[i] != e
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
331 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
332 \ '\", text: \"' . text . '\", submatch ' . i .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
333 \ ': \"' . l[i] . '\", expected: \"' . e . '\"')
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 endfor
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
336 unlet i
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
337 endif
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
338 endfor
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
339 endfor
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
340 set regexpengine&
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
341 endfunc
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
342
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
343 " 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
344 func Test_ambiwidth()
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
345 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
346 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
347 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
348 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
349 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
350 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
351 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
352 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
353 set regexpengine& ambiwidth&
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
354 endfunc
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
355
20772
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
356 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
357 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
358
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
359 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
360 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
361 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
362 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
363 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
364 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
365 endfunc
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
366
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
367 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
368 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
369 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
370 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
371 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
372 set regexpengine&
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
373 endfunc
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
374
21489
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
375 " 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
376 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
377 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
378 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
379 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
380 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
381 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
382 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
383 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
384 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
385 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
386 9 หม่x อมx
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
387 a อมx หม่x
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
388 b ちカヨは
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
389 c x ¬€x
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
390 d 天使x
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
391 e y
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
392 f z
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
393 g a啷bb
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
394 j 0123❤x
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
395 k combinations
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
396 l äö üᾱ̆́
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
397 END
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
398
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
399 new
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
400 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
401 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
402 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
403 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
404 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
405 set nomagic
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
406 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
407 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
408 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
409 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
410 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
411 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
412 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
413 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
414 set magic
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
415 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
416 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
417 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
418 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
419
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
420 " 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
421 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
422 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
423
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
424 " 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
425 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
426 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
427
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
428 " 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
429 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
430 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
431
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
432 " 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
433 " c
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
434 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
435 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
436 " d
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
437 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
438 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
439 " e
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
440 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
441 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
442 " f
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
443 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
444 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
445 " g
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
446 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
447 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
448
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
449 " 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
450 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
451 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
452 " k
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
453 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
454 @w
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
455 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
456
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
457 close!
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
458 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
459
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
460 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
461 set regexpengine=1
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
462 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
463 set regexpengine=2
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
464 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
465 set regexpengine&
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
466 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
467
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
468 " 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
469 " 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
470 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
471 new
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
472 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
473 s/ \?/ /g
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
474 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
475 close!
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
476 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
477
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
478 " 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
479 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
480 new
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
481 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
482 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
483 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
484 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
485 close!
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
486 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
487
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
488 " 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
489 " 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
490 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
491 new
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
492 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
493 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
494 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
495 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
496 close!
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
497 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
498
23262
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
499 " 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
500 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
501 new
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
502 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
503 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
504 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
505 bwipe!
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
506 endfunc
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
507
23471
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
508 " 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
509 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
510 new
23262
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
511
23471
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
512 " 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
513 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
514 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
515 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
516 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
517 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
518 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
519 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
520 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
521 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
522 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
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
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
526 " 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
527 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
528 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
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(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
531 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
532 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
533 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
534 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
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
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
538 " 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
539 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
540 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
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(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
543 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
544 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
545 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
546 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
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
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
550 " clean up
27829
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
551 set regexpengine=0
23471
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
552 bwipe!
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
553 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
554
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
555 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
556 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
557 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
558 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
559 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
560 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
561 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
562
27829
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
563 func Test_match_too_complicated()
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
564 set regexpengine=1
27835
0815a43eebce patch 8.2.4443: regexp pattern test fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 27829
diff changeset
565 exe "noswapfile vsplit \xeb\xdb\x99"
27829
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
566 silent! buf \&\zs*\zs*0
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
567 bwipe!
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
568 set regexpengine=0
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
569 endfunc
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
570
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
571
18906
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
572 " vim: shiftwidth=2 sts=2 expandtab