mirror of
https://github.com/neovim/neovim.git
synced 2025-09-27 21:48:35 +00:00
tests: load-adjust timer tests (oldtest)
This commit is contained in:
30
src/nvim/testdir/load.vim
Normal file
30
src/nvim/testdir/load.vim
Normal file
@@ -0,0 +1,30 @@
|
||||
function! s:load_factor() abort
|
||||
let timeout = 200
|
||||
let times = []
|
||||
|
||||
for _ in range(5)
|
||||
let g:val = 0
|
||||
call timer_start(timeout, {-> nvim_set_var('val', 1)})
|
||||
let start = reltime()
|
||||
while 1
|
||||
sleep 10m
|
||||
if g:val == 1
|
||||
let g:waited_in_ms = float2nr(reltimefloat(reltime(start)) * 1000)
|
||||
break
|
||||
endif
|
||||
endwhile
|
||||
call insert(times, g:waited_in_ms, 0)
|
||||
endfor
|
||||
|
||||
let longest = max(times)
|
||||
let factor = (longest + 50.0) / timeout
|
||||
|
||||
return factor
|
||||
endfunction
|
||||
|
||||
" Compute load factor only once.
|
||||
let s:load_factor = s:load_factor()
|
||||
|
||||
function! LoadAdjust(num) abort
|
||||
return float2nr(ceil(a:num * s:load_factor))
|
||||
endfunction
|
@@ -18,6 +18,8 @@ func Test_vim_did_enter()
|
||||
endfunc
|
||||
|
||||
if has('timers')
|
||||
source load.vim
|
||||
|
||||
func ExitInsertMode(id)
|
||||
call feedkeys("\<Esc>")
|
||||
endfunc
|
||||
@@ -29,7 +31,7 @@ if has('timers')
|
||||
let g:triggered = 0
|
||||
au CursorHoldI * let g:triggered += 1
|
||||
set updatetime=20
|
||||
call timer_start(100, 'ExitInsertMode')
|
||||
call timer_start(LoadAdjust(100), 'ExitInsertMode')
|
||||
call feedkeys('a', 'x!')
|
||||
call assert_equal(1, g:triggered)
|
||||
au! CursorHoldI
|
||||
@@ -40,7 +42,7 @@ if has('timers')
|
||||
let g:triggered = 0
|
||||
au CursorHoldI * let g:triggered += 1
|
||||
set updatetime=20
|
||||
call timer_start(100, 'ExitInsertMode')
|
||||
call timer_start(LoadAdjust(100), 'ExitInsertMode')
|
||||
" CursorHoldI does not trigger after CTRL-X
|
||||
call feedkeys("a\<C-X>", 'x!')
|
||||
call assert_equal(0, g:triggered)
|
||||
|
@@ -23,6 +23,8 @@ function! Test_lambda_with_timer()
|
||||
return
|
||||
endif
|
||||
|
||||
source load.vim
|
||||
|
||||
let s:n = 0
|
||||
let s:timer_id = 0
|
||||
function! s:Foo()
|
||||
@@ -31,15 +33,19 @@ function! Test_lambda_with_timer()
|
||||
endfunction
|
||||
|
||||
call s:Foo()
|
||||
sleep 210ms
|
||||
sleep 210m
|
||||
" do not collect lambda
|
||||
call test_garbagecollect_now()
|
||||
let m = s:n
|
||||
sleep 230ms
|
||||
let m = LoadAdjust(s:n)
|
||||
sleep 230m
|
||||
call timer_stop(s:timer_id)
|
||||
|
||||
let n = LoadAdjust(s:n)
|
||||
let nine = LoadAdjust(9)
|
||||
|
||||
call assert_true(m > 1)
|
||||
call assert_true(s:n > m + 1)
|
||||
call assert_true(s:n < 9)
|
||||
call assert_true(n > m + 1)
|
||||
call assert_true(n < nine)
|
||||
endfunction
|
||||
|
||||
function! Test_lambda_with_partial()
|
||||
|
@@ -5,6 +5,7 @@ if !has('timers')
|
||||
endif
|
||||
|
||||
source shared.vim
|
||||
source load.vim
|
||||
|
||||
func MyHandler(timer)
|
||||
let g:val += 1
|
||||
@@ -14,13 +15,17 @@ func MyHandlerWithLists(lists, timer)
|
||||
let x = string(a:lists)
|
||||
endfunc
|
||||
|
||||
func s:assert_inrange(lower, upper, actual)
|
||||
return assert_inrange(a:lower, LoadAdjust(a:upper), a:actual)
|
||||
endfunc
|
||||
|
||||
func Test_oneshot()
|
||||
let g:val = 0
|
||||
let timer = timer_start(50, 'MyHandler')
|
||||
let slept = WaitFor('g:val == 1')
|
||||
call assert_equal(1, g:val)
|
||||
if has('reltime')
|
||||
call assert_inrange(40, 120, slept)
|
||||
call s:assert_inrange(40, 120, slept)
|
||||
else
|
||||
call assert_inrange(20, 120, slept)
|
||||
endif
|
||||
@@ -32,7 +37,7 @@ func Test_repeat_three()
|
||||
let slept = WaitFor('g:val == 3')
|
||||
call assert_equal(3, g:val)
|
||||
if has('reltime')
|
||||
call assert_inrange(120, 250, slept)
|
||||
call s:assert_inrange(120, 250, slept)
|
||||
else
|
||||
call assert_inrange(80, 200, slept)
|
||||
endif
|
||||
@@ -58,7 +63,7 @@ func Test_with_partial_callback()
|
||||
let slept = WaitFor('g:val == 1')
|
||||
call assert_equal(1, g:val)
|
||||
if has('reltime')
|
||||
call assert_inrange(40, 130, slept)
|
||||
call s:assert_inrange(40, 130, slept)
|
||||
else
|
||||
call assert_inrange(20, 100, slept)
|
||||
endif
|
||||
@@ -121,7 +126,7 @@ func Test_paused()
|
||||
let slept = WaitFor('g:val == 1')
|
||||
call assert_equal(1, g:val)
|
||||
if has('reltime')
|
||||
call assert_inrange(0, 140, slept)
|
||||
call s:assert_inrange(0, 140, slept)
|
||||
else
|
||||
call assert_inrange(0, 10, slept)
|
||||
endif
|
||||
|
Reference in New Issue
Block a user