annotate src/testdir/test_regexp_latin.vim @ 26843:1e3c49c09260 v8.2.3950

patch 8.2.3950: going beyond the end of the line with /%V Commit: https://github.com/vim/vim/commit/94f3192b03ed27474db80b4d3a409e107140738b Author: Bram Moolenaar <Bram@vim.org> Date: Thu Dec 30 15:29:18 2021 +0000 patch 8.2.3950: going beyond the end of the line with /\%V Problem: Going beyond the end of the line with /\%V. Solution: Check for valid column in getvcol().
author Bram Moolenaar <Bram@vim.org>
date Thu, 30 Dec 2021 16:30:04 +0100
parents 48d6f187e9c0
children 6f43253463cc
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 latin1 encoding
21765
08940efa6b4e patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents: 21265
diff changeset
2
8825
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
3 set encoding=latin1
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
4 scriptencoding latin1
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
5
19249
2a017e9dc6da patch 8.2.0183: tests fail when the float feature is disabled
Bram Moolenaar <Bram@vim.org>
parents: 18898
diff changeset
6 source check.vim
2a017e9dc6da patch 8.2.0183: tests fail when the float feature is disabled
Bram Moolenaar <Bram@vim.org>
parents: 18898
diff changeset
7
8825
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 func s:equivalence_test()
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 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ñ oòóôõöø p q r s t uùúûü v w x yýÿ z"
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 let groups = split(str)
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 for group1 in groups
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 for c in split(group1, '\zs')
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 " 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
14 " character in group
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 call assert_match('^[[=' . c . '=]]*$', group1)
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16 for group2 in groups
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
17 if group2 != group1
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 " 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
19 " a character in any other group
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20 call assert_equal(-1, match(group2, '[[=' . c . '=]]'))
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21 endif
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
22 endfor
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
23 endfor
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
24 endfor
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25 endfunc
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
27 func Test_equivalence_re1()
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
28 set re=1
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
29 call s:equivalence_test()
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
30 endfunc
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
31
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
32 func Test_equivalence_re2()
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
33 set re=2
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
34 call s:equivalence_test()
318eaa6fa973 commit https://github.com/vim/vim/commit/22e421549d54147d003f6444de007cb1d73f1d27
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
35 endfunc
9890
064effd222a3 commit https://github.com/vim/vim/commit/f5a39447a8ebe162ee62caa2ee502cd0e65eecaa
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
36
064effd222a3 commit https://github.com/vim/vim/commit/f5a39447a8ebe162ee62caa2ee502cd0e65eecaa
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
37 func Test_recursive_substitute()
064effd222a3 commit https://github.com/vim/vim/commit/f5a39447a8ebe162ee62caa2ee502cd0e65eecaa
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
38 new
064effd222a3 commit https://github.com/vim/vim/commit/f5a39447a8ebe162ee62caa2ee502cd0e65eecaa
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
39 s/^/\=execute("s#^##gn")
064effd222a3 commit https://github.com/vim/vim/commit/f5a39447a8ebe162ee62caa2ee502cd0e65eecaa
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
40 " check we are now not in the sandbox
064effd222a3 commit https://github.com/vim/vim/commit/f5a39447a8ebe162ee62caa2ee502cd0e65eecaa
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
41 call setwinvar(1, 'myvar', 1)
064effd222a3 commit https://github.com/vim/vim/commit/f5a39447a8ebe162ee62caa2ee502cd0e65eecaa
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
42 bwipe!
064effd222a3 commit https://github.com/vim/vim/commit/f5a39447a8ebe162ee62caa2ee502cd0e65eecaa
Christian Brabandt <cb@256bit.org>
parents: 8825
diff changeset
43 endfunc
10168
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
44
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
45 func Test_nested_backrefs()
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
46 " Check example in change.txt.
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
47 new
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
48 for re in range(0, 2)
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
49 exe 'set re=' . re
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
50 call setline(1, 'aa ab x')
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
51 1s/\(\(a[a-d] \)*\)\(x\)/-\1- -\2- -\3-/
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
52 call assert_equal('-aa ab - -ab - -x-', getline(1))
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
53
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
54 call assert_equal('-aa ab - -ab - -x-', substitute('aa ab x', '\(\(a[a-d] \)*\)\(x\)', '-\1- -\2- -\3-', ''))
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
55 endfor
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
56 bwipe!
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
57 set re=0
3c37899baa8d commit https://github.com/vim/vim/commit/d563883a1fb5ec6cf4a2758c5e36ac1ff4e9bb3d
Christian Brabandt <cb@256bit.org>
parents: 9909
diff changeset
58 endfunc
10170
4acacf4081ce commit https://github.com/vim/vim/commit/16b3578f355282846f2600ce77fb344950f0b9ce
Christian Brabandt <cb@256bit.org>
parents: 10168
diff changeset
59
4acacf4081ce commit https://github.com/vim/vim/commit/16b3578f355282846f2600ce77fb344950f0b9ce
Christian Brabandt <cb@256bit.org>
parents: 10168
diff changeset
60 func Test_eow_with_optional()
4acacf4081ce commit https://github.com/vim/vim/commit/16b3578f355282846f2600ce77fb344950f0b9ce
Christian Brabandt <cb@256bit.org>
parents: 10168
diff changeset
61 let expected = ['abc def', 'abc', 'def', '', '', '', '', '', '', '']
4acacf4081ce commit https://github.com/vim/vim/commit/16b3578f355282846f2600ce77fb344950f0b9ce
Christian Brabandt <cb@256bit.org>
parents: 10168
diff changeset
62 for re in range(0, 2)
4acacf4081ce commit https://github.com/vim/vim/commit/16b3578f355282846f2600ce77fb344950f0b9ce
Christian Brabandt <cb@256bit.org>
parents: 10168
diff changeset
63 exe 'set re=' . re
4acacf4081ce commit https://github.com/vim/vim/commit/16b3578f355282846f2600ce77fb344950f0b9ce
Christian Brabandt <cb@256bit.org>
parents: 10168
diff changeset
64 let actual = matchlist('abc def', '\(abc\>\)\?\s*\(def\)')
4acacf4081ce commit https://github.com/vim/vim/commit/16b3578f355282846f2600ce77fb344950f0b9ce
Christian Brabandt <cb@256bit.org>
parents: 10168
diff changeset
65 call assert_equal(expected, actual)
4acacf4081ce commit https://github.com/vim/vim/commit/16b3578f355282846f2600ce77fb344950f0b9ce
Christian Brabandt <cb@256bit.org>
parents: 10168
diff changeset
66 endfor
4acacf4081ce commit https://github.com/vim/vim/commit/16b3578f355282846f2600ce77fb344950f0b9ce
Christian Brabandt <cb@256bit.org>
parents: 10168
diff changeset
67 endfunc
11525
14b6b79d685b patch 8.0.0645: no error for illegal back reference in NFA engine
Christian Brabandt <cb@256bit.org>
parents: 10170
diff changeset
68
14b6b79d685b patch 8.0.0645: no error for illegal back reference in NFA engine
Christian Brabandt <cb@256bit.org>
parents: 10170
diff changeset
69 func Test_backref()
14b6b79d685b patch 8.0.0645: no error for illegal back reference in NFA engine
Christian Brabandt <cb@256bit.org>
parents: 10170
diff changeset
70 new
14b6b79d685b patch 8.0.0645: no error for illegal back reference in NFA engine
Christian Brabandt <cb@256bit.org>
parents: 10170
diff changeset
71 call setline(1, ['one', 'two', 'three', 'four', 'five'])
14b6b79d685b patch 8.0.0645: no error for illegal back reference in NFA engine
Christian Brabandt <cb@256bit.org>
parents: 10170
diff changeset
72 call assert_equal(3, search('\%#=1\(e\)\1'))
14b6b79d685b patch 8.0.0645: no error for illegal back reference in NFA engine
Christian Brabandt <cb@256bit.org>
parents: 10170
diff changeset
73 call assert_equal(3, search('\%#=2\(e\)\1'))
14b6b79d685b patch 8.0.0645: no error for illegal back reference in NFA engine
Christian Brabandt <cb@256bit.org>
parents: 10170
diff changeset
74 call assert_fails('call search("\\%#=1\\(e\\1\\)")', 'E65:')
14b6b79d685b patch 8.0.0645: no error for illegal back reference in NFA engine
Christian Brabandt <cb@256bit.org>
parents: 10170
diff changeset
75 call assert_fails('call search("\\%#=2\\(e\\1\\)")', 'E65:')
14b6b79d685b patch 8.0.0645: no error for illegal back reference in NFA engine
Christian Brabandt <cb@256bit.org>
parents: 10170
diff changeset
76 bwipe!
14b6b79d685b patch 8.0.0645: no error for illegal back reference in NFA engine
Christian Brabandt <cb@256bit.org>
parents: 10170
diff changeset
77 endfunc
15486
b143545e3354 patch 8.1.0751: some regexp errors are not tested
Bram Moolenaar <Bram@vim.org>
parents: 11525
diff changeset
78
b143545e3354 patch 8.1.0751: some regexp errors are not tested
Bram Moolenaar <Bram@vim.org>
parents: 11525
diff changeset
79 func Test_multi_failure()
b143545e3354 patch 8.1.0751: some regexp errors are not tested
Bram Moolenaar <Bram@vim.org>
parents: 11525
diff changeset
80 set re=1
b143545e3354 patch 8.1.0751: some regexp errors are not tested
Bram Moolenaar <Bram@vim.org>
parents: 11525
diff changeset
81 call assert_fails('/a**', 'E61:')
b143545e3354 patch 8.1.0751: some regexp errors are not tested
Bram Moolenaar <Bram@vim.org>
parents: 11525
diff changeset
82 call assert_fails('/a*\+', 'E62:')
b143545e3354 patch 8.1.0751: some regexp errors are not tested
Bram Moolenaar <Bram@vim.org>
parents: 11525
diff changeset
83 call assert_fails('/a\{a}', 'E554:')
b143545e3354 patch 8.1.0751: some regexp errors are not tested
Bram Moolenaar <Bram@vim.org>
parents: 11525
diff changeset
84 set re=2
b143545e3354 patch 8.1.0751: some regexp errors are not tested
Bram Moolenaar <Bram@vim.org>
parents: 11525
diff changeset
85 call assert_fails('/a**', 'E871:')
b143545e3354 patch 8.1.0751: some regexp errors are not tested
Bram Moolenaar <Bram@vim.org>
parents: 11525
diff changeset
86 call assert_fails('/a*\+', 'E871:')
21265
6a4806e326dd patch 8.2.1183: assert_fails() checks the last error message
Bram Moolenaar <Bram@vim.org>
parents: 19969
diff changeset
87 call assert_fails('/a\{a}', 'E554:')
15486
b143545e3354 patch 8.1.0751: some regexp errors are not tested
Bram Moolenaar <Bram@vim.org>
parents: 11525
diff changeset
88 set re=0
b143545e3354 patch 8.1.0751: some regexp errors are not tested
Bram Moolenaar <Bram@vim.org>
parents: 11525
diff changeset
89 endfunc
15796
481452f6687c patch 8.1.0905: complicated regexp causes a crash
Bram Moolenaar <Bram@vim.org>
parents: 15486
diff changeset
90
481452f6687c patch 8.1.0905: complicated regexp causes a crash
Bram Moolenaar <Bram@vim.org>
parents: 15486
diff changeset
91 func Test_recursive_addstate()
481452f6687c patch 8.1.0905: complicated regexp causes a crash
Bram Moolenaar <Bram@vim.org>
parents: 15486
diff changeset
92 " This will call addstate() recursively until it runs into the limit.
481452f6687c patch 8.1.0905: complicated regexp causes a crash
Bram Moolenaar <Bram@vim.org>
parents: 15486
diff changeset
93 let lnum = search('\v((){328}){389}')
481452f6687c patch 8.1.0905: complicated regexp causes a crash
Bram Moolenaar <Bram@vim.org>
parents: 15486
diff changeset
94 call assert_equal(0, lnum)
481452f6687c patch 8.1.0905: complicated regexp causes a crash
Bram Moolenaar <Bram@vim.org>
parents: 15486
diff changeset
95 endfunc
15806
6a4e9d9f1d66 patch 8.1.0910: crash with tricky search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15796
diff changeset
96
6a4e9d9f1d66 patch 8.1.0910: crash with tricky search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15796
diff changeset
97 func Test_out_of_memory()
6a4e9d9f1d66 patch 8.1.0910: crash with tricky search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15796
diff changeset
98 new
6a4e9d9f1d66 patch 8.1.0910: crash with tricky search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15796
diff changeset
99 s/^/,n
6a4e9d9f1d66 patch 8.1.0910: crash with tricky search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15796
diff changeset
100 " This will be slow...
6a4e9d9f1d66 patch 8.1.0910: crash with tricky search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15796
diff changeset
101 call assert_fails('call search("\\v((n||<)+);")', 'E363:')
6a4e9d9f1d66 patch 8.1.0910: crash with tricky search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15796
diff changeset
102 endfunc
15854
4ac1c185b0b8 patch 8.1.0934: invalid memory access in search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15806
diff changeset
103
4ac1c185b0b8 patch 8.1.0934: invalid memory access in search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15806
diff changeset
104 func Test_get_equi_class()
4ac1c185b0b8 patch 8.1.0934: invalid memory access in search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15806
diff changeset
105 new
4ac1c185b0b8 patch 8.1.0934: invalid memory access in search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15806
diff changeset
106 " Incomplete equivalence class caused invalid memory access
4ac1c185b0b8 patch 8.1.0934: invalid memory access in search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15806
diff changeset
107 s/^/[[=
4ac1c185b0b8 patch 8.1.0934: invalid memory access in search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15806
diff changeset
108 call assert_equal(1, search(getline(1)))
15860
9cd9bf2897de patch 8.1.0937: invalid memory access in search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15856
diff changeset
109 s/.*/[[.
9cd9bf2897de patch 8.1.0937: invalid memory access in search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15856
diff changeset
110 call assert_equal(1, search(getline(1)))
15854
4ac1c185b0b8 patch 8.1.0934: invalid memory access in search pattern
Bram Moolenaar <Bram@vim.org>
parents: 15806
diff changeset
111 endfunc
15856
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
112
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
113 func Test_rex_init()
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
114 set noincsearch
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
115 set re=1
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
116 new
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
117 setlocal iskeyword=a-z
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
118 call setline(1, ['abc', 'ABC'])
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
119 call assert_equal(1, search('[[:keyword:]]'))
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
120 new
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
121 setlocal iskeyword=A-Z
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
122 call setline(1, ['abc', 'ABC'])
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
123 call assert_equal(2, search('[[:keyword:]]'))
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
124 bwipe!
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
125 bwipe!
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
126 set re=0
e44b7caaf373 patch 8.1.0935: old regexp engine may use invalid buffer
Bram Moolenaar <Bram@vim.org>
parents: 15854
diff changeset
127 endfunc
15876
0c49755f460e patch 8.1.0945: internal error when using pattern with NL in the range
Bram Moolenaar <Bram@vim.org>
parents: 15860
diff changeset
128
0c49755f460e patch 8.1.0945: internal error when using pattern with NL in the range
Bram Moolenaar <Bram@vim.org>
parents: 15860
diff changeset
129 func Test_range_with_newline()
0c49755f460e patch 8.1.0945: internal error when using pattern with NL in the range
Bram Moolenaar <Bram@vim.org>
parents: 15860
diff changeset
130 new
0c49755f460e patch 8.1.0945: internal error when using pattern with NL in the range
Bram Moolenaar <Bram@vim.org>
parents: 15860
diff changeset
131 call setline(1, "a")
0c49755f460e patch 8.1.0945: internal error when using pattern with NL in the range
Bram Moolenaar <Bram@vim.org>
parents: 15860
diff changeset
132 call assert_equal(0, search("[ -*\\n- ]"))
0c49755f460e patch 8.1.0945: internal error when using pattern with NL in the range
Bram Moolenaar <Bram@vim.org>
parents: 15860
diff changeset
133 call assert_equal(0, search("[ -*\\t-\\n]"))
0c49755f460e patch 8.1.0945: internal error when using pattern with NL in the range
Bram Moolenaar <Bram@vim.org>
parents: 15860
diff changeset
134 bwipe!
0c49755f460e patch 8.1.0945: internal error when using pattern with NL in the range
Bram Moolenaar <Bram@vim.org>
parents: 15860
diff changeset
135 endfunc
15904
fec4416adb80 patch 8.1.0958: compiling weird regexp pattern is very slow
Bram Moolenaar <Bram@vim.org>
parents: 15876
diff changeset
136
fec4416adb80 patch 8.1.0958: compiling weird regexp pattern is very slow
Bram Moolenaar <Bram@vim.org>
parents: 15876
diff changeset
137 func Test_pattern_compile_speed()
19249
2a017e9dc6da patch 8.2.0183: tests fail when the float feature is disabled
Bram Moolenaar <Bram@vim.org>
parents: 18898
diff changeset
138 CheckOption spellcapcheck
2a017e9dc6da patch 8.2.0183: tests fail when the float feature is disabled
Bram Moolenaar <Bram@vim.org>
parents: 18898
diff changeset
139 CheckFunction reltimefloat
2a017e9dc6da patch 8.2.0183: tests fail when the float feature is disabled
Bram Moolenaar <Bram@vim.org>
parents: 18898
diff changeset
140
15904
fec4416adb80 patch 8.1.0958: compiling weird regexp pattern is very slow
Bram Moolenaar <Bram@vim.org>
parents: 15876
diff changeset
141 let start = reltime()
fec4416adb80 patch 8.1.0958: compiling weird regexp pattern is very slow
Bram Moolenaar <Bram@vim.org>
parents: 15876
diff changeset
142 " this used to be very slow, not it should be about a second
fec4416adb80 patch 8.1.0958: compiling weird regexp pattern is very slow
Bram Moolenaar <Bram@vim.org>
parents: 15876
diff changeset
143 set spc=\\v(((((Nxxxxxxx&&xxxx){179})+)+)+){179}
fec4416adb80 patch 8.1.0958: compiling weird regexp pattern is very slow
Bram Moolenaar <Bram@vim.org>
parents: 15876
diff changeset
144 call assert_inrange(0.01, 10.0, reltimefloat(reltime(start)))
fec4416adb80 patch 8.1.0958: compiling weird regexp pattern is very slow
Bram Moolenaar <Bram@vim.org>
parents: 15876
diff changeset
145 set spc=
fec4416adb80 patch 8.1.0958: compiling weird regexp pattern is very slow
Bram Moolenaar <Bram@vim.org>
parents: 15876
diff changeset
146 endfunc
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
147
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
148 " Tests for regexp patterns without multi-byte support.
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
149 func Test_regexp_single_line_pat()
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
150 " tl is a List of Lists with:
19958
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
151 " regexp engines to test
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
152 " 0 - test with 'regexpengine' values 0 and 1
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
153 " 1 - test with 'regexpengine' values 0 and 2
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
154 " 2 - test with 'regexpengine' values 0, 1 and 2
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
155 " regexp pattern
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
156 " text to test the pattern on
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
157 " expected match (optional)
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
158 " expected submatch 1 (optional)
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
159 " expected submatch 2 (optional)
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
160 " etc.
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
161 " When there is no match use only the first two items.
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
162 let tl = []
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
163
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
164 call add(tl, [2, 'ab', 'aab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
165 call add(tl, [2, 'b', 'abcdef', 'b'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
166 call add(tl, [2, 'bc*', 'abccccdef', 'bcccc'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
167 call add(tl, [2, 'bc\{-}', 'abccccdef', 'b'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
168 call add(tl, [2, 'bc\{-}\(d\)', 'abccccdef', 'bccccd', 'd'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
169 call add(tl, [2, 'bc*', 'abbdef', 'b'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
170 call add(tl, [2, 'c*', 'ccc', 'ccc'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
171 call add(tl, [2, 'bc*', 'abdef', 'b'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
172 call add(tl, [2, 'c*', 'abdef', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
173 call add(tl, [2, 'bc\+', 'abccccdef', 'bcccc'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
174 call add(tl, [2, 'bc\+', 'abdef']) " no match
19969
b07672d13ff9 patch 8.2.0540: regexp and other code not tested
Bram Moolenaar <Bram@vim.org>
parents: 19958
diff changeset
175 " match escape character in a string
b07672d13ff9 patch 8.2.0540: regexp and other code not tested
Bram Moolenaar <Bram@vim.org>
parents: 19958
diff changeset
176 call add(tl, [2, '.\e.', "one\<Esc>two", "e\<Esc>t"])
b07672d13ff9 patch 8.2.0540: regexp and other code not tested
Bram Moolenaar <Bram@vim.org>
parents: 19958
diff changeset
177 " match backspace character in a string
b07672d13ff9 patch 8.2.0540: regexp and other code not tested
Bram Moolenaar <Bram@vim.org>
parents: 19958
diff changeset
178 call add(tl, [2, '.\b.', "one\<C-H>two", "e\<C-H>t"])
19958
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
179 " match newline character in a string
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
180 call add(tl, [2, 'o\nb', "foo\nbar", "o\nb"])
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
181
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
182 " operator \|
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
183 call add(tl, [2, 'a\|ab', 'cabd', 'a']) " alternation is ordered
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
184
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
185 call add(tl, [2, 'c\?', 'ccb', 'c'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
186 call add(tl, [2, 'bc\?', 'abd', 'b'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
187 call add(tl, [2, 'bc\?', 'abccd', 'bc'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
188
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
189 call add(tl, [2, '\va{1}', 'ab', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
190
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
191 call add(tl, [2, '\va{2}', 'aa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
192 call add(tl, [2, '\va{2}', 'caad', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
193 call add(tl, [2, '\va{2}', 'aba'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
194 call add(tl, [2, '\va{2}', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
195 call add(tl, [2, '\va{2}', 'abaa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
196 call add(tl, [2, '\va{2}', 'aaa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
197
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
198 call add(tl, [2, '\vb{1}', 'abca', 'b'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
199 call add(tl, [2, '\vba{2}', 'abaa', 'baa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
200 call add(tl, [2, '\vba{3}', 'aabaac'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
201
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
202 call add(tl, [2, '\v(ab){1}', 'ab', 'ab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
203 call add(tl, [2, '\v(ab){1}', 'dabc', 'ab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
204 call add(tl, [2, '\v(ab){1}', 'acb'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
205
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
206 call add(tl, [2, '\v(ab){0,2}', 'acb', "", ""])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
207 call add(tl, [2, '\v(ab){0,2}', 'ab', 'ab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
208 call add(tl, [2, '\v(ab){1,2}', 'ab', 'ab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
209 call add(tl, [2, '\v(ab){1,2}', 'ababc', 'abab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
210 call add(tl, [2, '\v(ab){2,4}', 'ababcab', 'abab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
211 call add(tl, [2, '\v(ab){2,4}', 'abcababa', 'abab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
212
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
213 call add(tl, [2, '\v(ab){2}', 'abab', 'abab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
214 call add(tl, [2, '\v(ab){2}', 'cdababe', 'abab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
215 call add(tl, [2, '\v(ab){2}', 'abac'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
216 call add(tl, [2, '\v(ab){2}', 'abacabab', 'abab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
217 call add(tl, [2, '\v((ab){2}){2}', 'abababab', 'abababab', 'abab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
218 call add(tl, [2, '\v((ab){2}){2}', 'abacabababab', 'abababab', 'abab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
219
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
220 call add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
221 call add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
222 call add(tl, [2, '\v(a{2}){1}', 'aaac', 'aa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
223 call add(tl, [2, '\v(a{2}){1}', 'daaac', 'aa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
224 call add(tl, [2, '\v(a{1}){2}', 'daaac', 'aa', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
225 call add(tl, [2, '\v(a{1}){2}', 'aaa', 'aa', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
226 call add(tl, [2, '\v(a{2})+', 'adaac', 'aa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
227 call add(tl, [2, '\v(a{2})+', 'aa', 'aa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
228 call add(tl, [2, '\v(a{2}){1}', 'aa', 'aa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
229 call add(tl, [2, '\v(a{1}){2}', 'aa', 'aa', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
230 call add(tl, [2, '\v(a{1}){1}', 'a', 'a', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
231 call add(tl, [2, '\v(a{2}){2}', 'aaaa', 'aaaa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
232 call add(tl, [2, '\v(a{2}){2}', 'aaabaaaa', 'aaaa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
233
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
234 call add(tl, [2, '\v(a+){2}', 'dadaac', 'aa', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
235 call add(tl, [2, '\v(a{3}){2}', 'aaaaaaa', 'aaaaaa', 'aaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
236
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
237 call add(tl, [2, '\v(a{1,2}){2}', 'daaac', 'aaa', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
238 call add(tl, [2, '\v(a{1,3}){2}', 'daaaac', 'aaaa', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
239 call add(tl, [2, '\v(a{1,3}){2}', 'daaaaac', 'aaaaa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
240 call add(tl, [2, '\v(a{1,3}){3}', 'daac'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
241 call add(tl, [2, '\v(a{1,2}){2}', 'dac'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
242 call add(tl, [2, '\v(a+)+', 'daac', 'aa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
243 call add(tl, [2, '\v(a+)+', 'aaa', 'aaa', 'aaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
244 call add(tl, [2, '\v(a+){1,2}', 'aaa', 'aaa', 'aaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
245 call add(tl, [2, '\v(a+)(a+)', 'aaa', 'aaa', 'aa', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
246 call add(tl, [2, '\v(a{3})+', 'daaaac', 'aaa', 'aaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
247 call add(tl, [2, '\v(a|b|c)+', 'aacb', 'aacb', 'b'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
248 call add(tl, [2, '\v(a|b|c){2}', 'abcb', 'ab', 'b'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
249 call add(tl, [2, '\v(abc){2}', 'abcabd', ])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
250 call add(tl, [2, '\v(abc){2}', 'abdabcabc','abcabc', 'abc'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
251
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
252 call add(tl, [2, 'a*', 'cc', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
253 call add(tl, [2, '\v(a*)+', 'cc', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
254 call add(tl, [2, '\v((ab)+)+', 'ab', 'ab', 'ab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
255 call add(tl, [2, '\v(((ab)+)+)+', 'ab', 'ab', 'ab', 'ab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
256 call add(tl, [2, '\v(((ab)+)+)+', 'dababc', 'abab', 'abab', 'abab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
257 call add(tl, [2, '\v(a{0,2})+', 'cc', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
258 call add(tl, [2, '\v(a*)+', '', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
259 call add(tl, [2, '\v((a*)+)+', '', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
260 call add(tl, [2, '\v((ab)*)+', '', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
261 call add(tl, [2, '\va{1,3}', 'aab', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
262 call add(tl, [2, '\va{2,3}', 'abaa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
263
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
264 call add(tl, [2, '\v((ab)+|c*)+', 'abcccaba', 'abcccab', '', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
265 call add(tl, [2, '\v(a{2})|(b{3})', 'bbabbbb', 'bbb', '', 'bbb'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
266 call add(tl, [2, '\va{2}|b{2}', 'abab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
267 call add(tl, [2, '\v(a)+|(c)+', 'bbacbaacbbb', 'a', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
268 call add(tl, [2, '\vab{2,3}c', 'aabbccccccccccccc', 'abbc'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
269 call add(tl, [2, '\vab{2,3}c', 'aabbbccccccccccccc', 'abbbc'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
270 call add(tl, [2, '\vab{2,3}cd{2,3}e', 'aabbbcddee', 'abbbcdde'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
271 call add(tl, [2, '\va(bc){2}d', 'aabcbfbc' ])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
272 call add(tl, [2, '\va*a{2}', 'a', ])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
273 call add(tl, [2, '\va*a{2}', 'aa', 'aa' ])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
274 call add(tl, [2, '\va*a{2}', 'aaa', 'aaa' ])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
275 call add(tl, [2, '\va*a{2}', 'bbbabcc', ])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
276 call add(tl, [2, '\va*b*|a*c*', 'a', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
277 call add(tl, [2, '\va{1}b{1}|a{1}b{1}', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
278
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
279 " submatches
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
280 call add(tl, [2, '\v(a)', 'ab', 'a', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
281 call add(tl, [2, '\v(a)(b)', 'ab', 'ab', 'a', 'b'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
282 call add(tl, [2, '\v(ab)(b)(c)', 'abbc', 'abbc', 'ab', 'b', 'c'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
283 call add(tl, [2, '\v((a)(b))', 'ab', 'ab', 'ab', 'a', 'b'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
284 call add(tl, [2, '\v(a)|(b)', 'ab', 'a', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
285
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
286 call add(tl, [2, '\v(a*)+', 'aaaa', 'aaaa', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
287 call add(tl, [2, 'x', 'abcdef'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
288
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
289 "
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
290 " Simple tests
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
291 "
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
292
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
293 " Search single groups
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
294 call add(tl, [2, 'ab', 'aab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
295 call add(tl, [2, 'ab', 'baced'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
296 call add(tl, [2, 'ab', ' ab ', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
297
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
298 " Search multi-modifiers
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
299 call add(tl, [2, 'x*', 'xcd', 'x'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
300 call add(tl, [2, 'x*', 'xxxxxxxxxxxxxxxxsofijiojgf', 'xxxxxxxxxxxxxxxx'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
301 " empty match is good
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
302 call add(tl, [2, 'x*', 'abcdoij', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
303 " no match here
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
304 call add(tl, [2, 'x\+', 'abcdoin'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
305 call add(tl, [2, 'x\+', 'abcdeoijdfxxiuhfij', 'xx'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
306 call add(tl, [2, 'x\+', 'xxxxx', 'xxxxx'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
307 call add(tl, [2, 'x\+', 'abc x siufhiush xxxxxxxxx', 'x'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
308 call add(tl, [2, 'x\=', 'x sdfoij', 'x'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
309 call add(tl, [2, 'x\=', 'abc sfoij', '']) " empty match is good
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
310 call add(tl, [2, 'x\=', 'xxxxxxxxx c', 'x'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
311 call add(tl, [2, 'x\?', 'x sdfoij', 'x'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
312 " empty match is good
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
313 call add(tl, [2, 'x\?', 'abc sfoij', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
314 call add(tl, [2, 'x\?', 'xxxxxxxxxx c', 'x'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
315
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
316 call add(tl, [2, 'a\{0,0}', 'abcdfdoij', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
317 " same thing as 'a?'
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
318 call add(tl, [2, 'a\{0,1}', 'asiubid axxxaaa', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
319 " same thing as 'a\{0,1}'
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
320 call add(tl, [2, 'a\{1,0}', 'asiubid axxxaaa', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
321 call add(tl, [2, 'a\{3,6}', 'aa siofuh'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
322 call add(tl, [2, 'a\{3,6}', 'aaaaa asfoij afaa', 'aaaaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
323 call add(tl, [2, 'a\{3,6}', 'aaaaaaaa', 'aaaaaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
324 call add(tl, [2, 'a\{0}', 'asoiuj', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
325 call add(tl, [2, 'a\{2}', 'aaaa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
326 call add(tl, [2, 'a\{2}', 'iuash fiusahfliusah fiushfilushfi uhsaifuh askfj nasfvius afg aaaa sfiuhuhiushf', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
327 call add(tl, [2, 'a\{2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
328 " same thing as 'a*'
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
329 call add(tl, [2, 'a\{0,}', 'oij sdigfusnf', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
330 call add(tl, [2, 'a\{0,}', 'aaaaa aa', 'aaaaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
331 call add(tl, [2, 'a\{2,}', 'sdfiougjdsafg'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
332 call add(tl, [2, 'a\{2,}', 'aaaaasfoij ', 'aaaaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
333 call add(tl, [2, 'a\{5,}', 'xxaaaaxxx '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
334 call add(tl, [2, 'a\{5,}', 'xxaaaaaxxx ', 'aaaaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
335 call add(tl, [2, 'a\{,0}', 'oidfguih iuhi hiu aaaa', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
336 call add(tl, [2, 'a\{,5}', 'abcd', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
337 call add(tl, [2, 'a\{,5}', 'aaaaaaaaaa', 'aaaaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
338 " leading star as normal char when \{} follows
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
339 call add(tl, [2, '^*\{4,}$', '***'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
340 call add(tl, [2, '^*\{4,}$', '****', '****'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
341 call add(tl, [2, '^*\{4,}$', '*****', '*****'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
342 " same thing as 'a*'
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
343 call add(tl, [2, 'a\{}', 'bbbcddiuhfcd', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
344 call add(tl, [2, 'a\{}', 'aaaaioudfh coisf jda', 'aaaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
345
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
346 call add(tl, [2, 'a\{-0,0}', 'abcdfdoij', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
347 " anti-greedy version of 'a?'
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
348 call add(tl, [2, 'a\{-0,1}', 'asiubid axxxaaa', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
349 call add(tl, [2, 'a\{-3,6}', 'aa siofuh'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
350 call add(tl, [2, 'a\{-3,6}', 'aaaaa asfoij afaa', 'aaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
351 call add(tl, [2, 'a\{-3,6}', 'aaaaaaaa', 'aaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
352 call add(tl, [2, 'a\{-0}', 'asoiuj', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
353 call add(tl, [2, 'a\{-2}', 'aaaa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
354 call add(tl, [2, 'a\{-2}', 'abcdefghijklmnopqrestuvwxyz1234567890'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
355 call add(tl, [2, 'a\{-0,}', 'oij sdigfusnf', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
356 call add(tl, [2, 'a\{-0,}', 'aaaaa aa', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
357 call add(tl, [2, 'a\{-2,}', 'sdfiougjdsafg'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
358 call add(tl, [2, 'a\{-2,}', 'aaaaasfoij ', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
359 call add(tl, [2, 'a\{-,0}', 'oidfguih iuhi hiu aaaa', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
360 call add(tl, [2, 'a\{-,5}', 'abcd', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
361 call add(tl, [2, 'a\{-,5}', 'aaaaaaaaaa', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
362 " anti-greedy version of 'a*'
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
363 call add(tl, [2, 'a\{-}', 'bbbcddiuhfcd', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
364 call add(tl, [2, 'a\{-}', 'aaaaioudfh coisf jda', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
365
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
366 " Test groups of characters and submatches
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
367 call add(tl, [2, '\(abc\)*', 'abcabcabc', 'abcabcabc', 'abc'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
368 call add(tl, [2, '\(ab\)\+', 'abababaaaaa', 'ababab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
369 call add(tl, [2, '\(abaaaaa\)*cd', 'cd', 'cd', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
370 call add(tl, [2, '\(test1\)\? \(test2\)\?', 'test1 test3', 'test1 ', 'test1', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
371 call add(tl, [2, '\(test1\)\= \(test2\) \(test4443\)\=', ' test2 test4443 yupiiiiiiiiiii', ' test2 test4443', '', 'test2', 'test4443'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
372 call add(tl, [2, '\(\(sub1\) hello \(sub 2\)\)', 'asterix sub1 hello sub 2 obelix', 'sub1 hello sub 2', 'sub1 hello sub 2', 'sub1', 'sub 2'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
373 call add(tl, [2, '\(\(\(yyxxzz\)\)\)', 'abcdddsfiusfyyzzxxyyxxzz', 'yyxxzz', 'yyxxzz', 'yyxxzz', 'yyxxzz'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
374 call add(tl, [2, '\v((ab)+|c+)+', 'abcccaba', 'abcccab', 'ab', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
375 call add(tl, [2, '\v((ab)|c*)+', 'abcccaba', 'abcccab', '', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
376 call add(tl, [2, '\v(a(c*)+b)+', 'acbababaaa', 'acbabab', 'ab', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
377 call add(tl, [2, '\v(a|b*)+', 'aaaa', 'aaaa', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
378 call add(tl, [2, '\p*', 'aá ', 'aá '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
379
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
380 " Test greedy-ness and lazy-ness
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
381 call add(tl, [2, 'a\{-2,7}','aaaaaaaaaaaaa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
382 call add(tl, [2, 'a\{-2,7}x','aaaaaaaaax', 'aaaaaaax'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
383 call add(tl, [2, 'a\{2,7}','aaaaaaaaaaaaaaaaaaaa', 'aaaaaaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
384 call add(tl, [2, 'a\{2,7}x','aaaaaaaaax', 'aaaaaaax'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
385 call add(tl, [2, '\vx(.{-,8})yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz','ayxa','xayzxayz'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
386 call add(tl, [2, '\vx(.*)yz(.*)','xayxayzxayzxayz','xayxayzxayzxayz', 'ayxayzxayzxa',''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
387 call add(tl, [2, '\v(a{1,2}){-2,3}','aaaaaaa','aaaa','aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
388 call add(tl, [2, '\v(a{-1,3})+', 'aa', 'aa', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
389 call add(tl, [2, '^\s\{-}\zs\( x\|x$\)', ' x', ' x', ' x'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
390 call add(tl, [2, '^\s\{-}\zs\(x\| x$\)', ' x', ' x', ' x'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
391 call add(tl, [2, '^\s\{-}\ze\(x\| x$\)', ' x', '', ' x'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
392 call add(tl, [2, '^\(\s\{-}\)\(x\| x$\)', ' x', ' x', '', ' x'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
393
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
394 " Test Character classes
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
395 call add(tl, [2, '\d\+e\d\d','test 10e23 fd','10e23'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
396
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
397 " Test collections and character range []
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
398 call add(tl, [2, '\v[a]', 'abcd', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
399 call add(tl, [2, 'a[bcd]', 'abcd', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
400 call add(tl, [2, 'a[b-d]', 'acbd', 'ac'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
401 call add(tl, [2, '[a-d][e-f][x-x]d', 'cexdxx', 'cexd'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
402 call add(tl, [2, '\v[[:alpha:]]+', 'abcdefghijklmnopqrstuvwxyz6','abcdefghijklmnopqrstuvwxyz'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
403 call add(tl, [2, '[[:alpha:]\+]', '6x8','x'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
404 call add(tl, [2, '[^abc]\+','abcabcabc'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
405 call add(tl, [2, '[^abc]','defghiasijvoinasoiunbvb','d'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
406 call add(tl, [2, '[^abc]\+','ddddddda','ddddddd'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
407 call add(tl, [2, '[^a-d]\+','aaaAAAZIHFNCddd','AAAZIHFNC'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
408 call add(tl, [2, '[a-f]*','iiiiiiii',''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
409 call add(tl, [2, '[a-f]*','abcdefgh','abcdef'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
410 call add(tl, [2, '[^a-f]\+','abcdefgh','gh'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
411 call add(tl, [2, '[a-c]\{-3,6}','abcabc','abc'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
412 call add(tl, [2, '[^[:alpha:]]\+','abcccadfoij7787ysf287yrnccdu','7787'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
413 call add(tl, [2, '[-a]', '-', '-'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
414 call add(tl, [2, '[a-]', '-', '-'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
415 call add(tl, [2, '[a-f]*\c','ABCDEFGH','ABCDEF'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
416 call add(tl, [2, '[abc][xyz]\c','-af-AF-BY--','BY'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
417 " filename regexp
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
418 call add(tl, [2, '[-./[:alnum:]_~]\+', 'log13.file', 'log13.file'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
419 " special chars
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
420 call add(tl, [2, '[\]\^\-\\]\+', '\^\\\-\---^', '\^\\\-\---^'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
421 " collation elem
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
422 call add(tl, [2, '[[.a.]]\+', 'aa', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
423 " middle of regexp
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
424 call add(tl, [2, 'abc[0-9]*ddd', 'siuhabc ii'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
425 call add(tl, [2, 'abc[0-9]*ddd', 'adf abc44482ddd oijs', 'abc44482ddd'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
426 call add(tl, [2, '\_[0-9]\+', 'asfi9888u', '9888'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
427 call add(tl, [2, '[0-9\n]\+', 'asfi9888u', '9888'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
428 call add(tl, [2, '\_[0-9]\+', "asfi\n9888u", "\n9888"])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
429 call add(tl, [2, '\_f', " \na ", "\n"])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
430 call add(tl, [2, '\_f\+', " \na ", "\na"])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
431 call add(tl, [2, '[0-9A-Za-z-_.]\+', " @0_a.A-{ ", "0_a.A-"])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
432
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
433 " Test start/end of line, start/end of file
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
434 call add(tl, [2, '^a.', "a_\nb ", "a_"])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
435 call add(tl, [2, '^a.', "b a \na_"])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
436 call add(tl, [2, '.a$', " a\n "])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
437 call add(tl, [2, '.a$', " a b\n_a", "_a"])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
438 call add(tl, [2, '\%^a.', "a a\na", "a "])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
439 call add(tl, [2, '\%^a', " a \na "])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
440 call add(tl, [2, '.a\%$', " a\n "])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
441 call add(tl, [2, '.a\%$', " a\n_a", "_a"])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
442
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
443 " Test recognition of character classes
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
444 call add(tl, [2, '[0-7]\+', 'x0123456789x', '01234567'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
445 call add(tl, [2, '[^0-7]\+', '0a;X+% 897', 'a;X+% 89'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
446 call add(tl, [2, '[0-9]\+', 'x0123456789x', '0123456789'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
447 call add(tl, [2, '[^0-9]\+', '0a;X+% 9', 'a;X+% '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
448 call add(tl, [2, '[0-9a-fA-F]\+', 'x0189abcdefg', '0189abcdef'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
449 call add(tl, [2, '[^0-9A-Fa-f]\+', '0189g;X+% ab', 'g;X+% '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
450 call add(tl, [2, '[a-z_A-Z0-9]\+', ';+aso_SfOij ', 'aso_SfOij'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
451 call add(tl, [2, '[^a-z_A-Z0-9]\+', 'aSo_;+% sfOij', ';+% '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
452 call add(tl, [2, '[a-z_A-Z]\+', '0abyz_ABYZ;', 'abyz_ABYZ'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
453 call add(tl, [2, '[^a-z_A-Z]\+', 'abAB_09;+% yzYZ', '09;+% '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
454 call add(tl, [2, '[a-z]\+', '0abcxyz1', 'abcxyz'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
455 call add(tl, [2, '[a-z]\+', 'AabxyzZ', 'abxyz'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
456 call add(tl, [2, '[^a-z]\+', 'a;X09+% x', ';X09+% '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
457 call add(tl, [2, '[^a-z]\+', 'abX0;%yz', 'X0;%'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
458 call add(tl, [2, '[a-zA-Z]\+', '0abABxzXZ9', 'abABxzXZ'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
459 call add(tl, [2, '[^a-zA-Z]\+', 'ab09_;+ XZ', '09_;+ '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
460 call add(tl, [2, '[A-Z]\+', 'aABXYZz', 'ABXYZ'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
461 call add(tl, [2, '[^A-Z]\+', 'ABx0;%YZ', 'x0;%'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
462 call add(tl, [2, '[a-z]\+\c', '0abxyzABXYZ;', 'abxyzABXYZ'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
463 call add(tl, [2, '[A-Z]\+\c', '0abABxzXZ9', 'abABxzXZ'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
464 call add(tl, [2, '\c[^a-z]\+', 'ab09_;+ XZ', '09_;+ '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
465 call add(tl, [2, '\c[^A-Z]\+', 'ab09_;+ XZ', '09_;+ '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
466 call add(tl, [2, '\C[^A-Z]\+', 'ABCOIJDEOIFNSD jsfoij sa', ' jsfoij sa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
467
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
468 " Tests for \z features
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
469 " match ends at \ze
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
470 call add(tl, [2, 'xx \ze test', 'xx '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
471 call add(tl, [2, 'abc\zeend', 'oij abcend', 'abc'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
472 call add(tl, [2, 'aa\zebb\|aaxx', ' aabb ', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
473 call add(tl, [2, 'aa\zebb\|aaxx', ' aaxx ', 'aaxx'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
474 call add(tl, [2, 'aabb\|aa\zebb', ' aabb ', 'aabb'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
475 call add(tl, [2, 'aa\zebb\|aaebb', ' aabb ', 'aa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
476 " match starts at \zs
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
477 call add(tl, [2, 'abc\zsdd', 'ddabcddxyzt', 'dd'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
478 call add(tl, [2, 'aa \zsax', ' ax'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
479 call add(tl, [2, 'abc \zsmatch\ze abc', 'abc abc abc match abc abc', 'match'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
480 call add(tl, [2, '\v(a \zsif .*){2}', 'a if then a if last', 'if last', 'a if last'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
481 call add(tl, [2, '\>\zs.', 'aword. ', '.'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
482 call add(tl, [2, '\s\+\ze\[/\|\s\zs\s\+', 'is [a t', ' '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
483
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
484 " Tests for \@= and \& features
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
485 call add(tl, [2, 'abc\@=', 'abc', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
486 call add(tl, [2, 'abc\@=cd', 'abcd', 'abcd'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
487 call add(tl, [2, 'abc\@=', 'ababc', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
488 " will never match, no matter the input text
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
489 call add(tl, [2, 'abcd\@=e', 'abcd'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
490 " will never match
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
491 call add(tl, [2, 'abcd\@=e', 'any text in here ... '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
492 call add(tl, [2, '\v(abc)@=..', 'xabcd', 'ab', 'abc'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
493 call add(tl, [2, '\(.*John\)\@=.*Bob', 'here is John, and here is B'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
494 call add(tl, [2, '\(John.*\)\@=.*Bob', 'John is Bobs friend', 'John is Bob', 'John is Bobs friend'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
495 call add(tl, [2, '\<\S\+\())\)\@=', '$((i=i+1))', 'i=i+1', '))'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
496 call add(tl, [2, '.*John\&.*Bob', 'here is John, and here is B'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
497 call add(tl, [2, '.*John\&.*Bob', 'John is Bobs friend', 'John is Bob'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
498 call add(tl, [2, '\v(test1)@=.*yep', 'this is a test1, yep it is', 'test1, yep', 'test1'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
499 call add(tl, [2, 'foo\(bar\)\@!', 'foobar'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
500 call add(tl, [2, 'foo\(bar\)\@!', 'foo bar', 'foo'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
501 call add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if then else'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
502 call add(tl, [2, 'if \(\(then\)\@!.\)*$', ' if else ', 'if else ', ' '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
503 call add(tl, [2, '\(foo\)\@!bar', 'foobar', 'bar'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
504 call add(tl, [2, '\(foo\)\@!...bar', 'foobar'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
505 call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' bar foo '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
506 call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo bar '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
507 call add(tl, [2, '^\%(.*bar\)\@!.*\zsfoo', ' foo xxx ', 'foo'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
508 call add(tl, [2, '[ ]\@!\p\%([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
509 call add(tl, [2, '[ ]\@!\p\([ ]\@!\p\)*:', 'implicit mappings:', 'mappings:', 's'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
510 call add(tl, [2, 'm\k\+_\@=\%(_\@!\k\)\@<=\k\+e', 'mx__xe', 'mx__xe'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
511 call add(tl, [2, '\%(\U\@<=S\k*\|S\l\)R', 'SuR', 'SuR'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
512
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
513 " Combining different tests and features
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
514 call add(tl, [2, '[[:alpha:]]\{-2,6}', '787abcdiuhsasiuhb4', 'ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
515 call add(tl, [2, '', 'abcd', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
516 call add(tl, [2, '\v(())', 'any possible text', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
517 call add(tl, [2, '\v%(ab(xyz)c)', ' abxyzc ', 'abxyzc', 'xyz'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
518 call add(tl, [2, '\v(test|)empty', 'tesempty', 'empty', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
519 call add(tl, [2, '\v(a|aa)(a|aa)', 'aaa', 'aa', 'a', 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
520
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
521 " \%u and friends
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
522 call add(tl, [2, '\%d32', 'yes no', ' '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
523 call add(tl, [2, '\%o40', 'yes no', ' '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
524 call add(tl, [2, '\%x20', 'yes no', ' '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
525 call add(tl, [2, '\%u0020', 'yes no', ' '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
526 call add(tl, [2, '\%U00000020', 'yes no', ' '])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
527 call add(tl, [2, '\%d0', "yes\x0ano", "\x0a"])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
528
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
529 "" \%[abc]
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
530 call add(tl, [2, 'foo\%[bar]', 'fobar'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
531 call add(tl, [2, 'foo\%[bar]', 'foobar', 'foobar'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
532 call add(tl, [2, 'foo\%[bar]', 'fooxx', 'foo'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
533 call add(tl, [2, 'foo\%[bar]', 'foobxx', 'foob'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
534 call add(tl, [2, 'foo\%[bar]', 'foobaxx', 'fooba'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
535 call add(tl, [2, 'foo\%[bar]', 'foobarxx', 'foobar'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
536 call add(tl, [2, 'foo\%[bar]x', 'foobxx', 'foobx'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
537 call add(tl, [2, 'foo\%[bar]x', 'foobarxx', 'foobarx'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
538 call add(tl, [2, '\%[bar]x', 'barxx', 'barx'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
539 call add(tl, [2, '\%[bar]x', 'bxx', 'bx'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
540 call add(tl, [2, '\%[bar]x', 'xxx', 'x'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
541 call add(tl, [2, 'b\%[[ao]r]', 'bar bor', 'bar'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
542 call add(tl, [2, 'b\%[[]]r]', 'b]r bor', 'b]r'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
543 call add(tl, [2, '@\%[\w\-]*', '<http://john.net/pandoc/>[@pandoc]', '@pandoc'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
544
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
545 " Alternatives, must use first longest match
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
546 call add(tl, [2, 'goo\|go', 'google', 'goo'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
547 call add(tl, [2, '\<goo\|\<go', 'google', 'goo'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
548 call add(tl, [2, '\<goo\|go', 'google', 'goo'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
549
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
550 " Back references
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
551 call add(tl, [2, '\(\i\+\) \1', ' abc abc', 'abc abc', 'abc'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
552 call add(tl, [2, '\(\i\+\) \1', 'xgoo goox', 'goo goo', 'goo'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
553 call add(tl, [2, '\(a\)\(b\)\(c\)\(dd\)\(e\)\(f\)\(g\)\(h\)\(i\)\1\2\3\4\5\6\7\8\9', 'xabcddefghiabcddefghix', 'abcddefghiabcddefghi', 'a', 'b', 'c', 'dd', 'e', 'f', 'g', 'h', 'i'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
554 call add(tl, [2, '\(\d*\)a \1b', ' a b ', 'a b', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
555 call add(tl, [2, '^.\(.\).\_..\1.', "aaa\naaa\nb", "aaa\naaa", 'a'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
556 call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.com', 'foo.bat/foo.com', 'bat'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
557 call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<!$', 'foo.bat/foo.bat'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
558 call add(tl, [2, '^.*\.\(.*\)/.\+\(\1\)\@<=$', 'foo.bat/foo.bat', 'foo.bat/foo.bat', 'bat', 'bat'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
559 call add(tl, [2, '\\\@<!\${\(\d\+\%(:.\{-}\)\?\\\@<!\)}', '2013-06-27${0}', '${0}', '0'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
560 call add(tl, [2, '^\(a*\)\1$', 'aaaaaaaa', 'aaaaaaaa', 'aaaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
561 call add(tl, [2, '^\(a\{-2,}\)\1\+$', 'aaaaaaaaa', 'aaaaaaaaa', 'aaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
562
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
563 " Look-behind with limit
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
564 call add(tl, [2, '<\@<=span.', 'xxspanxx<spanyyy', 'spany'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
565 call add(tl, [2, '<\@1<=span.', 'xxspanxx<spanyyy', 'spany'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
566 call add(tl, [2, '<\@2<=span.', 'xxspanxx<spanyyy', 'spany'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
567 call add(tl, [2, '\(<<\)\@<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<<'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
568 call add(tl, [2, '\(<<\)\@1<=span.', 'xxspanxxxx<spanxx<<spanyyy'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
569 call add(tl, [2, '\(<<\)\@2<=span.', 'xxspanxxxx<spanxx<<spanyyy', 'spany', '<<'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
570 call add(tl, [2, '\(foo\)\@<!bar.', 'xx foobar1 xbar2 xx', 'bar2'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
571
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
572 " look-behind match in front of a zero-width item
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
573 call add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" test header'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
574 call add(tl, [2, '\v\C%(<Last Changed:\s+)@<=.*$', '" Last Changed: 1970', '1970'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
575 call add(tl, [2, '\(foo\)\@<=\>', 'foobar'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
576 call add(tl, [2, '\(foo\)\@<=\>', 'barfoo', '', 'foo'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
577 call add(tl, [2, '\(foo\)\@<=.*', 'foobar', 'bar', 'foo'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
578
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
579 " complicated look-behind match
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
580 call add(tl, [2, '\(r\@<=\|\w\@<!\)\/', 'x = /word/;', '/'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
581 call add(tl, [2, '^[a-z]\+\ze \&\(asdf\)\@<!', 'foo bar', 'foo'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
582
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
583 "" \@>
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
584 call add(tl, [2, '\(a*\)\@>a', 'aaaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
585 call add(tl, [2, '\(a*\)\@>b', 'aaab', 'aaab', 'aaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
586 call add(tl, [2, '^\(.\{-}b\)\@>.', ' abcbd', ' abc', ' ab'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
587 call add(tl, [2, '\(.\{-}\)\(\)\@>$', 'abc', 'abc', 'abc', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
588 " TODO: BT engine does not restore submatch after failure
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
589 call add(tl, [1, '\(a*\)\@>a\|a\+', 'aaaa', 'aaaa'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
590
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
591 " "\_" prepended negated collection matches EOL
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
592 call add(tl, [2, '\_[^8-9]\+', "asfi\n9888", "asfi\n"])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
593 call add(tl, [2, '\_[^a]\+', "asfi\n9888", "sfi\n9888"])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
594
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
595 " Requiring lots of states.
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
596 call add(tl, [2, '[0-9a-zA-Z]\{8}-\([0-9a-zA-Z]\{4}-\)\{3}[0-9a-zA-Z]\{12}', " 12345678-1234-1234-1234-123456789012 ", "12345678-1234-1234-1234-123456789012", "1234-"])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
597
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
598 " Skip adding state twice
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
599 call add(tl, [2, '^\%(\%(^\s*#\s*if\>\|#\s*if\)\)\(\%>1c.*$\)\@=', "#if FOO", "#if", ' FOO'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
600
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
601 " Test \%V atom
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
602 call add(tl, [2, '\%>70vGesamt', 'Jean-Michel Charlier & Victor Hubinon\Gesamtausgabe [Salleck] Buck Danny {Jean-Michel Charlier & Victor Hubinon}\Gesamtausgabe', 'Gesamt'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
603
19958
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
604 " Test for ignoring case and matching repeated characters
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
605 call add(tl, [2, '\cb\+', 'aAbBbBcC', 'bBbB'])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
606
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
607 " Run the tests
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
608 for t in tl
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
609 let re = t[0]
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
610 let pat = t[1]
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
611 let text = t[2]
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
612 let matchidx = 3
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
613 for engine in [0, 1, 2]
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
614 if engine == 2 && re == 0 || engine == 1 && re == 1
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
615 continue
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
616 endif
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
617 let &regexpengine = engine
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
618 try
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
619 let l = matchlist(text, pat)
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
620 catch
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
621 call assert_report('Error ' . engine . ': pat: \"' . pat
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
622 \ . '\", text: \"' . text . '\", caused an exception: \"'
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
623 \ . v:exception . '\"')
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
624 endtry
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
625 " check the match itself
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
626 if len(l) == 0 && len(t) > matchidx
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
627 call assert_report('Error ' . engine . ': pat: \"' . pat
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
628 \ . '\", text: \"' . text . '\", did not match, expected: \"'
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
629 \ . t[matchidx] . '\"')
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
630 elseif len(l) > 0 && len(t) == matchidx
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
631 call assert_report('Error ' . engine . ': pat: \"' . pat
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
632 \ . '\", text: \"' . text . '\", match: \"' . l[0]
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
633 \ . '\", expected no match')
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
634 elseif len(t) > matchidx && l[0] != t[matchidx]
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
635 call assert_report('Error ' . engine . ': pat: \"' . pat
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
636 \ . '\", text: \"' . text . '\", match: \"' . l[0]
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
637 \ . '\", expected: \"' . t[matchidx] . '\"')
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
638 else
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
639 " Test passed
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
640 endif
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
641
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
642 " check all the nine submatches
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
643 if len(l) > 0
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
644 for i in range(1, 9)
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
645 if len(t) <= matchidx + i
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
646 let e = ''
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
647 else
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
648 let e = t[matchidx + i]
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
649 endif
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
650 if l[i] != e
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
651 call assert_report('Error ' . engine . ': pat: \"' . pat
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
652 \ . '\", text: \"' . text . '\", submatch ' . i . ': \"'
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
653 \ . l[i] . '\", expected: \"' . e . '\"')
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
654 endif
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
655 endfor
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
656 unlet i
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
657 endif
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
658 endfor
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
659 endfor
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
660
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
661 unlet t tl e l
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
662 endfunc
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
663
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
664 " Tests for multi-line regexp patterns without multi-byte support.
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
665 func Test_regexp_multiline_pat()
19958
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
666 " tl is a List of Lists with:
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
667 " regexp engines to test
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
668 " 0 - test with 'regexpengine' values 0 and 1
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
669 " 1 - test with 'regexpengine' values 0 and 2
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
670 " 2 - test with 'regexpengine' values 0, 1 and 2
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
671 " regexp pattern
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
672 " List with text to test the pattern on
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
673 " List with the expected match
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
674 let tl = []
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
675
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
676 " back references
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
677 call add(tl, [2, '^.\(.\).\_..\1.', ['aaa', 'aaa', 'b'], ['XX', 'b']])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
678 call add(tl, [2, '\v.*\/(.*)\n.*\/\1$', ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/Dir2/abcdefgh.bat', '', './Dir1/Dir2/file1.txt', './OtherDir1/OtherDir2/file1.txt'], ['./Dir1/Dir2/zyxwvuts.txt', './Dir1/Dir2/abcdefgh.bat', '', 'XX']])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
679
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
680 " line breaks
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
681 call add(tl, [2, '\S.*\nx', ['abc', 'def', 'ghi', 'xjk', 'lmn'], ['abc', 'def', 'XXjk', 'lmn']])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
682
19958
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
683 " Any single character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
684 call add(tl, [2, '\_.\+', ['a', 'b', 'c'], ['XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
685 " Any identifier or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
686 call add(tl, [2, '\_i\+', ['a', 'b', ';', '2'], ['XX;XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
687 " Any identifier but excluding digits or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
688 call add(tl, [2, '\_I\+', ['a', 'b', ';', '2'], ['XX;XX2XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
689 " Any keyword or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
690 call add(tl, [2, '\_k\+', ['a', 'b', '=', '2'], ['XX=XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
691 " Any keyword but excluding digits or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
692 call add(tl, [2, '\_K\+', ['a', 'b', '=', '2'], ['XX=XX2XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
693 " Any filename character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
694 call add(tl, [2, '\_f\+', ['a', 'b', '.', '5'], ['XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
695 " Any filename character but excluding digits or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
696 call add(tl, [2, '\_F\+', ['a', 'b', '.', '5'], ['XX5XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
697 " Any printable character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
698 call add(tl, [2, '\_p\+', ['a', 'b', '=', '4'], ['XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
699 " Any printable character excluding digits or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
700 call add(tl, [2, '\_P\+', ['a', 'b', '=', '4'], ['XX4XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
701 " Any whitespace character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
702 call add(tl, [2, '\_s\+', [' ', ' ', 'a', 'b'], ['XXaXXbXX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
703 " Any non-whitespace character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
704 call add(tl, [2, '\_S\+', [' ', ' ', 'a', 'b'], [' XX XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
705 " Any decimal digit or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
706 call add(tl, [2, '\_d\+', ['1', 'a', '2', 'b', '3'], ['XXaXXbXX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
707 " Any non-decimal digit or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
708 call add(tl, [2, '\_D\+', ['1', 'a', '2', 'b', '3'], ['1XX2XX3XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
709 " Any hexadecimal digit or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
710 call add(tl, [2, '\_x\+', ['1', 'a', 'g', '9', '8'], ['XXgXX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
711 " Any non-hexadecimal digit or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
712 call add(tl, [2, '\_X\+', ['1', 'a', 'g', '9', '8'], ['1XXaXX9XX8XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
713 " Any octal digit or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
714 call add(tl, [2, '\_o\+', ['0', '7', '8', '9', '0'], ['XX8XX9XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
715 " Any non-octal digit or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
716 call add(tl, [2, '\_O\+', ['0', '7', '8', '9', '0'], ['0XX7XX0XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
717 " Any word character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
718 call add(tl, [2, '\_w\+', ['A', 'B', '=', 'C', 'D'], ['XX=XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
719 " Any non-word character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
720 call add(tl, [2, '\_W\+', ['A', 'B', '=', 'C', 'D'], ['AXXBXXCXXDXX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
721 " Any head-of-word character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
722 call add(tl, [2, '\_h\+', ['a', '1', 'b', '2', 'c'], ['XX1XX2XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
723 " Any non-head-of-word character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
724 call add(tl, [2, '\_H\+', ['a', '1', 'b', '2', 'c'], ['aXXbXXcXX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
725 " Any alphabetic character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
726 call add(tl, [2, '\_a\+', ['a', '1', 'b', '2', 'c'], ['XX1XX2XX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
727 " Any non-alphabetic character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
728 call add(tl, [2, '\_A\+', ['a', '1', 'b', '2', 'c'], ['aXXbXXcXX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
729 " Any lowercase character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
730 call add(tl, [2, '\_l\+', ['a', 'A', 'b', 'B'], ['XXAXXBXX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
731 " Any non-lowercase character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
732 call add(tl, [2, '\_L\+', ['a', 'A', 'b', 'B'], ['aXXbXX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
733 " Any uppercase character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
734 call add(tl, [2, '\_u\+', ['a', 'A', 'b', 'B'], ['aXXbXX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
735 " Any non-uppercase character or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
736 call add(tl, [2, '\_U\+', ['a', 'A', 'b', 'B'], ['XXAXXBXX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
737 " Collection or end-of-line
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
738 call add(tl, [2, '\_[a-z]\+', ['a', 'A', 'b', 'B'], ['XXAXXBXX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
739 " start of line anywhere in the text
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
740 call add(tl, [2, 'one\zs\_s*\_^\zetwo',
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
741 \ ['', 'one', ' two', 'one', '', 'two'],
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
742 \ ['', 'one', ' two', 'oneXXtwo']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
743 " end of line anywhere in the text
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
744 call add(tl, [2, 'one\zs\_$\_s*two',
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
745 \ ['', 'one', ' two', 'one', '', 'two'], ['', 'oneXX', 'oneXX']])
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
746
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
747 " Check that \_[0-9] matching EOL does not break a following \>
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
748 call add(tl, [2, '\<\(\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\.\)\{3\}\(25\_[0-5]\|2\_[0-4]\_[0-9]\|\_[01]\?\_[0-9]\_[0-9]\?\)\>', ['', 'localnet/192.168.0.1', ''], ['', 'localnet/XX', '']])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
749
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
750 " Check a pattern with a line break and ^ and $
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
751 call add(tl, [2, 'a\n^b$\n^c', ['a', 'b', 'c'], ['XX']])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
752
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
753 call add(tl, [2, '\(^.\+\n\)\1', [' dog', ' dog', 'asdf'], ['XXasdf']])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
754
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
755 " Run the multi-line tests
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
756 for t in tl
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
757 let re = t[0]
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
758 let pat = t[1]
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
759 let before = t[2]
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
760 let after = t[3]
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
761 for engine in [0, 1, 2]
19958
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
762 if engine == 2 && re == 0 || engine == 1 && re == 1
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
763 continue
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
764 endif
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
765 let &regexpengine = engine
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
766 new
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
767 call setline(1, before)
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
768 exe '%s/' . pat . '/XX/'
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
769 let result = getline(1, '$')
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
770 q!
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
771 if result != after
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
772 call assert_report('Error: pat: \"' . pat . '\", text: \"'
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
773 \ . string(before) . '\", expected: \"' . string(after)
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
774 \ . '\", got: \"' . string(result) . '\"')
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
775 else
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
776 " Test passed
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
777 endif
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
778 endfor
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
779 endfor
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
780 unlet t tl
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
781 endfunc
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
782
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
783 " Check that using a pattern on two lines doesn't get messed up by using
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
784 " matchstr() with \ze in between.
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
785 func Test_matchstr_with_ze()
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
786 new
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
787 call append(0, ['Substitute here:', '<T="">Ta 5</Title>',
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
788 \ '<T="">Ac 7</Title>'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
789 call cursor(1, 1)
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
790 set re=0
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
791
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
792 .+1,.+2s/""/\='"' . matchstr(getline("."), '\d\+\ze<') . '"'
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
793 call assert_equal(['Substitute here:', '<T="5">Ta 5</Title>',
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
794 \ '<T="7">Ac 7</Title>', ''], getline(1, '$'))
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
795
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
796 bwipe!
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
797 endfunc
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
798
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
799 " Check a pattern with a look beind crossing a line boundary
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
800 func Test_lookbehind_across_line()
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
801 new
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
802 call append(0, ['Behind:', 'asdfasd<yyy', 'xxstart1', 'asdfasd<yy',
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
803 \ 'xxxstart2', 'asdfasd<yy', 'xxstart3'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
804 call cursor(1, 1)
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
805 call search('\(<\_[xy]\+\)\@3<=start')
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
806 call assert_equal([0, 7, 3, 0], getpos('.'))
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
807 bwipe!
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
808 endfunc
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
809
19958
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
810 " Test for the \%V atom (match inside the visual area)
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
811 func Regex_Match_Visual_Area()
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
812 call append(0, ['Visual:', 'thexe the thexethe', 'andaxand andaxand',
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
813 \ 'oooxofor foroxooo', 'oooxofor foroxooo'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
814 call cursor(1, 1)
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
815 exe "normal jfxvfx:s/\\%Ve/E/g\<CR>"
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
816 exe "normal jV:s/\\%Va/A/g\<CR>"
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
817 exe "normal jfx\<C-V>fxj:s/\\%Vo/O/g\<CR>"
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
818 call assert_equal(['Visual:', 'thexE thE thExethe', 'AndAxAnd AndAxAnd',
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
819 \ 'oooxOfOr fOrOxooo', 'oooxOfOr fOrOxooo', ''], getline(1, '$'))
19958
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
820 %d
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
821 endfunc
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
822
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
823 " Check matching Visual area
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
824 func Test_matching_visual_area()
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
825 new
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
826 set regexpengine=1
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
827 call Regex_Match_Visual_Area()
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
828 set regexpengine=2
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
829 call Regex_Match_Visual_Area()
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
830 set regexpengine&
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
831 bwipe!
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
832 endfunc
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
833
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
834 " Check matching marks
19958
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
835 func Regex_Mark()
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
836 call append(0, ['', '', '', 'Marks:', 'asdfSasdfsadfEasdf', 'asdfSas',
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
837 \ 'dfsadfEasdf', '', '', '', '', ''])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
838 call cursor(4, 1)
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
839 exe "normal jfSmsfEme:.-4,.+6s/.\\%>'s.*\\%<'e../here/\<CR>"
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
840 exe "normal jfSmsj0fEme:.-4,.+6s/.\\%>'s\\_.*\\%<'e../again/\<CR>"
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
841 call assert_equal(['', '', '', 'Marks:', 'asdfhereasdf', 'asdfagainasdf',
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
842 \ '', '', '', '', '', ''], getline(1, '$'))
19958
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
843 %d
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
844 endfunc
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
845
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
846 func Test_matching_marks()
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
847 new
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
848 set regexpengine=1
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
849 call Regex_Mark()
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
850 set regexpengine=2
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
851 call Regex_Mark()
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
852 bwipe!
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
853 endfunc
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
854
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
855 " Check patterns matching cursor position.
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
856 func s:curpos_test()
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
857 new
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
858 call setline(1, ['ffooooo', 'boboooo', 'zoooooo', 'koooooo', 'moooooo',
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
859 \ "\t\t\tfoo", 'abababababababfoo', 'bababababababafoo', '********_',
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
860 \ ' xxxxxxxxxxxx xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxx xxx xxx xxxxxxxx xxxxxxx xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx'])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
861 call setpos('.', [0, 1, 0, 0])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
862 s/\%>3c.//g
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
863 call setpos('.', [0, 2, 4, 0])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
864 s/\%#.*$//g
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
865 call setpos('.', [0, 3, 0, 0])
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
866 s/\%<3c./_/g
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
867 %s/\%4l\%>5c./_/g
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
868 %s/\%6l\%>25v./_/g
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
869 %s/\%>6l\%3c./!/g
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
870 %s/\%>7l\%12c./?/g
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
871 %s/\%>7l\%<9l\%>5v\%<8v./#/g
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
872 $s/\%(|\u.*\)\@<=[^|\t]\+$//ge
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
873 call assert_equal(['ffo', 'bob', '__ooooo', 'koooo__', 'moooooo',
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
874 \ ' f__', 'ab!babababababfoo',
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
875 \ 'ba!ab##abab?bafoo', '**!*****_',
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
876 \ ' ! xxx?xxxxxxxx xxxx xxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxx xxxxx xxxxxxx xx xxxx xxxxxxxx xxxx xxxxxxxxxxx xxx xxxxxxx xxxxxxxxx xx xxxxxx xx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx xxx xxxxxxxx xxxxxxxxx xxxx xxx xxxx xxx xxx xxxxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxxxxxxx xx xxxxx xxx xxxxxxxx xxxxxx xxx xxx xxxxxxxxx xxxxxxx x xxxxxxxxx xx xxxxxx xxxxxxx xxxxxxxxxxxxxxxxxx xxxxxxx xxxxxxx xxx xxx xxxxxxxx xxxxxxx xxxx xxx xxxxxx xxxxx xxxxx xx xxxxxx xxxxxxx xxx xxxxxxxxxxxx xxxx xxxxxxxxx xxxxxx xxxxxx xxxxx xxx xxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxx xxxxxxxxxx xxxx xx xxxxxxxx xxx xxxxxxxxxxx xxxxx'],
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
877 \ getline(1, '$'))
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
878 bwipe!
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
879 endfunc
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
880
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
881 func Test_matching_curpos()
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
882 set re=0
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
883 call s:curpos_test()
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
884 set re=1
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
885 call s:curpos_test()
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
886 set re=2
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
887 call s:curpos_test()
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
888 set re&
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
889 endfunc
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
890
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
891 " Test for matching the start and end of a buffer
19958
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
892 func Regex_start_end_buffer()
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
893 call setline(1, repeat(['vim edit'], 20))
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
894 /\%^
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
895 call assert_equal([0, 1, 1, 0], getpos('.'))
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
896 exe "normal 50%/\\%^..\<CR>"
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
897 call assert_equal([0, 1, 1, 0], getpos('.'))
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
898 exe "normal 50%/\\%$\<CR>"
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
899 call assert_equal([0, 20, 8, 0], getpos('.'))
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
900 exe "normal 6gg/..\\%$\<CR>"
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
901 call assert_equal([0, 20, 7, 0], getpos('.'))
19958
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
902 %d
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
903 endfunc
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
904
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
905 func Test_start_end_of_buffer_match()
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
906 new
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
907 set regexpengine=1
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
908 call Regex_start_end_buffer()
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
909 set regexpengine=2
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
910 call Regex_start_end_buffer()
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
911 bwipe!
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
912 endfunc
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
913
23150
90b16a0022e5 patch 8.2.2121: internal error when using ze before zs in a pattern
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
914 func Test_ze_before_zs()
90b16a0022e5 patch 8.2.2121: internal error when using ze before zs in a pattern
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
915 call assert_equal('', matchstr(' ', '\%#=1\ze \zs'))
90b16a0022e5 patch 8.2.2121: internal error when using ze before zs in a pattern
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
916 call assert_equal('', matchstr(' ', '\%#=2\ze \zs'))
90b16a0022e5 patch 8.2.2121: internal error when using ze before zs in a pattern
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
917 call assert_equal(repeat([''], 10), matchlist(' ', '\%#=1\ze \zs'))
90b16a0022e5 patch 8.2.2121: internal error when using ze before zs in a pattern
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
918 call assert_equal(repeat([''], 10), matchlist(' ', '\%#=2\ze \zs'))
90b16a0022e5 patch 8.2.2121: internal error when using ze before zs in a pattern
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
919 endfunc
90b16a0022e5 patch 8.2.2121: internal error when using ze before zs in a pattern
Bram Moolenaar <Bram@vim.org>
parents: 21765
diff changeset
920
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
921 " Check for detecting error
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
922 func Test_regexp_error()
19958
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
923 call assert_fails("call matchlist('x x', '\\%#=1 \\zs*')", 'E888:')
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
924 call assert_fails("call matchlist('x x', '\\%#=1 \\ze*')", 'E888:')
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
925 call assert_fails("call matchlist('x x', '\\%#=2 \\zs*')", 'E888:')
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
926 call assert_fails("call matchlist('x x', '\\%#=2 \\ze*')", 'E888:')
19969
b07672d13ff9 patch 8.2.0540: regexp and other code not tested
Bram Moolenaar <Bram@vim.org>
parents: 19958
diff changeset
927 call assert_fails("call matchstr('abcd', '\\%o841\\%o142')", 'E678:')
24230
ed0fc4787392 patch 8.2.2656: some command line arguments and regexp errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23150
diff changeset
928 call assert_fails("call matchstr('abcd', '\\%#=2\\%2147483647c')", 'E951:')
ed0fc4787392 patch 8.2.2656: some command line arguments and regexp errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23150
diff changeset
929 call assert_fails("call matchstr('abcd', '\\%#=2\\%2147483647l')", 'E951:')
ed0fc4787392 patch 8.2.2656: some command line arguments and regexp errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23150
diff changeset
930 call assert_fails("call matchstr('abcd', '\\%#=2\\%2147483647v')", 'E951:')
ed0fc4787392 patch 8.2.2656: some command line arguments and regexp errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23150
diff changeset
931 call assert_fails('exe "normal /\\%#=1\\%[x\\%[x]]\<CR>"', 'E369:')
ed0fc4787392 patch 8.2.2656: some command line arguments and regexp errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23150
diff changeset
932 call assert_fails('exe "normal /\\%#=2\\%2147483647l\<CR>"', 'E951:')
ed0fc4787392 patch 8.2.2656: some command line arguments and regexp errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23150
diff changeset
933 call assert_fails('exe "normal /\\%#=2\\%2147483647c\<CR>"', 'E951:')
ed0fc4787392 patch 8.2.2656: some command line arguments and regexp errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23150
diff changeset
934 call assert_fails('exe "normal /\\%#=2\\%102261126v\<CR>"', 'E951:')
ed0fc4787392 patch 8.2.2656: some command line arguments and regexp errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23150
diff changeset
935 call assert_fails('exe "normal /\\%#=2\\%2147483646l\<CR>"', 'E486:')
ed0fc4787392 patch 8.2.2656: some command line arguments and regexp errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23150
diff changeset
936 call assert_fails('exe "normal /\\%#=2\\%2147483646c\<CR>"', 'E486:')
ed0fc4787392 patch 8.2.2656: some command line arguments and regexp errors not tested
Bram Moolenaar <Bram@vim.org>
parents: 23150
diff changeset
937 call assert_fails('exe "normal /\\%#=2\\%102261125v\<CR>"', 'E486:')
19969
b07672d13ff9 patch 8.2.0540: regexp and other code not tested
Bram Moolenaar <Bram@vim.org>
parents: 19958
diff changeset
938 call assert_equal('', matchstr('abcd', '\%o181\%o142'))
19958
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
939 endfunc
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
940
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
941 " Test for using the last substitute string pattern (~)
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
942 func Test_regexp_last_subst_string()
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
943 new
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
944 s/bar/baz/e
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
945 call assert_equal(matchstr("foo\nbaz\nbar", "\\%#=1\~"), "baz")
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
946 call assert_equal(matchstr("foo\nbaz\nbar", "\\%#=2\~"), "baz")
0b42b5e50344 patch 8.2.0535: regexp patterns not fully tested
Bram Moolenaar <Bram@vim.org>
parents: 19249
diff changeset
947 close!
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
948 endfunc
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
949
25147
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
950 " Check patterns matching cursor position.
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
951 func s:curpos_test2()
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
952 new
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
953 call setline(1, ['1', '2 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
954 \ '3 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
955 \ '4 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
956 \ '5 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
957 \ '6 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
958 \ '7 foobar eins zwei drei vier fünf sechse'])
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
959 call setpos('.', [0, 2, 10, 0])
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
960 s/\%.c.*//g
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
961 call setpos('.', [0, 3, 15, 0])
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
962 s/\%.l.*//g
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
963 call setpos('.', [0, 5, 3, 0])
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
964 s/\%.v.*/_/g
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
965 call assert_equal(['1',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
966 \ '2 foobar ',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
967 \ '',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
968 \ '4 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
969 \ '5 _',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
970 \ '6 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
971 \ '7 foobar eins zwei drei vier fünf sechse'],
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
972 \ getline(1, '$'))
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
973 call assert_fails('call search("\\%.1l")', 'E1204:')
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
974 call assert_fails('call search("\\%.1c")', 'E1204:')
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
975 call assert_fails('call search("\\%.1v")', 'E1204:')
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
976 bwipe!
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
977 endfunc
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
978
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
979 " Check patterns matching before or after cursor position.
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
980 func s:curpos_test3()
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
981 new
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
982 call setline(1, ['1', '2 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
983 \ '3 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
984 \ '4 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
985 \ '5 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
986 \ '6 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
987 \ '7 foobar eins zwei drei vier fünf sechse'])
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
988 call setpos('.', [0, 2, 10, 0])
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
989 " Note: This removes all columns, except for the column directly in front of
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
990 " the cursor. Bug????
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
991 :s/^.*\%<.c//
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
992 call setpos('.', [0, 3, 10, 0])
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
993 :s/\%>.c.*$//
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
994 call setpos('.', [0, 5, 4, 0])
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
995 " Note: This removes all columns, except for the column directly in front of
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
996 " the cursor. Bug????
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
997 :s/^.*\%<.v/_/
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
998 call setpos('.', [0, 6, 4, 0])
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
999 :s/\%>.v.*$/_/
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1000 call assert_equal(['1',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1001 \ ' eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1002 \ '3 foobar e',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1003 \ '4 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1004 \ '_foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1005 \ '6 fo_',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1006 \ '7 foobar eins zwei drei vier fünf sechse'],
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1007 \ getline(1, '$'))
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1008 sil %d
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1009 call setline(1, ['1', '2 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1010 \ '3 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1011 \ '4 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1012 \ '5 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1013 \ '6 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1014 \ '7 foobar eins zwei drei vier fünf sechse'])
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1015 call setpos('.', [0, 4, 4, 0])
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1016 %s/\%<.l.*//
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1017 call setpos('.', [0, 5, 4, 0])
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1018 %s/\%>.l.*//
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1019 call assert_equal(['', '', '',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1020 \ '4 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1021 \ '5 foobar eins zwei drei vier fünf sechse',
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1022 \ '', ''],
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1023 \ getline(1, '$'))
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1024 bwipe!
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1025 endfunc
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1026
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1027 " Test that matching below, at or after the
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1028 " cursor position work
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1029 func Test_matching_pos()
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1030 for val in range(3)
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1031 exe "set re=" .. val
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1032 " Match at cursor position
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1033 call s:curpos_test2()
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1034 " Match before or after cursor position
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1035 call s:curpos_test3()
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1036 endfor
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1037 set re&
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1038 endfunc
10b269321459 patch 8.2.3110: a pattern that matches the cursor position is complicated
Bram Moolenaar <Bram@vim.org>
parents: 24230
diff changeset
1039
26161
9835f424bef5 patch 8.2.3612: using freed memory with regexp using a mark
Bram Moolenaar <Bram@vim.org>
parents: 25147
diff changeset
1040 func Test_using_mark_position()
9835f424bef5 patch 8.2.3612: using freed memory with regexp using a mark
Bram Moolenaar <Bram@vim.org>
parents: 25147
diff changeset
1041 " this was using freed memory
9835f424bef5 patch 8.2.3612: using freed memory with regexp using a mark
Bram Moolenaar <Bram@vim.org>
parents: 25147
diff changeset
1042 new
9835f424bef5 patch 8.2.3612: using freed memory with regexp using a mark
Bram Moolenaar <Bram@vim.org>
parents: 25147
diff changeset
1043 norm O0
9835f424bef5 patch 8.2.3612: using freed memory with regexp using a mark
Bram Moolenaar <Bram@vim.org>
parents: 25147
diff changeset
1044 call assert_fails("s/\\%')", 'E486:')
9835f424bef5 patch 8.2.3612: using freed memory with regexp using a mark
Bram Moolenaar <Bram@vim.org>
parents: 25147
diff changeset
1045 bwipe!
9835f424bef5 patch 8.2.3612: using freed memory with regexp using a mark
Bram Moolenaar <Bram@vim.org>
parents: 25147
diff changeset
1046 endfunc
9835f424bef5 patch 8.2.3612: using freed memory with regexp using a mark
Bram Moolenaar <Bram@vim.org>
parents: 25147
diff changeset
1047
26841
48d6f187e9c0 patch 8.2.3949: using freed memory with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26161
diff changeset
1048 func Test_using_visual_position()
48d6f187e9c0 patch 8.2.3949: using freed memory with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26161
diff changeset
1049 " this was using freed memory
48d6f187e9c0 patch 8.2.3949: using freed memory with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26161
diff changeset
1050 new
48d6f187e9c0 patch 8.2.3949: using freed memory with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26161
diff changeset
1051 exe "norm 0o\<Esc>\<C-V>k\<C-X>o0"
48d6f187e9c0 patch 8.2.3949: using freed memory with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26161
diff changeset
1052 /\%V
48d6f187e9c0 patch 8.2.3949: using freed memory with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26161
diff changeset
1053 bwipe!
48d6f187e9c0 patch 8.2.3949: using freed memory with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26161
diff changeset
1054 endfunc
48d6f187e9c0 patch 8.2.3949: using freed memory with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26161
diff changeset
1055
26843
1e3c49c09260 patch 8.2.3950: going beyond the end of the line with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26841
diff changeset
1056 func Test_using_invalid_visual_position()
1e3c49c09260 patch 8.2.3950: going beyond the end of the line with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26841
diff changeset
1057 " this was going beyond the end of the line
1e3c49c09260 patch 8.2.3950: going beyond the end of the line with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26841
diff changeset
1058 new
1e3c49c09260 patch 8.2.3950: going beyond the end of the line with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26841
diff changeset
1059 exe "norm 0o000\<Esc>0\<C-V>$s0"
1e3c49c09260 patch 8.2.3950: going beyond the end of the line with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26841
diff changeset
1060 /\%V
1e3c49c09260 patch 8.2.3950: going beyond the end of the line with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26841
diff changeset
1061 bwipe!
1e3c49c09260 patch 8.2.3950: going beyond the end of the line with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26841
diff changeset
1062 endfunc
1e3c49c09260 patch 8.2.3950: going beyond the end of the line with /%V
Bram Moolenaar <Bram@vim.org>
parents: 26841
diff changeset
1063
18898
ad9e9e92ad55 patch 8.2.0010: test64 is old style
Bram Moolenaar <Bram@vim.org>
parents: 15904
diff changeset
1064 " vim: shiftwidth=2 sts=2 expandtab