blob: db16f057c8a59e3b721f20120d154ea20cd7f31b [file] [log] [blame]
Bram Moolenaar292eff02017-07-11 21:46:28 +02001" Tests for regexp with backslash and other special characters inside []
2" Also test backslash for hex/octal numbered character.
Bram Moolenaarcada7892018-01-31 19:30:24 +01003"
Bram Moolenaarcada7892018-01-31 19:30:24 +01004
5scriptencoding utf-8
Bram Moolenaar292eff02017-07-11 21:46:28 +02006
7function RunSTest(value, calls, expected)
8 new
9 call feedkeys("i" . a:value, "mx")
10 exec a:calls
11 call assert_equal(a:expected, getline(1), printf("wrong result for %s", a:calls))
12 quit!
13endfunction
14
15function RunXTest(value, search_exp, expected)
16 new
17 call feedkeys("i" . a:value, "mx")
18 call feedkeys("gg" . a:search_exp . "\nx", "mx")
19 call assert_equal(a:expected, getline(1), printf("wrong result for %s", a:search_exp))
20 quit!
21endfunction
22
23
24function Test_x_search()
25 let res = "test text test text"
26 call RunXTest("test \\text test text", "/[\\x]", res)
27 call RunXTest("test \ttext test text", "/[\\t\\]]", res)
28 call RunXTest("test text ]test text", "/[]y]", res)
29 call RunXTest("test ]text test text", "/[\\]]", res)
30 call RunXTest("test text te^st text", "/[y^]", res)
31 call RunXTest("test te$xt test text", "/[$y]", res)
32 call RunXTest("test taext test text", "/[\\x61]", res)
33 call RunXTest("test tbext test text","/[\\x60-\\x64]", res)
34 call RunXTest("test 5text test text","/[\\x785]", res)
35 call RunXTest("testc text test text","/[\\o143]", res)
36 call RunXTest("tesdt text test text","/[\\o140-\\o144]", res)
37 call RunXTest("test7 text test text", "/[\\o417]", res)
38 call RunXTest("test text tBest text", "/\\%x42", res)
39 call RunXTest("test text teCst text", "/\\%o103", res)
40 call RunXTest("test text \<C-V>x00test text", "/[\\x00]", res)
41endfunction
42
43function Test_s_search()
44 let res = "test text test text"
45 call RunSTest("test te\<C-V>x00xt t\<C-V>x04est t\<C-V>x10ext", "s/[\\x00-\\x10]//g", res)
46 call RunSTest("test \\xyztext test text", "s/[\\x-z]\\+//", res)
47 call RunSTest("test text tev\\uyst text", "s/[\\u-z]\\{2,}//", res)
48 call RunSTest("xx aaaaa xx a", "s/\\(a\\)\\+//", "xx xx a")
49 call RunSTest("xx aaaaa xx a", "s/\\(a*\\)\\+//", "xx aaaaa xx a")
50 call RunSTest("xx aaaaa xx a", "s/\\(a*\\)*//", "xx aaaaa xx a")
51 call RunSTest("xx aaaaa xx", "s/\\(a\\)\\{2,3}/A/", "xx Aaa xx")
52 call RunSTest("xx aaaaa xx", "s/\\(a\\)\\{-2,3}/A/", "xx Aaaa xx")
53 call RunSTest("xx aaa12aa xx", "s/\\(a\\)*\\(12\\)\\@>/A/", "xx Aaa xx")
54 call RunSTest("xx foobar xbar xx", "s/\\(foo\\)\\@<!bar/A/", "xx foobar xA xx")
55 call RunSTest("xx an file xx", "s/\\(an\\_s\\+\\)\\@<=file/A/", "xx an A xx")
56 call RunSTest("x= 9;", "s/^\\(\\h\\w*\\%(->\\|\\.\\)\\=\\)\\+=/XX/", "XX 9;")
57 call RunSTest("hh= 77;", "s/^\\(\\h\\w*\\%(->\\|\\.\\)\\=\\)\\+=/YY/", "YY 77;")
58 call RunSTest(" aaa ", "s/aaa/xyz/", " xyz ")
59 call RunSTest(" xyz", "s/~/bcd/", " bcd")
60 call RunSTest(" bcdbcdbcd", "s/~\\+/BB/", " BB")
61endfunction
Bram Moolenaarcada7892018-01-31 19:30:24 +010062
63" Test character classes in regexp using regexpengine 0, 1, 2.
64func Test_regex_char_classes()
65 new
66 let save_enc = &encoding
67 set encoding=utf-8
68
69 let input = "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"
70
71 " Format is [cmd_to_run, expected_output]
72 let tests = [
73 \ [':s/\%#=0\d//g',
74 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
75 \ [':s/\%#=1\d//g',
76 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
77 \ [':s/\%#=2\d//g',
78 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
79 \ [':s/\%#=0[0-9]//g',
80 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
81 \ [':s/\%#=1[0-9]//g',
82 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
83 \ [':s/\%#=2[0-9]//g',
84 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
85 \ [':s/\%#=0\D//g',
86 \ "0123456789"],
87 \ [':s/\%#=1\D//g',
88 \ "0123456789"],
89 \ [':s/\%#=2\D//g',
90 \ "0123456789"],
91 \ [':s/\%#=0[^0-9]//g',
92 \ "0123456789"],
93 \ [':s/\%#=1[^0-9]//g',
94 \ "0123456789"],
95 \ [':s/\%#=2[^0-9]//g',
96 \ "0123456789"],
97 \ [':s/\%#=0\o//g',
98 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
99 \ [':s/\%#=1\o//g',
100 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
101 \ [':s/\%#=2\o//g',
102 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
103 \ [':s/\%#=0[0-7]//g',
104 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
105 \ [':s/\%#=1[0-7]//g',
106 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
107 \ [':s/\%#=2[0-7]//g',
108 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./89:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
109 \ [':s/\%#=0\O//g',
110 \ "01234567"],
111 \ [':s/\%#=1\O//g',
112 \ "01234567"],
113 \ [':s/\%#=2\O//g',
114 \ "01234567"],
115 \ [':s/\%#=0[^0-7]//g',
116 \ "01234567"],
117 \ [':s/\%#=1[^0-7]//g',
118 \ "01234567"],
119 \ [':s/\%#=2[^0-7]//g',
120 \ "01234567"],
121 \ [':s/\%#=0\x//g',
122 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
123 \ [':s/\%#=1\x//g',
124 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
125 \ [':s/\%#=2\x//g',
126 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
127 \ [':s/\%#=0[0-9A-Fa-f]//g',
128 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
129 \ [':s/\%#=1[0-9A-Fa-f]//g',
130 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
131 \ [':s/\%#=2[0-9A-Fa-f]//g',
132 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@GHIXYZ[\]^_`ghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
133 \ [':s/\%#=0\X//g',
134 \ "0123456789ABCDEFabcdef"],
135 \ [':s/\%#=1\X//g',
136 \ "0123456789ABCDEFabcdef"],
137 \ [':s/\%#=2\X//g',
138 \ "0123456789ABCDEFabcdef"],
139 \ [':s/\%#=0[^0-9A-Fa-f]//g',
140 \ "0123456789ABCDEFabcdef"],
141 \ [':s/\%#=1[^0-9A-Fa-f]//g',
142 \ "0123456789ABCDEFabcdef"],
143 \ [':s/\%#=2[^0-9A-Fa-f]//g',
144 \ "0123456789ABCDEFabcdef"],
145 \ [':s/\%#=0\w//g',
146 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
147 \ [':s/\%#=1\w//g',
148 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
149 \ [':s/\%#=2\w//g',
150 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
151 \ [':s/\%#=0[0-9A-Za-z_]//g',
152 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
153 \ [':s/\%#=1[0-9A-Za-z_]//g',
154 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
155 \ [':s/\%#=2[0-9A-Za-z_]//g',
156 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
157 \ [':s/\%#=0\W//g',
158 \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"],
159 \ [':s/\%#=1\W//g',
160 \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"],
161 \ [':s/\%#=2\W//g',
162 \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"],
163 \ [':s/\%#=0[^0-9A-Za-z_]//g',
164 \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"],
165 \ [':s/\%#=1[^0-9A-Za-z_]//g',
166 \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"],
167 \ [':s/\%#=2[^0-9A-Za-z_]//g',
168 \ "0123456789ABCDEFGHIXYZ_abcdefghiwxyz"],
169 \ [':s/\%#=0\h//g',
170 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
171 \ [':s/\%#=1\h//g',
172 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
173 \ [':s/\%#=2\h//g',
174 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
175 \ [':s/\%#=0[A-Za-z_]//g',
176 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
177 \ [':s/\%#=1[A-Za-z_]//g',
178 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
179 \ [':s/\%#=2[A-Za-z_]//g',
180 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
181 \ [':s/\%#=0\H//g',
182 \ "ABCDEFGHIXYZ_abcdefghiwxyz"],
183 \ [':s/\%#=1\H//g',
184 \ "ABCDEFGHIXYZ_abcdefghiwxyz"],
185 \ [':s/\%#=2\H//g',
186 \ "ABCDEFGHIXYZ_abcdefghiwxyz"],
187 \ [':s/\%#=0[^A-Za-z_]//g',
188 \ "ABCDEFGHIXYZ_abcdefghiwxyz"],
189 \ [':s/\%#=1[^A-Za-z_]//g',
190 \ "ABCDEFGHIXYZ_abcdefghiwxyz"],
191 \ [':s/\%#=2[^A-Za-z_]//g',
192 \ "ABCDEFGHIXYZ_abcdefghiwxyz"],
193 \ [':s/\%#=0\a//g',
194 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
195 \ [':s/\%#=1\a//g',
196 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
197 \ [':s/\%#=2\a//g',
198 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
199 \ [':s/\%#=0[A-Za-z]//g',
200 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
201 \ [':s/\%#=1[A-Za-z]//g',
202 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
203 \ [':s/\%#=2[A-Za-z]//g',
204 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
205 \ [':s/\%#=0\A//g',
206 \ "ABCDEFGHIXYZabcdefghiwxyz"],
207 \ [':s/\%#=1\A//g',
208 \ "ABCDEFGHIXYZabcdefghiwxyz"],
209 \ [':s/\%#=2\A//g',
210 \ "ABCDEFGHIXYZabcdefghiwxyz"],
211 \ [':s/\%#=0[^A-Za-z]//g',
212 \ "ABCDEFGHIXYZabcdefghiwxyz"],
213 \ [':s/\%#=1[^A-Za-z]//g',
214 \ "ABCDEFGHIXYZabcdefghiwxyz"],
215 \ [':s/\%#=2[^A-Za-z]//g',
216 \ "ABCDEFGHIXYZabcdefghiwxyz"],
217 \ [':s/\%#=0\l//g',
218 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
219 \ [':s/\%#=1\l//g',
220 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
221 \ [':s/\%#=2\l//g',
222 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
223 \ [':s/\%#=0[a-z]//g',
224 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
225 \ [':s/\%#=1[a-z]//g',
226 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
227 \ [':s/\%#=2[a-z]//g',
228 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
229 \ [':s/\%#=0\L//g',
230 \ "abcdefghiwxyz"],
231 \ [':s/\%#=1\L//g',
232 \ "abcdefghiwxyz"],
233 \ [':s/\%#=2\L//g',
234 \ "abcdefghiwxyz"],
235 \ [':s/\%#=0[^a-z]//g',
236 \ "abcdefghiwxyz"],
237 \ [':s/\%#=1[^a-z]//g',
238 \ "abcdefghiwxyz"],
239 \ [':s/\%#=2[^a-z]//g',
240 \ "abcdefghiwxyz"],
241 \ [':s/\%#=0\u//g',
242 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
243 \ [':s/\%#=1\u//g',
244 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
245 \ [':s/\%#=2\u//g',
246 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
247 \ [':s/\%#=0[A-Z]//g',
248 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
249 \ [':s/\%#=1[A-Z]//g',
250 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
251 \ [':s/\%#=2[A-Z]//g',
252 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./0123456789:;<=>?@[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
253 \ [':s/\%#=0\U//g',
254 \ "ABCDEFGHIXYZ"],
255 \ [':s/\%#=1\U//g',
256 \ "ABCDEFGHIXYZ"],
257 \ [':s/\%#=2\U//g',
258 \ "ABCDEFGHIXYZ"],
259 \ [':s/\%#=0[^A-Z]//g',
260 \ "ABCDEFGHIXYZ"],
261 \ [':s/\%#=1[^A-Z]//g',
262 \ "ABCDEFGHIXYZ"],
263 \ [':s/\%#=2[^A-Z]//g',
264 \ "ABCDEFGHIXYZ"],
265 \ [':s/\%#=0\%' . line('.') . 'l^\t...//g',
266 \ "!\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
267 \ [':s/\%#=1\%' . line('.') . 'l^\t...//g',
268 \ "!\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
269 \ [':s/\%#=2\%' . line('.') . 'l^\t...//g',
270 \ "!\"#$%&'()#+'-./0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
271 \ [':s/\%#=0[0-z]//g',
272 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
273 \ [':s/\%#=1[0-z]//g',
274 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
275 \ [':s/\%#=2[0-z]//g',
276 \ "\t\<C-L>\<C-M> !\"#$%&'()#+'-./{|}~\<C-?>\u0080\u0082\u0090\u009b¦±¼ÇÓé"],
277 \ [':s/\%#=0[^0-z]//g',
278 \ "0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz"],
279 \ [':s/\%#=1[^0-z]//g',
280 \ "0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz"],
281 \ [':s/\%#=2[^0-z]//g',
282 \ "0123456789:;<=>?@ABCDEFGHIXYZ[\]^_`abcdefghiwxyz"]
283 \]
284
285 for [cmd, expected] in tests
286 call append(0, input)
287 call cursor(1, 1)
288 exe cmd
289 call assert_equal(expected, getline(1), cmd)
290 endfor
291
292 let &encoding = save_enc
293 enew!
294 close
295endfunc
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +0200296
297" vim: shiftwidth=2 sts=2 expandtab