Bram Moolenaar | 975b527 | 2016-03-15 23:10:59 +0100 | [diff] [blame] | 1 | " Test for timers |
| 2 | |
| 3 | if !has('timers') |
| 4 | finish |
| 5 | endif |
| 6 | |
| 7 | func MyHandler(timer) |
| 8 | let s:val += 1 |
| 9 | endfunc |
| 10 | |
Bram Moolenaar | e3188e2 | 2016-05-31 21:13:04 +0200 | [diff] [blame] | 11 | func MyHandlerWithLists(lists, timer) |
| 12 | let x = string(a:lists) |
| 13 | endfunc |
| 14 | |
Bram Moolenaar | 975b527 | 2016-03-15 23:10:59 +0100 | [diff] [blame] | 15 | func Test_oneshot() |
| 16 | let s:val = 0 |
| 17 | let timer = timer_start(50, 'MyHandler') |
| 18 | sleep 200m |
| 19 | call assert_equal(1, s:val) |
| 20 | endfunc |
| 21 | |
| 22 | func 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) |
| 27 | endfunc |
| 28 | |
| 29 | func 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) |
| 36 | endfunc |
Bram Moolenaar | 92e35ef | 2016-03-26 18:20:41 +0100 | [diff] [blame] | 37 | |
| 38 | func 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) |
| 48 | endfunc |
Bram Moolenaar | e3188e2 | 2016-05-31 21:13:04 +0200 | [diff] [blame] | 49 | |
| 50 | func Test_retain_partial() |
| 51 | call timer_start(100, function('MyHandlerWithLists', [['a']])) |
| 52 | call test_garbagecollect_now() |
| 53 | sleep 200m |
| 54 | endfunc |
Bram Moolenaar | 92e35ef | 2016-03-26 18:20:41 +0100 | [diff] [blame] | 55 | " vim: ts=2 sw=0 et |