annotate src/testdir/test_regexp_utf8.vim @ 30226:b6b803ed4a53 v9.0.0449

patch 9.0.0449: there is no easy way to translate a key code into a string Commit: https://github.com/vim/vim/commit/cdc839353f68ca43db6446e1b727fc7ba657b738 Author: zeertzjq <zeertzjq@outlook.com> Date: Mon Sep 12 13:38:41 2022 +0100 patch 9.0.0449: there is no easy way to translate a key code into a string Problem: There is no easy way to translate a string with a key code into a readable string. Solution: Add the keytrans() function. (closes #11114)
author Bram Moolenaar <Bram@vim.org>
date Mon, 12 Sep 2022 14:45:04 +0200
parents 893f448af76d
children de319bf98a39
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
29527
e7158d889784 patch 9.0.0105: illegal memory access when pattern starts with illegal byte
Bram Moolenaar <Bram@vim.org>
parents: 27835
diff changeset
3 source shared.vim
e7158d889784 patch 9.0.0105: illegal memory access when pattern starts with illegal byte
Bram Moolenaar <Bram@vim.org>
parents: 27835
diff changeset
4
8825
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
5 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
6 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
7 let groups = split(str)
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 for group1 in groups
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 for c in split(group1, '\zs')
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 " 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
11 " 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
12 call assert_match('^[[=' .. c .. '=]]*$', group1)
8825
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 for group2 in groups
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14 if group2 != group1
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 " 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
16 " 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
17 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
18 endif
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 endfor
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21 endfor
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
22 endfunc
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
23
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
24 func Test_equivalence_re1()
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25 set re=1
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26 call s:equivalence_test()
9896
7b39615c0db1 commit https://github.com/vim/vim/commit/6bff02eb530aa29aafa2cb5627399837be7a5dd5
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
27 set re=0
8825
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
28 endfunc
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
29
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
30 func Test_equivalence_re2()
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
31 set re=2
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
32 call s:equivalence_test()
9896
7b39615c0db1 commit https://github.com/vim/vim/commit/6bff02eb530aa29aafa2cb5627399837be7a5dd5
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
33 set re=0
8825
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
34 endfunc
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
35
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
36 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
37 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
38 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
39 endif
8999
f414db42d167 commit https://github.com/vim/vim/commit/490465bda6ab66f78041709cc02f48a25486a3e5
Christian Brabandt <cb@256bit.org>
parents: 8995
diff changeset
40 set isprint=@,161-255
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
41 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
42
11267
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
43 let alnumchars = ''
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
44 let alphachars = ''
11267
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
45 let backspacechar = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
46 let blankchars = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
47 let cntrlchars = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
48 let digitchars = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
49 let escapechar = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
50 let graphchars = ''
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
51 let lowerchars = ''
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
52 let printchars = ''
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
53 let punctchars = ''
11267
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
54 let returnchar = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
55 let spacechars = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
56 let tabchar = ''
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
57 let upperchars = ''
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
58 let xdigitchars = ''
15709
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
59 let identchars = ''
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
60 let identchars1 = ''
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
61 let kwordchars = ''
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
62 let kwordchars1 = ''
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
63 let fnamechars = ''
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
64 let fnamechars1 = ''
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
65 let i = 1
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
66 while i <= 255
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
67 let c = nr2char(i)
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
68 if c =~ '[[:alpha:]]'
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
69 let alphachars .= c
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
70 endif
11267
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
71 if c =~ '[[:alnum:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
72 let alnumchars .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
73 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
74 if c =~ '[[:backspace:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
75 let backspacechar .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
76 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
77 if c =~ '[[:blank:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
78 let blankchars .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
79 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
80 if c =~ '[[:cntrl:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
81 let cntrlchars .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
82 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
83 if c =~ '[[:digit:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
84 let digitchars .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
85 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
86 if c =~ '[[:escape:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
87 let escapechar .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
88 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
89 if c =~ '[[:graph:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
90 let graphchars .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
91 endif
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
92 if c =~ '[[:lower:]]'
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
93 let lowerchars .= c
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
94 endif
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
95 if c =~ '[[:print:]]'
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
96 let printchars .= c
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
97 endif
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
98 if c =~ '[[:punct:]]'
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
99 let punctchars .= c
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
100 endif
11267
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
101 if c =~ '[[:return:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
102 let returnchar .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
103 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
104 if c =~ '[[:space:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
105 let spacechars .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
106 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
107 if c =~ '[[:tab:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
108 let tabchar .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
109 endif
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
110 if c =~ '[[:upper:]]'
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
111 let upperchars .= c
588de97b40e7 patch 8.0.0519: character classes are not well tested
Christian Brabandt <cb@256bit.org>
parents: 9898
diff changeset
112 endif
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
113 if c =~ '[[:xdigit:]]'
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
114 let xdigitchars .= c
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
115 endif
15709
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
116 if c =~ '[[:ident:]]'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
117 let identchars .= c
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
118 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
119 if c =~ '\i'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
120 let identchars1 .= c
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
121 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
122 if c =~ '[[:keyword:]]'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
123 let kwordchars .= c
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
124 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
125 if c =~ '\k'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
126 let kwordchars1 .= c
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
127 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
128 if c =~ '[[:fname:]]'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
129 let fnamechars .= c
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
130 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
131 if c =~ '\f'
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
132 let fnamechars1 .= c
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
133 endif
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
134 let i += 1
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
135 endwhile
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
136
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
137 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
138 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
139 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
140 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
141 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
142 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
143 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
144 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
145 call assert_equal('abcdefghijklmnopqrstuvwxyzµßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ', lowerchars)
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
146 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
147 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
148 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
149 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
150 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
151 call assert_equal("\t", tabchar)
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
152 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
153
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
154 if has('win32')
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
155 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
156 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
157 else
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
158 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
159 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
160 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
161
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
162 if has('win32')
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('amiga')
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 elseif has('vms')
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 else
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
169 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
170 endif
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
171
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
172 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
173 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
174 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
175
2e2f07561f4b patch 8.1.0862: no verbose version of character classes
Bram Moolenaar <Bram@vim.org>
parents: 15607
diff changeset
176 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
177 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
178 call assert_equal(fnamechars1, fnamechars)
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
179 endfunc
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
180
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
181 func Test_classes_re1()
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
182 set re=1
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
183 call s:classes_test()
9896
7b39615c0db1 commit https://github.com/vim/vim/commit/6bff02eb530aa29aafa2cb5627399837be7a5dd5
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
184 set re=0
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
185 endfunc
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
186
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
187 func Test_classes_re2()
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
188 set re=2
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
189 call s:classes_test()
9896
7b39615c0db1 commit https://github.com/vim/vim/commit/6bff02eb530aa29aafa2cb5627399837be7a5dd5
Christian Brabandt <cb@256bit.org>
parents: 9618
diff changeset
190 set re=0
8995
3cf6704d6efc commit https://github.com/vim/vim/commit/af98a49dd0ef1661b4998f118151fddbf6e4df75
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
191 endfunc
11480
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
192
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
193 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
194 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
195 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
196 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
197 endfor
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
198 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
199 endfunc
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
200
99ce30ac4226 patch 8.0.0623: error for invalid regexp is not very informative
Christian Brabandt <cb@256bit.org>
parents: 11287
diff changeset
201 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
202 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
203 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
204 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
205 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
206 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
207 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
208 endfunc
17444
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
209
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
210 func Test_optmatch_toolong()
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
211 set re=1
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
212 " 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
213 let pat = '\\%[' .. repeat('x', 9000) .. ']'
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
214 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
215 set re=0
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
216 endfunc
f4ce361bb1e5 patch 8.1.1720: crash with very long %[] pattern
Bram Moolenaar <Bram@vim.org>
parents: 15709
diff changeset
217
18906
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
218 " 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
219 func Test_multibyte_chars()
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
220 " 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
221 " 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
222 " regexp pattern
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
223 " 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
224 " expected match (optional)
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
225 " expected submatch 1 (optional)
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
226 " expected submatch 2 (optional)
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
227 " etc.
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
228 " 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
229 let tl = []
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
230
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
231 " 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
232 " 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
233 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
234 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
235 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
236 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
237 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
238
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
239 " 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
240 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
241 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
242
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
243 " 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
244 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
245 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
246
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
247 " Test composing character matching
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, '.ม', '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
249 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
250 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
251 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
252 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
253 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
254 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
255 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
256 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
257 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
258 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
259 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
260 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
261 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
262 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
263 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
264 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
265 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
266 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
267 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
268
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
269 " Test \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', 'x'])
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, 'יְהוָה\Z', 'יְהוָה', 'יְהוָה'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
275 call add(tl, [2, 'יְ\Z', 'וְיַ', 'יַ'])
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
276 call add(tl, [2, "ק\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
277 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
278 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
279 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
280 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
281 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
282 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
283 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
284 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
285 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
286
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
287 " 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
288 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
289
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
290 " Run the tests
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
291 for t in tl
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
292 let re = t[0]
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
293 let pat = t[1]
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
294 let text = t[2]
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
295 let matchidx = 3
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
296 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
297 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
298 continue
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
299 endif
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
300 let &regexpengine = engine
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
301 try
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
302 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
303 catch
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
304 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
305 \ '\", text: \"' . text .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
306 \ '\", 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
307 endtry
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
308 " check the match itself
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
309 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
310 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
311 \ '\", text: \"' . text .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
312 \ '\", 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
313 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
314 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
315 \ '\", 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
316 \ '\", expected no match')
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
317 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
318 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
319 \ '\", 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
320 \ '\", expected: \"' . t[matchidx] . '\"')
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
321 else
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
322 " Test passed
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
323 endif
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
324 if len(l) > 0
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
325 " 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
326 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
327 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
328 let e = ''
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
329 else
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
330 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
331 endif
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
332 if l[i] != e
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
333 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
334 \ '\", text: \"' . text . '\", submatch ' . i .
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
335 \ ': \"' . l[i] . '\", expected: \"' . e . '\"')
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
336 endif
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
337 endfor
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
338 unlet i
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
339 endif
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
340 endfor
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
341 endfor
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
342 set regexpengine&
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
343 endfunc
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
344
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
345 " 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
346 func Test_ambiwidth()
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=single
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=1 ambiwidth=double
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=single
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=2 ambiwidth=double
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
354 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
355 set regexpengine& ambiwidth&
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
356 endfunc
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
357
20772
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
358 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
359 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
360
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('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
363 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
364 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
365 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
366 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
367 endfunc
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
368
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
369 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
370 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
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=2
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
373 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
374 set regexpengine&
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
375 endfunc
097f5b5c907b patch 8.2.0938: NFA regexp uses tolower ()to compare ignore-case
Bram Moolenaar <Bram@vim.org>
parents: 18906
diff changeset
376
21489
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
377 " 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
378 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
379 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
380 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
381 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
382 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
383 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
384 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
385 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
386 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
387 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
388 9 หม่x อมx
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
389 a อมx หม่x
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
390 b ちカヨは
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
391 c x ¬€x
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
392 d 天使x
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
393 e y
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
394 f z
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
395 g a啷bb
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
396 j 0123❤x
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
397 k combinations
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
398 l äö üᾱ̆́
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
399 END
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
400
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
401 new
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
402 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
403 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
404 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
405 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
406 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
407 set nomagic
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
408 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
409 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
410 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
411 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
412 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
413 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
414 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
415 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
416 set magic
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(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
418 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
419 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
420 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
421
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
422 " 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
423 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
424 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
425
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
426 " 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
427 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
428 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
429
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
430 " 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
431 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
432 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
433
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
434 " 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
435 " c
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
436 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
437 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
438 " d
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
439 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
440 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
441 " e
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
442 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
443 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
444 " f
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
445 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
446 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
447 " g
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
448 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
449 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
450
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
451 " 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
452 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
453 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
454 " k
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
455 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
456 @w
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
457 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
458
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
459 close!
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
460 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
461
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
462 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
463 set regexpengine=1
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=2
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
466 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
467 set regexpengine&
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
468 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
469
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
470 " 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
471 " 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
472 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
473 new
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
474 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
475 s/ \?/ /g
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
476 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
477 close!
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
478 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
479
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
480 " 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
481 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
482 new
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, 2))
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("אבגד", "..", 0, 2))
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
485 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
486 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
487 close!
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
488 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
489
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
490 " 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
491 " 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
492 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
493 new
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
494 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
495 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
496 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
497 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
498 close!
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
499 endfunc
c9a1b3b66fb7 patch 8.2.1295: tests 44 and 99 are old style
Bram Moolenaar <Bram@vim.org>
parents: 21407
diff changeset
500
23262
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
501 " 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
502 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
503 new
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 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
505 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
506 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
507 bwipe!
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
508 endfunc
dca9e6b931d3 patch 8.2.2177: pattern "^" does not match if first character is combining
Bram Moolenaar <Bram@vim.org>
parents: 22476
diff changeset
509
23471
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
510 " 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
511 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
512 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
513
23471
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
514 " 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
515 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
516 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
517 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
518 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
519 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
520 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
521 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
522 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
523 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
524 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
525 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
526 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
527
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
528 " 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
529 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
530 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
531 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
532 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
533 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
534 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
535 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
536 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
537 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
538 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
539
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
540 " 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
541 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
542 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
543 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
544 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
545 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
546 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
547 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
548 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
549 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
550 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
551
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
552 " clean up
27829
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
553 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
554 bwipe!
a7cdfc8e4b6e patch 8.2.2278: falling back to old regexp engine can some patterns
Bram Moolenaar <Bram@vim.org>
parents: 23262
diff changeset
555 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
556
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
557 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
558 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
559 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
560 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
561 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
562 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
563 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
564
29527
e7158d889784 patch 9.0.0105: illegal memory access when pattern starts with illegal byte
Bram Moolenaar <Bram@vim.org>
parents: 27835
diff changeset
565 func Test_match_illegal_byte()
29529
893f448af76d patch 9.0.0106: illegal byte regexp test doesn't fail when fix is reversed
Bram Moolenaar <Bram@vim.org>
parents: 29527
diff changeset
566 " Text has illegal bytes which need to be set explicitly
893f448af76d patch 9.0.0106: illegal byte regexp test doesn't fail when fix is reversed
Bram Moolenaar <Bram@vim.org>
parents: 29527
diff changeset
567 let lines = ["norm :set no\x01\<CR>", "silent n\xff", "silent norm :b\xff\<CR>"]
29527
e7158d889784 patch 9.0.0105: illegal memory access when pattern starts with illegal byte
Bram Moolenaar <Bram@vim.org>
parents: 27835
diff changeset
568 call writefile(lines, 'Xregexp')
e7158d889784 patch 9.0.0105: illegal memory access when pattern starts with illegal byte
Bram Moolenaar <Bram@vim.org>
parents: 27835
diff changeset
569 call system(GetVimCommand() .. ' -X -Z -e -s -S Xregexp -c qa!')
e7158d889784 patch 9.0.0105: illegal memory access when pattern starts with illegal byte
Bram Moolenaar <Bram@vim.org>
parents: 27835
diff changeset
570
e7158d889784 patch 9.0.0105: illegal memory access when pattern starts with illegal byte
Bram Moolenaar <Bram@vim.org>
parents: 27835
diff changeset
571 call delete('Xregexp')
e7158d889784 patch 9.0.0105: illegal memory access when pattern starts with illegal byte
Bram Moolenaar <Bram@vim.org>
parents: 27835
diff changeset
572 endfunc
e7158d889784 patch 9.0.0105: illegal memory access when pattern starts with illegal byte
Bram Moolenaar <Bram@vim.org>
parents: 27835
diff changeset
573
27829
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
574 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
575 set regexpengine=1
27835
0815a43eebce patch 8.2.4443: regexp pattern test fails on Mac
Bram Moolenaar <Bram@vim.org>
parents: 27829
diff changeset
576 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
577 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
578 bwipe!
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
579 set regexpengine=0
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
580 endfunc
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
581
0138ce89703b patch 8.2.4440: crash with specific regexp pattern and string
Bram Moolenaar <Bram@vim.org>
parents: 27490
diff changeset
582
18906
bb87c5c1e29b patch 8.2.0014: test69 and test95 are old style
Bram Moolenaar <Bram@vim.org>
parents: 17444
diff changeset
583 " vim: shiftwidth=2 sts=2 expandtab