annotate src/testdir/test_partial.vim @ 11193:75ccc8a15a51 v8.0.0483

patch 8.0.0483: illegal memory access when using :all commit https://github.com/vim/vim/commit/f79225ed4f81bc579bb3360ad2eb06adc8058153 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Mar 18 23:11:04 2017 +0100 patch 8.0.0483: illegal memory access when using :all Problem: Illegal memory access when using :all. (Dominique Pelle) Solution: Adjust the cursor position right after setting "curwin".
author Christian Brabandt <cb@256bit.org>
date Sat, 18 Mar 2017 23:15:04 +0100
parents 95ad2692dec0
children 63b02fcf1361
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
1 " Test binding arguments to a Funcref.
9713
058e5ea0400e commit https://github.com/vim/vim/commit/31440a1f2b6ae8a2f7ffdd4a8a3661eadc4df23c
Christian Brabandt <cb@256bit.org>
parents: 9416
diff changeset
2
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
3 func MyFunc(arg1, arg2, arg3)
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
4 return a:arg1 . '/' . a:arg2 . '/' . a:arg3
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
5 endfunc
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
6
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 func MySort(up, one, two)
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 if a:one == a:two
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 return 0
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 endif
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 if a:up
8546
996109e24f02 commit https://github.com/vim/vim/commit/790500a8e65bee295ef51a59dfa67ecbaab8ea17
Christian Brabandt <cb@256bit.org>
parents: 8538
diff changeset
12 return a:one > a:two ? 1 : -1
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 endif
8546
996109e24f02 commit https://github.com/vim/vim/commit/790500a8e65bee295ef51a59dfa67ecbaab8ea17
Christian Brabandt <cb@256bit.org>
parents: 8538
diff changeset
14 return a:one < a:two ? 1 : -1
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 endfunc
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16
9416
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
17 func MyMap(sub, index, val)
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
18 return a:val - a:sub
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
19 endfunc
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
20
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
21 func MyFilter(threshold, index, val)
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
22 return a:val > a:threshold
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
23 endfunc
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
24
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25 func Test_partial_args()
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26 let Cb = function('MyFunc', ["foo", "bar"])
8583
537bbbd4e987 commit https://github.com/vim/vim/commit/65639032bb7b17996cd255d1508a1df4ad528a1f
Christian Brabandt <cb@256bit.org>
parents: 8581
diff changeset
27
537bbbd4e987 commit https://github.com/vim/vim/commit/65639032bb7b17996cd255d1508a1df4ad528a1f
Christian Brabandt <cb@256bit.org>
parents: 8581
diff changeset
28 call Cb("zzz")
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
29 call assert_equal("foo/bar/xxx", Cb("xxx"))
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
30 call assert_equal("foo/bar/yyy", call(Cb, ["yyy"]))
8593
dc36cef103de commit https://github.com/vim/vim/commit/8a1bb046378f4bc68d6a04af2eab80fb3ce04da6
Christian Brabandt <cb@256bit.org>
parents: 8591
diff changeset
31 let Cb2 = function(Cb)
dc36cef103de commit https://github.com/vim/vim/commit/8a1bb046378f4bc68d6a04af2eab80fb3ce04da6
Christian Brabandt <cb@256bit.org>
parents: 8591
diff changeset
32 call assert_equal("foo/bar/zzz", Cb2("zzz"))
dc36cef103de commit https://github.com/vim/vim/commit/8a1bb046378f4bc68d6a04af2eab80fb3ce04da6
Christian Brabandt <cb@256bit.org>
parents: 8591
diff changeset
33 let Cb3 = function(Cb, ["www"])
dc36cef103de commit https://github.com/vim/vim/commit/8a1bb046378f4bc68d6a04af2eab80fb3ce04da6
Christian Brabandt <cb@256bit.org>
parents: 8591
diff changeset
34 call assert_equal("foo/bar/www", Cb3())
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
35
8548
24db3583c496 commit https://github.com/vim/vim/commit/346418c624f1bc7c04c98907134a2b284e6452dd
Christian Brabandt <cb@256bit.org>
parents: 8546
diff changeset
36 let Cb = function('MyFunc', [])
24db3583c496 commit https://github.com/vim/vim/commit/346418c624f1bc7c04c98907134a2b284e6452dd
Christian Brabandt <cb@256bit.org>
parents: 8546
diff changeset
37 call assert_equal("a/b/c", Cb("a", "b", "c"))
8593
dc36cef103de commit https://github.com/vim/vim/commit/8a1bb046378f4bc68d6a04af2eab80fb3ce04da6
Christian Brabandt <cb@256bit.org>
parents: 8591
diff changeset
38 let Cb2 = function(Cb, [])
dc36cef103de commit https://github.com/vim/vim/commit/8a1bb046378f4bc68d6a04af2eab80fb3ce04da6
Christian Brabandt <cb@256bit.org>
parents: 8591
diff changeset
39 call assert_equal("a/b/d", Cb2("a", "b", "d"))
dc36cef103de commit https://github.com/vim/vim/commit/8a1bb046378f4bc68d6a04af2eab80fb3ce04da6
Christian Brabandt <cb@256bit.org>
parents: 8591
diff changeset
40 let Cb3 = function(Cb, ["a", "b"])
dc36cef103de commit https://github.com/vim/vim/commit/8a1bb046378f4bc68d6a04af2eab80fb3ce04da6
Christian Brabandt <cb@256bit.org>
parents: 8591
diff changeset
41 call assert_equal("a/b/e", Cb3("e"))
8548
24db3583c496 commit https://github.com/vim/vim/commit/346418c624f1bc7c04c98907134a2b284e6452dd
Christian Brabandt <cb@256bit.org>
parents: 8546
diff changeset
42
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
43 let Sort = function('MySort', [1])
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
44 call assert_equal([1, 2, 3], sort([3, 1, 2], Sort))
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
45 let Sort = function('MySort', [0])
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
46 call assert_equal([3, 2, 1], sort([3, 1, 2], Sort))
9416
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
47
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
48 let Map = function('MyMap', [2])
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
49 call assert_equal([-1, 0, 1], map([1, 2, 3], Map))
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
50 let Map = function('MyMap', [3])
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
51 call assert_equal([-2, -1, 0], map([1, 2, 3], Map))
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
52
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
53 let Filter = function('MyFilter', [1])
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
54 call assert_equal([2, 3], filter([1, 2, 3], Filter))
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
55 let Filter = function('MyFilter', [2])
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
56 call assert_equal([3], filter([1, 2, 3], Filter))
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
57 endfunc
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
58
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
59 func MyDictFunc(arg1, arg2) dict
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
60 return self.name . '/' . a:arg1 . '/' . a:arg2
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
61 endfunc
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
62
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
63 func Test_partial_dict()
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
64 let dict = {'name': 'hello'}
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
65 let Cb = function('MyDictFunc', ["foo", "bar"], dict)
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
66 call assert_equal("hello/foo/bar", Cb())
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
67 call assert_fails('Cb("xxx")', 'E492:')
8548
24db3583c496 commit https://github.com/vim/vim/commit/346418c624f1bc7c04c98907134a2b284e6452dd
Christian Brabandt <cb@256bit.org>
parents: 8546
diff changeset
68
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
69 let Cb = function('MyDictFunc', ["foo"], dict)
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
70 call assert_equal("hello/foo/xxx", Cb("xxx"))
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
71 call assert_fails('Cb()', 'E492:')
8548
24db3583c496 commit https://github.com/vim/vim/commit/346418c624f1bc7c04c98907134a2b284e6452dd
Christian Brabandt <cb@256bit.org>
parents: 8546
diff changeset
72
24db3583c496 commit https://github.com/vim/vim/commit/346418c624f1bc7c04c98907134a2b284e6452dd
Christian Brabandt <cb@256bit.org>
parents: 8546
diff changeset
73 let Cb = function('MyDictFunc', [], dict)
24db3583c496 commit https://github.com/vim/vim/commit/346418c624f1bc7c04c98907134a2b284e6452dd
Christian Brabandt <cb@256bit.org>
parents: 8546
diff changeset
74 call assert_equal("hello/ttt/xxx", Cb("ttt", "xxx"))
24db3583c496 commit https://github.com/vim/vim/commit/346418c624f1bc7c04c98907134a2b284e6452dd
Christian Brabandt <cb@256bit.org>
parents: 8546
diff changeset
75 call assert_fails('Cb("yyy")', 'E492:')
24db3583c496 commit https://github.com/vim/vim/commit/346418c624f1bc7c04c98907134a2b284e6452dd
Christian Brabandt <cb@256bit.org>
parents: 8546
diff changeset
76
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
77 let Cb = function('MyDictFunc', dict)
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
78 call assert_equal("hello/xxx/yyy", Cb("xxx", "yyy"))
8548
24db3583c496 commit https://github.com/vim/vim/commit/346418c624f1bc7c04c98907134a2b284e6452dd
Christian Brabandt <cb@256bit.org>
parents: 8546
diff changeset
79 call assert_fails('Cb("fff")', 'E492:')
8583
537bbbd4e987 commit https://github.com/vim/vim/commit/65639032bb7b17996cd255d1508a1df4ad528a1f
Christian Brabandt <cb@256bit.org>
parents: 8581
diff changeset
80
9416
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
81 let Cb = function('MyDictFunc', dict)
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
82 call assert_equal({"foo": "hello/foo/1", "bar": "hello/bar/2"}, map({"foo": 1, "bar": 2}, Cb))
cbf052ccb120 commit https://github.com/vim/vim/commit/b33c7eb5b813cb631b2b0ca5c4029e1788a09bde
Christian Brabandt <cb@256bit.org>
parents: 9183
diff changeset
83
8583
537bbbd4e987 commit https://github.com/vim/vim/commit/65639032bb7b17996cd255d1508a1df4ad528a1f
Christian Brabandt <cb@256bit.org>
parents: 8581
diff changeset
84 let dict = {"tr": function('tr', ['hello', 'h', 'H'])}
537bbbd4e987 commit https://github.com/vim/vim/commit/65639032bb7b17996cd255d1508a1df4ad528a1f
Christian Brabandt <cb@256bit.org>
parents: 8581
diff changeset
85 call assert_equal("Hello", dict.tr())
8538
c337c813c64d commit https://github.com/vim/vim/commit/1735bc988c546cc962c5f94792815b4d7cb79710
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
86 endfunc
8575
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
87
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
88 func Test_partial_implicit()
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
89 let dict = {'name': 'foo'}
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
90 func dict.MyFunc(arg) dict
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
91 return self.name . '/' . a:arg
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
92 endfunc
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
93
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
94 call assert_equal('foo/bar', dict.MyFunc('bar'))
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
95
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
96 call assert_fails('let func = dict.MyFunc', 'E704:')
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
97 let Func = dict.MyFunc
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
98 call assert_equal('foo/aaa', Func('aaa'))
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
99
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
100 let Func = function(dict.MyFunc, ['bbb'])
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
101 call assert_equal('foo/bbb', Func())
b5209a4e5baf commit https://github.com/vim/vim/commit/ab1fa3955f25dfdb7e329c3bd76e175c93c8cb5e
Christian Brabandt <cb@256bit.org>
parents: 8548
diff changeset
102 endfunc
8581
fd454847836d commit https://github.com/vim/vim/commit/7a5c46a9df7ef01a4f6a620861c35400d5ad28d9
Christian Brabandt <cb@256bit.org>
parents: 8575
diff changeset
103
fd454847836d commit https://github.com/vim/vim/commit/7a5c46a9df7ef01a4f6a620861c35400d5ad28d9
Christian Brabandt <cb@256bit.org>
parents: 8575
diff changeset
104 fun InnerCall(funcref)
fd454847836d commit https://github.com/vim/vim/commit/7a5c46a9df7ef01a4f6a620861c35400d5ad28d9
Christian Brabandt <cb@256bit.org>
parents: 8575
diff changeset
105 return a:funcref
fd454847836d commit https://github.com/vim/vim/commit/7a5c46a9df7ef01a4f6a620861c35400d5ad28d9
Christian Brabandt <cb@256bit.org>
parents: 8575
diff changeset
106 endfu
fd454847836d commit https://github.com/vim/vim/commit/7a5c46a9df7ef01a4f6a620861c35400d5ad28d9
Christian Brabandt <cb@256bit.org>
parents: 8575
diff changeset
107
fd454847836d commit https://github.com/vim/vim/commit/7a5c46a9df7ef01a4f6a620861c35400d5ad28d9
Christian Brabandt <cb@256bit.org>
parents: 8575
diff changeset
108 fun OuterCall()
fd454847836d commit https://github.com/vim/vim/commit/7a5c46a9df7ef01a4f6a620861c35400d5ad28d9
Christian Brabandt <cb@256bit.org>
parents: 8575
diff changeset
109 let opt = { 'func' : function('sin') }
fd454847836d commit https://github.com/vim/vim/commit/7a5c46a9df7ef01a4f6a620861c35400d5ad28d9
Christian Brabandt <cb@256bit.org>
parents: 8575
diff changeset
110 call InnerCall(opt.func)
fd454847836d commit https://github.com/vim/vim/commit/7a5c46a9df7ef01a4f6a620861c35400d5ad28d9
Christian Brabandt <cb@256bit.org>
parents: 8575
diff changeset
111 endfu
fd454847836d commit https://github.com/vim/vim/commit/7a5c46a9df7ef01a4f6a620861c35400d5ad28d9
Christian Brabandt <cb@256bit.org>
parents: 8575
diff changeset
112
fd454847836d commit https://github.com/vim/vim/commit/7a5c46a9df7ef01a4f6a620861c35400d5ad28d9
Christian Brabandt <cb@256bit.org>
parents: 8575
diff changeset
113 func Test_function_in_dict()
fd454847836d commit https://github.com/vim/vim/commit/7a5c46a9df7ef01a4f6a620861c35400d5ad28d9
Christian Brabandt <cb@256bit.org>
parents: 8575
diff changeset
114 call OuterCall()
fd454847836d commit https://github.com/vim/vim/commit/7a5c46a9df7ef01a4f6a620861c35400d5ad28d9
Christian Brabandt <cb@256bit.org>
parents: 8575
diff changeset
115 endfunc
fd454847836d commit https://github.com/vim/vim/commit/7a5c46a9df7ef01a4f6a620861c35400d5ad28d9
Christian Brabandt <cb@256bit.org>
parents: 8575
diff changeset
116
8585
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
117 function! s:cache_clear() dict
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
118 return self.name
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
119 endfunction
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
120
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
121 func Test_script_function_in_dict()
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
122 let s:obj = {'name': 'foo'}
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
123 let s:obj2 = {'name': 'bar'}
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
124
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
125 let s:obj['clear'] = function('s:cache_clear')
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
126
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
127 call assert_equal('foo', s:obj.clear())
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
128 let F = s:obj.clear
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
129 call assert_equal('foo', F())
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
130 call assert_equal('foo', call(s:obj.clear, [], s:obj))
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
131 call assert_equal('bar', call(s:obj.clear, [], s:obj2))
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
132
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
133 let s:obj2['clear'] = function('s:cache_clear')
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
134 call assert_equal('bar', s:obj2.clear())
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
135 let B = s:obj2.clear
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
136 call assert_equal('bar', B())
ce37bbedcb65 commit https://github.com/vim/vim/commit/6f2e4b36c9d9908e1cace2b1b96e2c154a837bc2
Christian Brabandt <cb@256bit.org>
parents: 8583
diff changeset
137 endfunc
8591
5bc958a92849 commit https://github.com/vim/vim/commit/d22a18928ebcb465393da1418bb88204b97badb1
Christian Brabandt <cb@256bit.org>
parents: 8585
diff changeset
138
8599
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
139 function! s:cache_arg(arg) dict
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
140 let s:result = self.name . '/' . a:arg
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
141 return s:result
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
142 endfunction
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
143
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
144 func Test_script_function_in_dict_arg()
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
145 let s:obj = {'name': 'foo'}
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
146 let s:obj['clear'] = function('s:cache_arg')
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
147
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
148 call assert_equal('foo/bar', s:obj.clear('bar'))
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
149 let F = s:obj.clear
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
150 let s:result = ''
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
151 call assert_equal('foo/bar', F('bar'))
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
152 call assert_equal('foo/bar', s:result)
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
153
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
154 let s:obj['clear'] = function('s:cache_arg', ['bar'])
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
155 call assert_equal('foo/bar', s:obj.clear())
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
156 let s:result = ''
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
157 call s:obj.clear()
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
158 call assert_equal('foo/bar', s:result)
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
159
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
160 let F = s:obj.clear
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
161 call assert_equal('foo/bar', F())
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
162 let s:result = ''
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
163 call F()
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
164 call assert_equal('foo/bar', s:result)
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
165
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
166 call assert_equal('foo/bar', call(s:obj.clear, [], s:obj))
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
167 endfunc
ddb04cbe1e0c commit https://github.com/vim/vim/commit/9e63f61cb01c70fd71652f54b2d01ee27b2a3534
Christian Brabandt <cb@256bit.org>
parents: 8593
diff changeset
168
8591
5bc958a92849 commit https://github.com/vim/vim/commit/d22a18928ebcb465393da1418bb88204b97badb1
Christian Brabandt <cb@256bit.org>
parents: 8585
diff changeset
169 func Test_partial_exists()
5bc958a92849 commit https://github.com/vim/vim/commit/d22a18928ebcb465393da1418bb88204b97badb1
Christian Brabandt <cb@256bit.org>
parents: 8585
diff changeset
170 let F = function('MyFunc')
5bc958a92849 commit https://github.com/vim/vim/commit/d22a18928ebcb465393da1418bb88204b97badb1
Christian Brabandt <cb@256bit.org>
parents: 8585
diff changeset
171 call assert_true(exists('*F'))
5bc958a92849 commit https://github.com/vim/vim/commit/d22a18928ebcb465393da1418bb88204b97badb1
Christian Brabandt <cb@256bit.org>
parents: 8585
diff changeset
172 let lF = [F]
5bc958a92849 commit https://github.com/vim/vim/commit/d22a18928ebcb465393da1418bb88204b97badb1
Christian Brabandt <cb@256bit.org>
parents: 8585
diff changeset
173 call assert_true(exists('*lF[0]'))
5bc958a92849 commit https://github.com/vim/vim/commit/d22a18928ebcb465393da1418bb88204b97badb1
Christian Brabandt <cb@256bit.org>
parents: 8585
diff changeset
174
5bc958a92849 commit https://github.com/vim/vim/commit/d22a18928ebcb465393da1418bb88204b97badb1
Christian Brabandt <cb@256bit.org>
parents: 8585
diff changeset
175 let F = function('MyFunc', ['arg'])
5bc958a92849 commit https://github.com/vim/vim/commit/d22a18928ebcb465393da1418bb88204b97badb1
Christian Brabandt <cb@256bit.org>
parents: 8585
diff changeset
176 call assert_true(exists('*F'))
5bc958a92849 commit https://github.com/vim/vim/commit/d22a18928ebcb465393da1418bb88204b97badb1
Christian Brabandt <cb@256bit.org>
parents: 8585
diff changeset
177 let lF = [F]
5bc958a92849 commit https://github.com/vim/vim/commit/d22a18928ebcb465393da1418bb88204b97badb1
Christian Brabandt <cb@256bit.org>
parents: 8585
diff changeset
178 call assert_true(exists('*lF[0]'))
5bc958a92849 commit https://github.com/vim/vim/commit/d22a18928ebcb465393da1418bb88204b97badb1
Christian Brabandt <cb@256bit.org>
parents: 8585
diff changeset
179 endfunc
8637
ff41ece2e4b8 commit https://github.com/vim/vim/commit/5c29154b521e9948190be653cfda666ecbb63b5b
Christian Brabandt <cb@256bit.org>
parents: 8599
diff changeset
180
ff41ece2e4b8 commit https://github.com/vim/vim/commit/5c29154b521e9948190be653cfda666ecbb63b5b
Christian Brabandt <cb@256bit.org>
parents: 8599
diff changeset
181 func Test_partial_string()
ff41ece2e4b8 commit https://github.com/vim/vim/commit/5c29154b521e9948190be653cfda666ecbb63b5b
Christian Brabandt <cb@256bit.org>
parents: 8599
diff changeset
182 let F = function('MyFunc')
ff41ece2e4b8 commit https://github.com/vim/vim/commit/5c29154b521e9948190be653cfda666ecbb63b5b
Christian Brabandt <cb@256bit.org>
parents: 8599
diff changeset
183 call assert_equal("function('MyFunc')", string(F))
ff41ece2e4b8 commit https://github.com/vim/vim/commit/5c29154b521e9948190be653cfda666ecbb63b5b
Christian Brabandt <cb@256bit.org>
parents: 8599
diff changeset
184 let F = function('MyFunc', ['foo'])
ff41ece2e4b8 commit https://github.com/vim/vim/commit/5c29154b521e9948190be653cfda666ecbb63b5b
Christian Brabandt <cb@256bit.org>
parents: 8599
diff changeset
185 call assert_equal("function('MyFunc', ['foo'])", string(F))
ff41ece2e4b8 commit https://github.com/vim/vim/commit/5c29154b521e9948190be653cfda666ecbb63b5b
Christian Brabandt <cb@256bit.org>
parents: 8599
diff changeset
186 let F = function('MyFunc', ['foo', 'bar'])
ff41ece2e4b8 commit https://github.com/vim/vim/commit/5c29154b521e9948190be653cfda666ecbb63b5b
Christian Brabandt <cb@256bit.org>
parents: 8599
diff changeset
187 call assert_equal("function('MyFunc', ['foo', 'bar'])", string(F))
ff41ece2e4b8 commit https://github.com/vim/vim/commit/5c29154b521e9948190be653cfda666ecbb63b5b
Christian Brabandt <cb@256bit.org>
parents: 8599
diff changeset
188 let d = {'one': 1}
ff41ece2e4b8 commit https://github.com/vim/vim/commit/5c29154b521e9948190be653cfda666ecbb63b5b
Christian Brabandt <cb@256bit.org>
parents: 8599
diff changeset
189 let F = function('MyFunc', d)
ff41ece2e4b8 commit https://github.com/vim/vim/commit/5c29154b521e9948190be653cfda666ecbb63b5b
Christian Brabandt <cb@256bit.org>
parents: 8599
diff changeset
190 call assert_equal("function('MyFunc', {'one': 1})", string(F))
ff41ece2e4b8 commit https://github.com/vim/vim/commit/5c29154b521e9948190be653cfda666ecbb63b5b
Christian Brabandt <cb@256bit.org>
parents: 8599
diff changeset
191 let F = function('MyFunc', ['foo'], d)
ff41ece2e4b8 commit https://github.com/vim/vim/commit/5c29154b521e9948190be653cfda666ecbb63b5b
Christian Brabandt <cb@256bit.org>
parents: 8599
diff changeset
192 call assert_equal("function('MyFunc', ['foo'], {'one': 1})", string(F))
ff41ece2e4b8 commit https://github.com/vim/vim/commit/5c29154b521e9948190be653cfda666ecbb63b5b
Christian Brabandt <cb@256bit.org>
parents: 8599
diff changeset
193 endfunc
8698
13b0ed12a78a commit https://github.com/vim/vim/commit/e4eb6ff089e79e659acf33c17dd0fda7177de526
Christian Brabandt <cb@256bit.org>
parents: 8637
diff changeset
194
13b0ed12a78a commit https://github.com/vim/vim/commit/e4eb6ff089e79e659acf33c17dd0fda7177de526
Christian Brabandt <cb@256bit.org>
parents: 8637
diff changeset
195 func Test_func_unref()
13b0ed12a78a commit https://github.com/vim/vim/commit/e4eb6ff089e79e659acf33c17dd0fda7177de526
Christian Brabandt <cb@256bit.org>
parents: 8637
diff changeset
196 let obj = {}
13b0ed12a78a commit https://github.com/vim/vim/commit/e4eb6ff089e79e659acf33c17dd0fda7177de526
Christian Brabandt <cb@256bit.org>
parents: 8637
diff changeset
197 function! obj.func() abort
13b0ed12a78a commit https://github.com/vim/vim/commit/e4eb6ff089e79e659acf33c17dd0fda7177de526
Christian Brabandt <cb@256bit.org>
parents: 8637
diff changeset
198 endfunction
13b0ed12a78a commit https://github.com/vim/vim/commit/e4eb6ff089e79e659acf33c17dd0fda7177de526
Christian Brabandt <cb@256bit.org>
parents: 8637
diff changeset
199 let funcnumber = matchstr(string(obj.func), '^function(''\zs.\{-}\ze''')
13b0ed12a78a commit https://github.com/vim/vim/commit/e4eb6ff089e79e659acf33c17dd0fda7177de526
Christian Brabandt <cb@256bit.org>
parents: 8637
diff changeset
200 call assert_true(exists('*{' . funcnumber . '}'))
13b0ed12a78a commit https://github.com/vim/vim/commit/e4eb6ff089e79e659acf33c17dd0fda7177de526
Christian Brabandt <cb@256bit.org>
parents: 8637
diff changeset
201 unlet obj
13b0ed12a78a commit https://github.com/vim/vim/commit/e4eb6ff089e79e659acf33c17dd0fda7177de526
Christian Brabandt <cb@256bit.org>
parents: 8637
diff changeset
202 call assert_false(exists('*{' . funcnumber . '}'))
13b0ed12a78a commit https://github.com/vim/vim/commit/e4eb6ff089e79e659acf33c17dd0fda7177de526
Christian Brabandt <cb@256bit.org>
parents: 8637
diff changeset
203 endfunc
8710
af3cb5c068fd commit https://github.com/vim/vim/commit/24c77a1e3a2ad510582116229462b482d69b4b8e
Christian Brabandt <cb@256bit.org>
parents: 8698
diff changeset
204
af3cb5c068fd commit https://github.com/vim/vim/commit/24c77a1e3a2ad510582116229462b482d69b4b8e
Christian Brabandt <cb@256bit.org>
parents: 8698
diff changeset
205 func Test_tostring()
af3cb5c068fd commit https://github.com/vim/vim/commit/24c77a1e3a2ad510582116229462b482d69b4b8e
Christian Brabandt <cb@256bit.org>
parents: 8698
diff changeset
206 let d = {}
af3cb5c068fd commit https://github.com/vim/vim/commit/24c77a1e3a2ad510582116229462b482d69b4b8e
Christian Brabandt <cb@256bit.org>
parents: 8698
diff changeset
207 let d.d = d
af3cb5c068fd commit https://github.com/vim/vim/commit/24c77a1e3a2ad510582116229462b482d69b4b8e
Christian Brabandt <cb@256bit.org>
parents: 8698
diff changeset
208 function d.test3()
af3cb5c068fd commit https://github.com/vim/vim/commit/24c77a1e3a2ad510582116229462b482d69b4b8e
Christian Brabandt <cb@256bit.org>
parents: 8698
diff changeset
209 echo 42
af3cb5c068fd commit https://github.com/vim/vim/commit/24c77a1e3a2ad510582116229462b482d69b4b8e
Christian Brabandt <cb@256bit.org>
parents: 8698
diff changeset
210 endfunction
af3cb5c068fd commit https://github.com/vim/vim/commit/24c77a1e3a2ad510582116229462b482d69b4b8e
Christian Brabandt <cb@256bit.org>
parents: 8698
diff changeset
211 try
af3cb5c068fd commit https://github.com/vim/vim/commit/24c77a1e3a2ad510582116229462b482d69b4b8e
Christian Brabandt <cb@256bit.org>
parents: 8698
diff changeset
212 call string(d.test3)
af3cb5c068fd commit https://github.com/vim/vim/commit/24c77a1e3a2ad510582116229462b482d69b4b8e
Christian Brabandt <cb@256bit.org>
parents: 8698
diff changeset
213 catch
af3cb5c068fd commit https://github.com/vim/vim/commit/24c77a1e3a2ad510582116229462b482d69b4b8e
Christian Brabandt <cb@256bit.org>
parents: 8698
diff changeset
214 call assert_true(v:false, v:exception)
af3cb5c068fd commit https://github.com/vim/vim/commit/24c77a1e3a2ad510582116229462b482d69b4b8e
Christian Brabandt <cb@256bit.org>
parents: 8698
diff changeset
215 endtry
af3cb5c068fd commit https://github.com/vim/vim/commit/24c77a1e3a2ad510582116229462b482d69b4b8e
Christian Brabandt <cb@256bit.org>
parents: 8698
diff changeset
216 endfunc
8712
65130a9d3386 commit https://github.com/vim/vim/commit/c5fbe8af4cd80789f831b78aa44ff0b238138769
Christian Brabandt <cb@256bit.org>
parents: 8710
diff changeset
217
65130a9d3386 commit https://github.com/vim/vim/commit/c5fbe8af4cd80789f831b78aa44ff0b238138769
Christian Brabandt <cb@256bit.org>
parents: 8710
diff changeset
218 func Test_redefine_dict_func()
65130a9d3386 commit https://github.com/vim/vim/commit/c5fbe8af4cd80789f831b78aa44ff0b238138769
Christian Brabandt <cb@256bit.org>
parents: 8710
diff changeset
219 let d = {}
65130a9d3386 commit https://github.com/vim/vim/commit/c5fbe8af4cd80789f831b78aa44ff0b238138769
Christian Brabandt <cb@256bit.org>
parents: 8710
diff changeset
220 function d.test4()
65130a9d3386 commit https://github.com/vim/vim/commit/c5fbe8af4cd80789f831b78aa44ff0b238138769
Christian Brabandt <cb@256bit.org>
parents: 8710
diff changeset
221 endfunction
65130a9d3386 commit https://github.com/vim/vim/commit/c5fbe8af4cd80789f831b78aa44ff0b238138769
Christian Brabandt <cb@256bit.org>
parents: 8710
diff changeset
222 let d.test4 = d.test4
65130a9d3386 commit https://github.com/vim/vim/commit/c5fbe8af4cd80789f831b78aa44ff0b238138769
Christian Brabandt <cb@256bit.org>
parents: 8710
diff changeset
223 try
65130a9d3386 commit https://github.com/vim/vim/commit/c5fbe8af4cd80789f831b78aa44ff0b238138769
Christian Brabandt <cb@256bit.org>
parents: 8710
diff changeset
224 function! d.test4(name)
65130a9d3386 commit https://github.com/vim/vim/commit/c5fbe8af4cd80789f831b78aa44ff0b238138769
Christian Brabandt <cb@256bit.org>
parents: 8710
diff changeset
225 endfunction
65130a9d3386 commit https://github.com/vim/vim/commit/c5fbe8af4cd80789f831b78aa44ff0b238138769
Christian Brabandt <cb@256bit.org>
parents: 8710
diff changeset
226 catch
65130a9d3386 commit https://github.com/vim/vim/commit/c5fbe8af4cd80789f831b78aa44ff0b238138769
Christian Brabandt <cb@256bit.org>
parents: 8710
diff changeset
227 call assert_true(v:errmsg, v:exception)
65130a9d3386 commit https://github.com/vim/vim/commit/c5fbe8af4cd80789f831b78aa44ff0b238138769
Christian Brabandt <cb@256bit.org>
parents: 8710
diff changeset
228 endtry
65130a9d3386 commit https://github.com/vim/vim/commit/c5fbe8af4cd80789f831b78aa44ff0b238138769
Christian Brabandt <cb@256bit.org>
parents: 8710
diff changeset
229 endfunc
8714
a5224eeb3546 commit https://github.com/vim/vim/commit/4c90861e9f864eab94f043c432acff508396ed62
Christian Brabandt <cb@256bit.org>
parents: 8712
diff changeset
230
a5224eeb3546 commit https://github.com/vim/vim/commit/4c90861e9f864eab94f043c432acff508396ed62
Christian Brabandt <cb@256bit.org>
parents: 8712
diff changeset
231 func Test_bind_in_python()
a5224eeb3546 commit https://github.com/vim/vim/commit/4c90861e9f864eab94f043c432acff508396ed62
Christian Brabandt <cb@256bit.org>
parents: 8712
diff changeset
232 if has('python')
a5224eeb3546 commit https://github.com/vim/vim/commit/4c90861e9f864eab94f043c432acff508396ed62
Christian Brabandt <cb@256bit.org>
parents: 8712
diff changeset
233 let g:d = {}
a5224eeb3546 commit https://github.com/vim/vim/commit/4c90861e9f864eab94f043c432acff508396ed62
Christian Brabandt <cb@256bit.org>
parents: 8712
diff changeset
234 function g:d.test2()
a5224eeb3546 commit https://github.com/vim/vim/commit/4c90861e9f864eab94f043c432acff508396ed62
Christian Brabandt <cb@256bit.org>
parents: 8712
diff changeset
235 endfunction
a5224eeb3546 commit https://github.com/vim/vim/commit/4c90861e9f864eab94f043c432acff508396ed62
Christian Brabandt <cb@256bit.org>
parents: 8712
diff changeset
236 python import vim
a5224eeb3546 commit https://github.com/vim/vim/commit/4c90861e9f864eab94f043c432acff508396ed62
Christian Brabandt <cb@256bit.org>
parents: 8712
diff changeset
237 try
a5224eeb3546 commit https://github.com/vim/vim/commit/4c90861e9f864eab94f043c432acff508396ed62
Christian Brabandt <cb@256bit.org>
parents: 8712
diff changeset
238 call assert_equal(pyeval('vim.bindeval("g:d.test2")'), g:d.test2)
a5224eeb3546 commit https://github.com/vim/vim/commit/4c90861e9f864eab94f043c432acff508396ed62
Christian Brabandt <cb@256bit.org>
parents: 8712
diff changeset
239 catch
a5224eeb3546 commit https://github.com/vim/vim/commit/4c90861e9f864eab94f043c432acff508396ed62
Christian Brabandt <cb@256bit.org>
parents: 8712
diff changeset
240 call assert_true(v:false, v:exception)
a5224eeb3546 commit https://github.com/vim/vim/commit/4c90861e9f864eab94f043c432acff508396ed62
Christian Brabandt <cb@256bit.org>
parents: 8712
diff changeset
241 endtry
a5224eeb3546 commit https://github.com/vim/vim/commit/4c90861e9f864eab94f043c432acff508396ed62
Christian Brabandt <cb@256bit.org>
parents: 8712
diff changeset
242 endif
a5224eeb3546 commit https://github.com/vim/vim/commit/4c90861e9f864eab94f043c432acff508396ed62
Christian Brabandt <cb@256bit.org>
parents: 8712
diff changeset
243 endfunc
8855
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
244
8863
e1b84109506a commit https://github.com/vim/vim/commit/107e1eef1df3b786ad3ad49fbdb9e058649303b5
Christian Brabandt <cb@256bit.org>
parents: 8855
diff changeset
245 " This caused double free on exit if EXITFREE is defined.
8855
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
246 func Test_cyclic_list_arg()
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
247 let l = []
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
248 let Pt = function('string', [l])
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
249 call add(l, Pt)
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
250 unlet l
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
251 unlet Pt
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
252 endfunc
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
253
8863
e1b84109506a commit https://github.com/vim/vim/commit/107e1eef1df3b786ad3ad49fbdb9e058649303b5
Christian Brabandt <cb@256bit.org>
parents: 8855
diff changeset
254 " This caused double free on exit if EXITFREE is defined.
8855
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
255 func Test_cyclic_dict_arg()
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
256 let d = {}
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
257 let Pt = function('string', [d])
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
258 let d.Pt = Pt
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
259 unlet d
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
260 unlet Pt
b76195a1e38e commit https://github.com/vim/vim/commit/ddecc25947dbdd689d5bcaed32f298a08abdd497
Christian Brabandt <cb@256bit.org>
parents: 8714
diff changeset
261 endfunc
8863
e1b84109506a commit https://github.com/vim/vim/commit/107e1eef1df3b786ad3ad49fbdb9e058649303b5
Christian Brabandt <cb@256bit.org>
parents: 8855
diff changeset
262
9846
95ad2692dec0 commit https://github.com/vim/vim/commit/0e5d3a2940ead6c8ee3bacacea4153b647b67cca
Christian Brabandt <cb@256bit.org>
parents: 9764
diff changeset
263 func Ignored3(job1, job2, status)
8863
e1b84109506a commit https://github.com/vim/vim/commit/107e1eef1df3b786ad3ad49fbdb9e058649303b5
Christian Brabandt <cb@256bit.org>
parents: 8855
diff changeset
264 endfunc
e1b84109506a commit https://github.com/vim/vim/commit/107e1eef1df3b786ad3ad49fbdb9e058649303b5
Christian Brabandt <cb@256bit.org>
parents: 8855
diff changeset
265
e1b84109506a commit https://github.com/vim/vim/commit/107e1eef1df3b786ad3ad49fbdb9e058649303b5
Christian Brabandt <cb@256bit.org>
parents: 8855
diff changeset
266 func Test_cycle_partial_job()
8865
be36707a661a commit https://github.com/vim/vim/commit/9e4043757cd2fc18d071fdd98abf297d74878943
Christian Brabandt <cb@256bit.org>
parents: 8863
diff changeset
267 if has('job')
be36707a661a commit https://github.com/vim/vim/commit/9e4043757cd2fc18d071fdd98abf297d74878943
Christian Brabandt <cb@256bit.org>
parents: 8863
diff changeset
268 let job = job_start('echo')
9846
95ad2692dec0 commit https://github.com/vim/vim/commit/0e5d3a2940ead6c8ee3bacacea4153b647b67cca
Christian Brabandt <cb@256bit.org>
parents: 9764
diff changeset
269 call job_setoptions(job, {'exit_cb': function('Ignored3', [job])})
8865
be36707a661a commit https://github.com/vim/vim/commit/9e4043757cd2fc18d071fdd98abf297d74878943
Christian Brabandt <cb@256bit.org>
parents: 8863
diff changeset
270 unlet job
be36707a661a commit https://github.com/vim/vim/commit/9e4043757cd2fc18d071fdd98abf297d74878943
Christian Brabandt <cb@256bit.org>
parents: 8863
diff changeset
271 endif
8863
e1b84109506a commit https://github.com/vim/vim/commit/107e1eef1df3b786ad3ad49fbdb9e058649303b5
Christian Brabandt <cb@256bit.org>
parents: 8855
diff changeset
272 endfunc
e1b84109506a commit https://github.com/vim/vim/commit/107e1eef1df3b786ad3ad49fbdb9e058649303b5
Christian Brabandt <cb@256bit.org>
parents: 8855
diff changeset
273
9846
95ad2692dec0 commit https://github.com/vim/vim/commit/0e5d3a2940ead6c8ee3bacacea4153b647b67cca
Christian Brabandt <cb@256bit.org>
parents: 9764
diff changeset
274 func Ignored2(job, status)
95ad2692dec0 commit https://github.com/vim/vim/commit/0e5d3a2940ead6c8ee3bacacea4153b647b67cca
Christian Brabandt <cb@256bit.org>
parents: 9764
diff changeset
275 endfunc
95ad2692dec0 commit https://github.com/vim/vim/commit/0e5d3a2940ead6c8ee3bacacea4153b647b67cca
Christian Brabandt <cb@256bit.org>
parents: 9764
diff changeset
276
8863
e1b84109506a commit https://github.com/vim/vim/commit/107e1eef1df3b786ad3ad49fbdb9e058649303b5
Christian Brabandt <cb@256bit.org>
parents: 8855
diff changeset
277 func Test_ref_job_partial_dict()
8865
be36707a661a commit https://github.com/vim/vim/commit/9e4043757cd2fc18d071fdd98abf297d74878943
Christian Brabandt <cb@256bit.org>
parents: 8863
diff changeset
278 if has('job')
be36707a661a commit https://github.com/vim/vim/commit/9e4043757cd2fc18d071fdd98abf297d74878943
Christian Brabandt <cb@256bit.org>
parents: 8863
diff changeset
279 let g:ref_job = job_start('echo')
be36707a661a commit https://github.com/vim/vim/commit/9e4043757cd2fc18d071fdd98abf297d74878943
Christian Brabandt <cb@256bit.org>
parents: 8863
diff changeset
280 let d = {'a': 'b'}
9846
95ad2692dec0 commit https://github.com/vim/vim/commit/0e5d3a2940ead6c8ee3bacacea4153b647b67cca
Christian Brabandt <cb@256bit.org>
parents: 9764
diff changeset
281 call job_setoptions(g:ref_job, {'exit_cb': function('Ignored2', [], d)})
8865
be36707a661a commit https://github.com/vim/vim/commit/9e4043757cd2fc18d071fdd98abf297d74878943
Christian Brabandt <cb@256bit.org>
parents: 8863
diff changeset
282 endif
8863
e1b84109506a commit https://github.com/vim/vim/commit/107e1eef1df3b786ad3ad49fbdb9e058649303b5
Christian Brabandt <cb@256bit.org>
parents: 8855
diff changeset
283 endfunc
9104
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
284
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
285 func Test_auto_partial_rebind()
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
286 let dict1 = {'name': 'dict1'}
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
287 func! dict1.f1()
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
288 return self.name
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
289 endfunc
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
290 let dict1.f2 = function(dict1.f1, dict1)
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
291
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
292 call assert_equal('dict1', dict1.f1())
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
293 call assert_equal('dict1', dict1['f1']())
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
294 call assert_equal('dict1', dict1.f2())
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
295 call assert_equal('dict1', dict1['f2']())
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
296
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
297 let dict2 = {'name': 'dict2'}
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
298 let dict2.f1 = dict1.f1
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
299 let dict2.f2 = dict1.f2
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
300
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
301 call assert_equal('dict2', dict2.f1())
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
302 call assert_equal('dict2', dict2['f1']())
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
303 call assert_equal('dict1', dict2.f2())
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
304 call assert_equal('dict1', dict2['f2']())
2242a5766417 commit https://github.com/vim/vim/commit/1d429610bf9e99a6252be8abbc910d6667e4d1da
Christian Brabandt <cb@256bit.org>
parents: 8865
diff changeset
305 endfunc
9110
6d3888e2232c commit https://github.com/vim/vim/commit/2bbf8eff6fab16d86e7bcfc0da1962d31bec7891
Christian Brabandt <cb@256bit.org>
parents: 9104
diff changeset
306
6d3888e2232c commit https://github.com/vim/vim/commit/2bbf8eff6fab16d86e7bcfc0da1962d31bec7891
Christian Brabandt <cb@256bit.org>
parents: 9104
diff changeset
307 func Test_get_partial_items()
6d3888e2232c commit https://github.com/vim/vim/commit/2bbf8eff6fab16d86e7bcfc0da1962d31bec7891
Christian Brabandt <cb@256bit.org>
parents: 9104
diff changeset
308 let dict = {'name': 'hello'}
9117
0cc48b3cd884 commit https://github.com/vim/vim/commit/03e19a04ac2ca55643663b97b6ab94043233dcbd
Christian Brabandt <cb@256bit.org>
parents: 9110
diff changeset
309 let args = ["foo", "bar"]
0cc48b3cd884 commit https://github.com/vim/vim/commit/03e19a04ac2ca55643663b97b6ab94043233dcbd
Christian Brabandt <cb@256bit.org>
parents: 9110
diff changeset
310 let Func = function('MyDictFunc')
0cc48b3cd884 commit https://github.com/vim/vim/commit/03e19a04ac2ca55643663b97b6ab94043233dcbd
Christian Brabandt <cb@256bit.org>
parents: 9110
diff changeset
311 let Cb = function('MyDictFunc', args, dict)
0cc48b3cd884 commit https://github.com/vim/vim/commit/03e19a04ac2ca55643663b97b6ab94043233dcbd
Christian Brabandt <cb@256bit.org>
parents: 9110
diff changeset
312
0cc48b3cd884 commit https://github.com/vim/vim/commit/03e19a04ac2ca55643663b97b6ab94043233dcbd
Christian Brabandt <cb@256bit.org>
parents: 9110
diff changeset
313 call assert_equal(Func, get(Cb, 'func'))
0cc48b3cd884 commit https://github.com/vim/vim/commit/03e19a04ac2ca55643663b97b6ab94043233dcbd
Christian Brabandt <cb@256bit.org>
parents: 9110
diff changeset
314 call assert_equal('MyDictFunc', get(Cb, 'name'))
0cc48b3cd884 commit https://github.com/vim/vim/commit/03e19a04ac2ca55643663b97b6ab94043233dcbd
Christian Brabandt <cb@256bit.org>
parents: 9110
diff changeset
315 call assert_equal(args, get(Cb, 'args'))
9110
6d3888e2232c commit https://github.com/vim/vim/commit/2bbf8eff6fab16d86e7bcfc0da1962d31bec7891
Christian Brabandt <cb@256bit.org>
parents: 9104
diff changeset
316 call assert_equal(dict, get(Cb, 'dict'))
6d3888e2232c commit https://github.com/vim/vim/commit/2bbf8eff6fab16d86e7bcfc0da1962d31bec7891
Christian Brabandt <cb@256bit.org>
parents: 9104
diff changeset
317 call assert_fails('call get(Cb, "xxx")', 'E475:')
9117
0cc48b3cd884 commit https://github.com/vim/vim/commit/03e19a04ac2ca55643663b97b6ab94043233dcbd
Christian Brabandt <cb@256bit.org>
parents: 9110
diff changeset
318
0cc48b3cd884 commit https://github.com/vim/vim/commit/03e19a04ac2ca55643663b97b6ab94043233dcbd
Christian Brabandt <cb@256bit.org>
parents: 9110
diff changeset
319 call assert_equal(Func, get(Func, 'func'))
0cc48b3cd884 commit https://github.com/vim/vim/commit/03e19a04ac2ca55643663b97b6ab94043233dcbd
Christian Brabandt <cb@256bit.org>
parents: 9110
diff changeset
320 call assert_equal('MyDictFunc', get(Func, 'name'))
0cc48b3cd884 commit https://github.com/vim/vim/commit/03e19a04ac2ca55643663b97b6ab94043233dcbd
Christian Brabandt <cb@256bit.org>
parents: 9110
diff changeset
321 call assert_equal([], get(Func, 'args'))
0cc48b3cd884 commit https://github.com/vim/vim/commit/03e19a04ac2ca55643663b97b6ab94043233dcbd
Christian Brabandt <cb@256bit.org>
parents: 9110
diff changeset
322 call assert_true(empty( get(Func, 'dict')))
9110
6d3888e2232c commit https://github.com/vim/vim/commit/2bbf8eff6fab16d86e7bcfc0da1962d31bec7891
Christian Brabandt <cb@256bit.org>
parents: 9104
diff changeset
323 endfunc
9183
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
324
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
325 func Test_compare_partials()
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
326 let d1 = {}
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
327 let d2 = {}
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
328
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
329 function d1.f1() dict
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
330 endfunction
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
331
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
332 function d1.f2() dict
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
333 endfunction
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
334
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
335 let F1 = get(d1, 'f1')
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
336 let F2 = get(d1, 'f2')
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
337
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
338 let F1d1 = function(F1, d1)
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
339 let F2d1 = function(F2, d2)
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
340 let F1d1a1 = function(F1d1, [1])
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
341 let F1d1a12 = function(F1d1, [1, 2])
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
342 let F1a1 = function(F1, [1])
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
343 let F1a2 = function(F1, [2])
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
344 let F1d2 = function(F1, d2)
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
345 let d3 = {'f1': F1, 'f2': F2}
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
346 let F1d3 = function(F1, d3)
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
347 let F1ad1 = function(F1, [d1])
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
348 let F1ad3 = function(F1, [d3])
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
349
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
350 call assert_match('^function(''\d\+'')$', string(F1)) " Not a partial
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
351 call assert_match('^function(''\d\+'')$', string(F2)) " Not a partial
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
352 call assert_match('^function(''\d\+'', {.*})$', string(F1d1)) " A partial
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
353 call assert_match('^function(''\d\+'', {.*})$', string(F2d1)) " A partial
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
354 call assert_match('^function(''\d\+'', \[.*\])$', string(F1a1)) " No dict
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
355
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
356 " !=
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
357 let X = F1
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
358 call assert_false(F1 != X) " same function
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
359 let X = F1d1
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
360 call assert_false(F1d1 != X) " same partial
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
361 let X = F1d1a1
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
362 call assert_false(F1d1a1 != X) " same partial
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
363 let X = F1a1
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
364 call assert_false(F1a1 != X) " same partial
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
365
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
366 call assert_true(F1 != F2) " Different functions
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
367 call assert_true(F1 != F1d1) " Partial /= non-partial
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
368 call assert_true(F1d1a1 != F1d1a12) " Different number of arguments
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
369 call assert_true(F1a1 != F1d1a12) " One has no dict
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
370 call assert_true(F1a1 != F1a2) " Different arguments
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
371 call assert_true(F1d2 != F1d1) " Different dictionaries
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
372 call assert_false(F1d1 != F1d3) " Equal dictionaries, even though d1 isnot d3
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
373
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
374 " isnot, option 1
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
375 call assert_true(F1 isnot# F2) " Different functions
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
376 call assert_true(F1 isnot# F1d1) " Partial /= non-partial
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
377 call assert_true(F1d1 isnot# F1d3) " d1 isnot d3, even though d1 == d3
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
378 call assert_true(F1a1 isnot# F1d1a12) " One has no dict
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
379 call assert_true(F1a1 isnot# F1a2) " Different number of arguments
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
380 call assert_true(F1ad1 isnot# F1ad3) " In arguments d1 isnot d3
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
381
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
382 " isnot, option 2
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
383 call assert_true(F1 isnot# F2) " Different functions
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
384 call assert_true(F1 isnot# F1d1) " Partial /= non-partial
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
385 call assert_true(d1.f1 isnot# d1.f1) " handle_subscript creates new partial each time
988c8ab557bf commit https://github.com/vim/vim/commit/8e759ba8651428995b338b66c615367259f79766
Christian Brabandt <cb@256bit.org>
parents: 9145
diff changeset
386 endfunc