Skip to content

Info: Windows reject speedy #718

Open
@tsuyoshicho

Description

@tsuyoshicho

#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

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
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions