-
Notifications
You must be signed in to change notification settings - Fork 64
Open
Description
#717 related issue.
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Jan 24 2020 19:52:19)
MS-Windows 64 ビット GUI/コンソール 版 with OLE サポート
適用済パッチ: 1-147
vim-tux x64 on Windows 10
test code
function s:test() abort
let P = vital#vital#import('Async.Promise')
" Constants
let PENDING = 0
let FULFILLED = 1
let REJECTED = 2
" Utilities
let Wait = {ms -> P.new({res -> timer_start(ms, res)})}
let p = Wait(200).then({ -> 'resolved' })
let s = reltime()
echo p._state ' ' PENDING
echo P.wait(p, { 'interval': 1000 }) ' ' ['resolved', v:null]
echo reltimefloat(reltime(s)) * 1000 ' >= ' 1000
echo reltimefloat(reltime(s)) * 1000 ' <= ' 2000
let p = Wait(200).then({ -> P.reject('rejected') })
let s = reltime()
echo p._state ' ' PENDING
echo P.wait(p, { 'interval': 1000 }) ' ' [v:null, 'rejected']
echo reltimefloat(reltime(s)) * 1000 ' >= ' 1000
echo reltimefloat(reltime(s)) * 1000 ' <= ' 2000
endfunction
call s:test()
result
0 0
['resolved', v:null] ['resolved', v:null]
1007.9319 >= 1000
1007.9627 <= 2000
0 0
[v:null, 'rejected'] [v:null, 'rejected']
988.8081 >= 1000
988.8189 <= 2000
vital.vim/test/Async/Promise.vimspec
Lines 765 to 779 in 9117773
It waits at least the interval milliseconds (interval > epoch) | |
let p = Wait(200).then({ -> 'resolved' }) | |
let s = reltime() | |
Assert Equals(p._state, PENDING) | |
Assert Equals(P.wait(p, { 'interval': 1000 }), ['resolved', v:null]) | |
Assert Compare(reltimefloat(reltime(s)) * 1000, '>=', 1000) | |
Assert Compare(reltimefloat(reltime(s)) * 1000, '<=', 2000) | |
let p = Wait(200).then({ -> P.reject('rejected') }) | |
let s = reltime() | |
Assert Equals(p._state, PENDING) | |
Assert Equals(P.wait(p, { 'interval': 1000 }), [v:null, 'rejected']) | |
Assert Compare(reltimefloat(reltime(s)) * 1000, '>=', 1000) | |
Assert Compare(reltimefloat(reltime(s)) * 1000, '<=', 2000) | |
End |
My test failed log.
https://github.com/tsuyoshicho/vital.vim/runs/426681919
Metadata
Metadata
Assignees
Labels
No labels