annotate src/testdir/test_expr.vim @ 8887:8bf855dea79e v7.4.1730

commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Apr 14 15:13:46 2016 +0200 patch 7.4.1730 Problem: It is not easy to get a character out of a string. Solution: Add strgetchar() and strcharpart().
author Christian Brabandt <cb@256bit.org>
date Thu, 14 Apr 2016 15:15:05 +0200
parents 9fa567d13551
children 7f29248d5789
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8635
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
1 " Tests for expressions.
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
2
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
3 func Test_equal()
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
4 let base = {}
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
5 func base.method()
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
6 return 1
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 endfunc
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 func base.other() dict
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 return 1
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 endfunc
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 let instance = copy(base)
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 call assert_true(base.method == instance.method)
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 call assert_true([base.method] == [instance.method])
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14 call assert_true(base.other == instance.other)
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 call assert_true([base.other] == [instance.other])
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
17 call assert_false(base.method == base.other)
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 call assert_false([base.method] == [base.other])
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19 call assert_false(base.method == instance.other)
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20 call assert_false([base.method] == [instance.other])
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
22 call assert_fails('echo base.method > instance.method')
3a38d465f731 commit https://github.com/vim/vim/commit/f0e86a0dbddc18568910e9e4aaae0cd88ca8087a
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
23 endfunc
8742
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
24
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
25 func Test_version()
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
26 call assert_true(has('patch-7.4.001'))
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
27 call assert_true(has('patch-7.4.01'))
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
28 call assert_true(has('patch-7.4.1'))
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
29 call assert_true(has('patch-6.9.999'))
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
30 call assert_true(has('patch-7.1.999'))
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
31 call assert_true(has('patch-7.4.123'))
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
32
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
33 call assert_false(has('patch-7'))
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
34 call assert_false(has('patch-7.4'))
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
35 call assert_false(has('patch-7.4.'))
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
36 call assert_false(has('patch-9.1.0'))
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
37 call assert_false(has('patch-9.9.1'))
03e5171c23e5 commit https://github.com/vim/vim/commit/819821c5a95fc60797ecbb5e5ca1302e397e3d9a
Christian Brabandt <cb@256bit.org>
parents: 8635
diff changeset
38 endfunc
8839
9fa567d13551 commit https://github.com/vim/vim/commit/0921ecff1c5a74541bad6c073e8ade32247403d8
Christian Brabandt <cb@256bit.org>
parents: 8742
diff changeset
39
9fa567d13551 commit https://github.com/vim/vim/commit/0921ecff1c5a74541bad6c073e8ade32247403d8
Christian Brabandt <cb@256bit.org>
parents: 8742
diff changeset
40 func Test_dict()
9fa567d13551 commit https://github.com/vim/vim/commit/0921ecff1c5a74541bad6c073e8ade32247403d8
Christian Brabandt <cb@256bit.org>
parents: 8742
diff changeset
41 let d = {'': 'empty', 'a': 'a', 0: 'zero'}
9fa567d13551 commit https://github.com/vim/vim/commit/0921ecff1c5a74541bad6c073e8ade32247403d8
Christian Brabandt <cb@256bit.org>
parents: 8742
diff changeset
42 call assert_equal('empty', d[''])
9fa567d13551 commit https://github.com/vim/vim/commit/0921ecff1c5a74541bad6c073e8ade32247403d8
Christian Brabandt <cb@256bit.org>
parents: 8742
diff changeset
43 call assert_equal('a', d['a'])
9fa567d13551 commit https://github.com/vim/vim/commit/0921ecff1c5a74541bad6c073e8ade32247403d8
Christian Brabandt <cb@256bit.org>
parents: 8742
diff changeset
44 call assert_equal('zero', d[0])
9fa567d13551 commit https://github.com/vim/vim/commit/0921ecff1c5a74541bad6c073e8ade32247403d8
Christian Brabandt <cb@256bit.org>
parents: 8742
diff changeset
45 call assert_true(has_key(d, ''))
9fa567d13551 commit https://github.com/vim/vim/commit/0921ecff1c5a74541bad6c073e8ade32247403d8
Christian Brabandt <cb@256bit.org>
parents: 8742
diff changeset
46 call assert_true(has_key(d, 'a'))
9fa567d13551 commit https://github.com/vim/vim/commit/0921ecff1c5a74541bad6c073e8ade32247403d8
Christian Brabandt <cb@256bit.org>
parents: 8742
diff changeset
47
9fa567d13551 commit https://github.com/vim/vim/commit/0921ecff1c5a74541bad6c073e8ade32247403d8
Christian Brabandt <cb@256bit.org>
parents: 8742
diff changeset
48 let d[''] = 'none'
9fa567d13551 commit https://github.com/vim/vim/commit/0921ecff1c5a74541bad6c073e8ade32247403d8
Christian Brabandt <cb@256bit.org>
parents: 8742
diff changeset
49 let d['a'] = 'aaa'
9fa567d13551 commit https://github.com/vim/vim/commit/0921ecff1c5a74541bad6c073e8ade32247403d8
Christian Brabandt <cb@256bit.org>
parents: 8742
diff changeset
50 call assert_equal('none', d[''])
9fa567d13551 commit https://github.com/vim/vim/commit/0921ecff1c5a74541bad6c073e8ade32247403d8
Christian Brabandt <cb@256bit.org>
parents: 8742
diff changeset
51 call assert_equal('aaa', d['a'])
9fa567d13551 commit https://github.com/vim/vim/commit/0921ecff1c5a74541bad6c073e8ade32247403d8
Christian Brabandt <cb@256bit.org>
parents: 8742
diff changeset
52 endfunc
8887
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
53
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
54 func Test_strgetchar()
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
55 call assert_equal(char2nr('a'), strgetchar('axb', 0))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
56 call assert_equal(char2nr('x'), strgetchar('axb', 1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
57 call assert_equal(char2nr('b'), strgetchar('axb', 2))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
58
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
59 call assert_equal(-1, strgetchar('axb', -1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
60 call assert_equal(-1, strgetchar('axb', 3))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
61 call assert_equal(-1, strgetchar('', 0))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
62
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
63 if !has('multi_byte')
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
64 return
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
65 endif
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
66
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
67 call assert_equal(char2nr('á'), strgetchar('áxb', 0))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
68 call assert_equal(char2nr('x'), strgetchar('áxb', 1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
69
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
70 call assert_equal(char2nr('a'), strgetchar('àxb', 0))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
71 call assert_equal(char2nr('̀'), strgetchar('àxb', 1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
72 call assert_equal(char2nr('x'), strgetchar('àxb', 2))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
73 endfunc
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
74
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
75 func Test_strcharpart()
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
76 call assert_equal('a', strcharpart('axb', 0, 1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
77 call assert_equal('x', strcharpart('axb', 1, 1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
78 call assert_equal('b', strcharpart('axb', 2, 1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
79 call assert_equal('xb', strcharpart('axb', 1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
80
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
81 call assert_equal('', strcharpart('axb', 1, 0))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
82 call assert_equal('', strcharpart('axb', 1, -1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
83 call assert_equal('', strcharpart('axb', -1, 1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
84 call assert_equal('', strcharpart('axb', -2, 2))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
85
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
86 call assert_equal('a', strcharpart('axb', -1, 2))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
87
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
88 if !has('multi_byte')
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
89 return
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
90 endif
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
91
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
92 call assert_equal('áxb', strcharpart('áxb', 0))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
93 call assert_equal('á', strcharpart('áxb', 0, 1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
94 call assert_equal('x', strcharpart('áxb', 1, 1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
95
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
96 call assert_equal('a', strcharpart('àxb', 0, 1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
97 call assert_equal('̀', strcharpart('àxb', 1, 1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
98 call assert_equal('x', strcharpart('àxb', 2, 1))
8bf855dea79e commit https://github.com/vim/vim/commit/58de0e2dcc1f2d251b74892a06d71a14973f3187
Christian Brabandt <cb@256bit.org>
parents: 8839
diff changeset
99 endfunc