Mercurial > vim
comparison src/testdir/test_search.vim @ 18935:ed246d4c46ba v8.2.0028
patch 8.2.0028: searchpairpos() is not tested
Commit: https://github.com/vim/vim/commit/3ba35409a65b457d29a885a27b46b02a9aec6bcc
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Dec 21 22:00:50 2019 +0100
patch 8.2.0028: searchpairpos() is not tested
Problem: Searchpairpos() is not tested.
Solution: Add tests. Also improve searchpair() testing. (Dominique Pelle,
closes #5388)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 21 Dec 2019 22:15:03 +0100 |
parents | d7c47e45bcc3 |
children | 06ef1e438ac8 |
comparison
equal
deleted
inserted
replaced
18934:06e5fd575bbd | 18935:ed246d4c46ba |
---|---|
55 :1 | 55 :1 |
56 " seventh match | 56 " seventh match |
57 call feedkeys("/the".repeat("\<C-G>", 6)."\<cr>", 'tx') | 57 call feedkeys("/the".repeat("\<C-G>", 6)."\<cr>", 'tx') |
58 call assert_equal(' 8 them', getline('.')) | 58 call assert_equal(' 8 them', getline('.')) |
59 :1 | 59 :1 |
60 " eigth match | 60 " eighth match |
61 call feedkeys("/the".repeat("\<C-G>", 7)."\<cr>", 'tx') | 61 call feedkeys("/the".repeat("\<C-G>", 7)."\<cr>", 'tx') |
62 call assert_equal(' 9 these', getline('.')) | 62 call assert_equal(' 9 these', getline('.')) |
63 :1 | 63 :1 |
64 " no further match | 64 " no further match |
65 call feedkeys("/the".repeat("\<C-G>", 8)."\<cr>", 'tx') | 65 call feedkeys("/the".repeat("\<C-G>", 8)."\<cr>", 'tx') |
97 :1 | 97 :1 |
98 " seventh match | 98 " seventh match |
99 call feedkeys("/the".repeat("\<C-G>", 6)."\<cr>", 'tx') | 99 call feedkeys("/the".repeat("\<C-G>", 6)."\<cr>", 'tx') |
100 call assert_equal(' 8 them', getline('.')) | 100 call assert_equal(' 8 them', getline('.')) |
101 :1 | 101 :1 |
102 " eigth match | 102 " eighth match |
103 call feedkeys("/the".repeat("\<C-G>", 7)."\<cr>", 'tx') | 103 call feedkeys("/the".repeat("\<C-G>", 7)."\<cr>", 'tx') |
104 call assert_equal(' 9 these', getline('.')) | 104 call assert_equal(' 9 these', getline('.')) |
105 :1 | 105 :1 |
106 " back at first match | 106 " back at first match |
107 call feedkeys("/the".repeat("\<C-G>", 8)."\<cr>", 'tx') | 107 call feedkeys("/the".repeat("\<C-G>", 8)."\<cr>", 'tx') |
288 bwipe! | 288 bwipe! |
289 endfunc | 289 endfunc |
290 | 290 |
291 func Test_searchpair() | 291 func Test_searchpair() |
292 new | 292 new |
293 call setline(1, ['other code here', '', '[', '" cursor here', ']']) | 293 call setline(1, ['other code', 'here [', ' [', ' " cursor here', ' ]]']) |
294 | |
294 4 | 295 4 |
295 let a = searchpair('\[','',']','bW') | 296 call assert_equal(3, searchpair('\[', '', ']', 'bW')) |
296 call assert_equal(3, a) | 297 call assert_equal([0, 3, 2, 0], getpos('.')) |
298 4 | |
299 call assert_equal(2, searchpair('\[', '', ']', 'bWr')) | |
300 call assert_equal([0, 2, 6, 0], getpos('.')) | |
301 4 | |
302 call assert_equal(1, searchpair('\[', '', ']', 'bWm')) | |
303 call assert_equal([0, 3, 2, 0], getpos('.')) | |
304 4|norm ^ | |
305 call assert_equal(5, searchpair('\[', '', ']', 'Wn')) | |
306 call assert_equal([0, 4, 2, 0], getpos('.')) | |
307 4 | |
308 call assert_equal(2, searchpair('\[', '', ']', 'bW', | |
309 \ 'getline(".") =~ "^\\s*\["')) | |
310 call assert_equal([0, 2, 6, 0], getpos('.')) | |
297 set nomagic | 311 set nomagic |
298 4 | 312 4 |
299 let a = searchpair('\[','',']','bW') | 313 call assert_equal(3, searchpair('\[', '', ']', 'bW')) |
300 call assert_equal(3, a) | 314 call assert_equal([0, 3, 2, 0], getpos('.')) |
301 set magic | 315 set magic |
316 4|norm ^ | |
317 call assert_equal(0, searchpair('{', '', '}', 'bW')) | |
318 call assert_equal([0, 4, 2, 0], getpos('.')) | |
319 | |
320 %d | |
321 call setline(1, ['if 1', ' if 2', ' else', ' endif 2', 'endif 1']) | |
322 | |
323 /\<if 1 | |
324 call assert_equal(5, searchpair('\<if\>', '\<else\>', '\<endif\>', 'W')) | |
325 call assert_equal([0, 5, 1, 0], getpos('.')) | |
326 /\<if 2 | |
327 call assert_equal(3, searchpair('\<if\>', '\<else\>', '\<endif\>', 'W')) | |
328 call assert_equal([0, 3, 3, 0], getpos('.')) | |
329 | |
330 q! | |
331 endfunc | |
332 | |
333 func Test_searchpairpos() | |
334 new | |
335 call setline(1, ['other code', 'here [', ' [', ' " cursor here', ' ]]']) | |
336 | |
337 4 | |
338 call assert_equal([3, 2], searchpairpos('\[', '', ']', 'bW')) | |
339 call assert_equal([0, 3, 2, 0], getpos('.')) | |
340 4 | |
341 call assert_equal([2, 6], searchpairpos('\[', '', ']', 'bWr')) | |
342 call assert_equal([0, 2, 6, 0], getpos('.')) | |
343 4|norm ^ | |
344 call assert_equal([5, 2], searchpairpos('\[', '', ']', 'Wn')) | |
345 call assert_equal([0, 4, 2, 0], getpos('.')) | |
346 4 | |
347 call assert_equal([2, 6], searchpairpos('\[', '', ']', 'bW', | |
348 \ 'getline(".") =~ "^\\s*\["')) | |
349 call assert_equal([0, 2, 6, 0], getpos('.')) | |
350 4 | |
351 call assert_equal([2, 6], searchpairpos('\[', '', ']', 'bWr')) | |
352 call assert_equal([0, 2, 6, 0], getpos('.')) | |
353 set nomagic | |
354 4 | |
355 call assert_equal([3, 2], searchpairpos('\[', '', ']', 'bW')) | |
356 call assert_equal([0, 3, 2, 0], getpos('.')) | |
357 set magic | |
358 4|norm ^ | |
359 call assert_equal([0, 0], searchpairpos('{', '', '}', 'bW')) | |
360 call assert_equal([0, 4, 2, 0], getpos('.')) | |
361 | |
362 %d | |
363 call setline(1, ['if 1', ' if 2', ' else', ' endif 2', 'endif 1']) | |
364 /\<if 1 | |
365 call assert_equal([5, 1], searchpairpos('\<if\>', '\<else\>', '\<endif\>', 'W')) | |
366 call assert_equal([0, 5, 1, 0], getpos('.')) | |
367 /\<if 2 | |
368 call assert_equal([3, 3], searchpairpos('\<if\>', '\<else\>', '\<endif\>', 'W')) | |
369 call assert_equal([0, 3, 3, 0], getpos('.')) | |
370 | |
302 q! | 371 q! |
303 endfunc | 372 endfunc |
304 | 373 |
305 func Test_searchpair_errors() | 374 func Test_searchpair_errors() |
306 call assert_fails("call searchpair([0], 'middle', 'end', 'bW', 'skip', 99, 100)", 'E730: using List as a String') | 375 call assert_fails("call searchpair([0], 'middle', 'end', 'bW', 'skip', 99, 100)", 'E730: using List as a String') |
308 call assert_fails("call searchpair('start', 'middle', {'one': 1}, 'bW', 'skip', 99, 100)", 'E731: using Dictionary as a String') | 377 call assert_fails("call searchpair('start', 'middle', {'one': 1}, 'bW', 'skip', 99, 100)", 'E731: using Dictionary as a String') |
309 call assert_fails("call searchpair('start', 'middle', 'end', 'flags', 'skip', 99, 100)", 'E475: Invalid argument: flags') | 378 call assert_fails("call searchpair('start', 'middle', 'end', 'flags', 'skip', 99, 100)", 'E475: Invalid argument: flags') |
310 call assert_fails("call searchpair('start', 'middle', 'end', 'bW', 0, 99, 100)", 'E475: Invalid argument: 0') | 379 call assert_fails("call searchpair('start', 'middle', 'end', 'bW', 0, 99, 100)", 'E475: Invalid argument: 0') |
311 call assert_fails("call searchpair('start', 'middle', 'end', 'bW', 'func', -99, 100)", 'E475: Invalid argument: -99') | 380 call assert_fails("call searchpair('start', 'middle', 'end', 'bW', 'func', -99, 100)", 'E475: Invalid argument: -99') |
312 call assert_fails("call searchpair('start', 'middle', 'end', 'bW', 'func', 99, -100)", 'E475: Invalid argument: -100') | 381 call assert_fails("call searchpair('start', 'middle', 'end', 'bW', 'func', 99, -100)", 'E475: Invalid argument: -100') |
382 call assert_fails("call searchpair('start', 'middle', 'end', 'e')", 'E475: Invalid argument: e') | |
383 call assert_fails("call searchpair('start', 'middle', 'end', 'sn')", 'E475: Invalid argument: sn') | |
384 endfunc | |
385 | |
386 func Test_searchpairpos_errors() | |
387 call assert_fails("call searchpairpos([0], 'middle', 'end', 'bW', 'skip', 99, 100)", 'E730: using List as a String') | |
388 call assert_fails("call searchpairpos('start', {-> 0}, 'end', 'bW', 'skip', 99, 100)", 'E729: using Funcref as a String') | |
389 call assert_fails("call searchpairpos('start', 'middle', {'one': 1}, 'bW', 'skip', 99, 100)", 'E731: using Dictionary as a String') | |
390 call assert_fails("call searchpairpos('start', 'middle', 'end', 'flags', 'skip', 99, 100)", 'E475: Invalid argument: flags') | |
391 call assert_fails("call searchpairpos('start', 'middle', 'end', 'bW', 0, 99, 100)", 'E475: Invalid argument: 0') | |
392 call assert_fails("call searchpairpos('start', 'middle', 'end', 'bW', 'func', -99, 100)", 'E475: Invalid argument: -99') | |
393 call assert_fails("call searchpairpos('start', 'middle', 'end', 'bW', 'func', 99, -100)", 'E475: Invalid argument: -100') | |
394 call assert_fails("call searchpairpos('start', 'middle', 'end', 'e')", 'E475: Invalid argument: e') | |
395 call assert_fails("call searchpairpos('start', 'middle', 'end', 'sn')", 'E475: Invalid argument: sn') | |
313 endfunc | 396 endfunc |
314 | 397 |
315 func Test_searchpair_skip() | 398 func Test_searchpair_skip() |
316 func Zero() | 399 func Zero() |
317 return 0 | 400 return 0 |
318 endfunc | 401 endfunc |
319 func Partial(x) | 402 func Partial(x) |
320 return a:x | 403 return a:x |
321 endfunc | 404 endfunc |
322 new | 405 new |
323 call setline(1, ['{', 'foo', 'foo', 'foo', '}']) | 406 call setline(1, ['{', 'foo', 'foo', 'foo', '}']) |
324 3 | call assert_equal(1, searchpair('{', '', '}', 'bWn', '')) | 407 3 | call assert_equal(1, searchpair('{', '', '}', 'bWn', '')) |
325 3 | call assert_equal(1, searchpair('{', '', '}', 'bWn', '0')) | 408 3 | call assert_equal(1, searchpair('{', '', '}', 'bWn', '0')) |
1182 endfunc | 1265 endfunc |
1183 | 1266 |
1184 " This was causing E874. Also causes an invalid read? | 1267 " This was causing E874. Also causes an invalid read? |
1185 func Test_look_behind() | 1268 func Test_look_behind() |
1186 new | 1269 new |
1187 call setline(1, '0\|\&\n\@<=') | 1270 call setline(1, '0\|\&\n\@<=') |
1188 call search(getline(".")) | 1271 call search(getline(".")) |
1189 bwipe! | 1272 bwipe! |
1190 endfunc | 1273 endfunc |
1191 | 1274 |
1192 func Test_search_sentence() | 1275 func Test_search_sentence() |
1211 endfunc | 1294 endfunc |
1212 | 1295 |
1213 func Test_search_Ctrl_L_combining() | 1296 func Test_search_Ctrl_L_combining() |
1214 " Make sure, that Ctrl-L works correctly with combining characters. | 1297 " Make sure, that Ctrl-L works correctly with combining characters. |
1215 " It uses an artificial example of an 'a' with 4 combining chars: | 1298 " It uses an artificial example of an 'a' with 4 combining chars: |
1216 " 'a' U+0061 Dec:97 LATIN SMALL LETTER A a /\%u61\Z "\u0061" | 1299 " 'a' U+0061 Dec:97 LATIN SMALL LETTER A a /\%u61\Z "\u0061" |
1217 " ' ̀' U+0300 Dec:768 COMBINING GRAVE ACCENT ̀ /\%u300\Z "\u0300" | 1300 " ' ̀' U+0300 Dec:768 COMBINING GRAVE ACCENT ̀ /\%u300\Z "\u0300" |
1218 " ' ́' U+0301 Dec:769 COMBINING ACUTE ACCENT ́ /\%u301\Z "\u0301" | 1301 " ' ́' U+0301 Dec:769 COMBINING ACUTE ACCENT ́ /\%u301\Z "\u0301" |
1219 " ' ̇' U+0307 Dec:775 COMBINING DOT ABOVE ̇ /\%u307\Z "\u0307" | 1302 " ' ̇' U+0307 Dec:775 COMBINING DOT ABOVE ̇ /\%u307\Z "\u0307" |
1220 " ' ̣' U+0323 Dec:803 COMBINING DOT BELOW ̣ /\%u323 "\u0323" | 1303 " ' ̣' U+0323 Dec:803 COMBINING DOT BELOW ̣ /\%u323 "\u0323" |
1221 " Those should also appear on the commandline | 1304 " Those should also appear on the commandline |
1222 if !exists('+incsearch') | 1305 if !exists('+incsearch') |
1223 return | 1306 return |
1224 endif | 1307 endif |
1225 call Cmdline3_prep() | 1308 call Cmdline3_prep() |