xref: /vim-8.2.3635/src/testdir/test_timers.vim (revision ea034590)
1" Test for timers
2
3if !has('timers')
4  finish
5endif
6
7func MyHandler(timer)
8  let s:val += 1
9endfunc
10
11func MyHandlerWithLists(lists, timer)
12  let x = string(a:lists)
13endfunc
14
15func Test_oneshot()
16  let s:val = 0
17  let timer = timer_start(50, 'MyHandler')
18  sleep 200m
19  call assert_equal(1, s:val)
20endfunc
21
22func Test_repeat_three()
23  let s:val = 0
24  let timer = timer_start(50, 'MyHandler', {'repeat': 3})
25  sleep 500m
26  call assert_equal(3, s:val)
27endfunc
28
29func Test_repeat_many()
30  let s:val = 0
31  let timer = timer_start(50, 'MyHandler', {'repeat': -1})
32  sleep 200m
33  call timer_stop(timer)
34  call assert_true(s:val > 1)
35  call assert_true(s:val < 5)
36endfunc
37
38func Test_with_partial_callback()
39  let s:val = 0
40  let s:meow = {}
41  function s:meow.bite(...)
42    let s:val += 1
43  endfunction
44
45  call timer_start(50, s:meow.bite)
46  sleep 200m
47  call assert_equal(1, s:val)
48endfunc
49
50func Test_retain_partial()
51  call timer_start(100, function('MyHandlerWithLists', [['a']]))
52  call test_garbagecollect_now()
53  sleep 200m
54endfunc
55" vim: ts=2 sw=0 et
56