blob: 061f839668e0326b3a211856a3ffaa30a9e537f8 [file] [log] [blame]
Bram Moolenaar1735bc92016-03-14 23:05:14 +01001" Test binding arguments to a Funcref.
2
3func MyFunc(arg1, arg2, arg3)
4 return a:arg1 . '/' . a:arg2 . '/' . a:arg3
5endfunc
6
7func MySort(up, one, two)
8 if a:one == a:two
9 return 0
10 endif
11 if a:up
12 return a:one > a:two
13 endif
14 return a:one < a:two
15endfunc
16
17func Test_partial_args()
18 let Cb = function('MyFunc', ["foo", "bar"])
19 call assert_equal("foo/bar/xxx", Cb("xxx"))
20 call assert_equal("foo/bar/yyy", call(Cb, ["yyy"]))
21
22 let Sort = function('MySort', [1])
23 call assert_equal([1, 2, 3], sort([3, 1, 2], Sort))
24 let Sort = function('MySort', [0])
25 call assert_equal([3, 2, 1], sort([3, 1, 2], Sort))
26endfunc
27
28func MyDictFunc(arg1, arg2) dict
29 return self.name . '/' . a:arg1 . '/' . a:arg2
30endfunc
31
32func Test_partial_dict()
33 let dict = {'name': 'hello'}
34 let Cb = function('MyDictFunc', ["foo", "bar"], dict)
35 call assert_equal("hello/foo/bar", Cb())
36 call assert_fails('Cb("xxx")', 'E492:')
37 let Cb = function('MyDictFunc', ["foo"], dict)
38 call assert_equal("hello/foo/xxx", Cb("xxx"))
39 call assert_fails('Cb()', 'E492:')
40 let Cb = function('MyDictFunc', dict)
41 call assert_equal("hello/xxx/yyy", Cb("xxx", "yyy"))
42 call assert_fails('Cb()', 'E492:')
43endfunc