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