xref: /vim-8.2.3635/src/testdir/test_partial.vim (revision 790500a8)
11735bc98SBram Moolenaar" Test binding arguments to a Funcref.
21735bc98SBram Moolenaar
31735bc98SBram Moolenaarfunc MyFunc(arg1, arg2, arg3)
41735bc98SBram Moolenaar  return a:arg1 . '/' . a:arg2 . '/' . a:arg3
51735bc98SBram Moolenaarendfunc
61735bc98SBram Moolenaar
71735bc98SBram Moolenaarfunc MySort(up, one, two)
81735bc98SBram Moolenaar  if a:one == a:two
91735bc98SBram Moolenaar    return 0
101735bc98SBram Moolenaar  endif
111735bc98SBram Moolenaar  if a:up
12*790500a8SBram Moolenaar    return a:one > a:two ? 1 : -1
131735bc98SBram Moolenaar  endif
14*790500a8SBram Moolenaar  return a:one < a:two ? 1 : -1
151735bc98SBram Moolenaarendfunc
161735bc98SBram Moolenaar
171735bc98SBram Moolenaarfunc Test_partial_args()
181735bc98SBram Moolenaar  let Cb = function('MyFunc', ["foo", "bar"])
191735bc98SBram Moolenaar  call assert_equal("foo/bar/xxx", Cb("xxx"))
201735bc98SBram Moolenaar  call assert_equal("foo/bar/yyy", call(Cb, ["yyy"]))
211735bc98SBram Moolenaar
221735bc98SBram Moolenaar  let Sort = function('MySort', [1])
231735bc98SBram Moolenaar  call assert_equal([1, 2, 3], sort([3, 1, 2], Sort))
241735bc98SBram Moolenaar  let Sort = function('MySort', [0])
251735bc98SBram Moolenaar  call assert_equal([3, 2, 1], sort([3, 1, 2], Sort))
261735bc98SBram Moolenaarendfunc
271735bc98SBram Moolenaar
281735bc98SBram Moolenaarfunc MyDictFunc(arg1, arg2) dict
291735bc98SBram Moolenaar  return self.name . '/' . a:arg1 . '/' . a:arg2
301735bc98SBram Moolenaarendfunc
311735bc98SBram Moolenaar
321735bc98SBram Moolenaarfunc Test_partial_dict()
331735bc98SBram Moolenaar  let dict = {'name': 'hello'}
341735bc98SBram Moolenaar  let Cb = function('MyDictFunc', ["foo", "bar"], dict)
351735bc98SBram Moolenaar  call assert_equal("hello/foo/bar", Cb())
361735bc98SBram Moolenaar  call assert_fails('Cb("xxx")', 'E492:')
371735bc98SBram Moolenaar  let Cb = function('MyDictFunc', ["foo"], dict)
381735bc98SBram Moolenaar  call assert_equal("hello/foo/xxx", Cb("xxx"))
391735bc98SBram Moolenaar  call assert_fails('Cb()', 'E492:')
401735bc98SBram Moolenaar  let Cb = function('MyDictFunc', dict)
411735bc98SBram Moolenaar  call assert_equal("hello/xxx/yyy", Cb("xxx", "yyy"))
421735bc98SBram Moolenaar  call assert_fails('Cb()', 'E492:')
431735bc98SBram Moolenaarendfunc
44