import test from 'ava'
import Sinon from 'sinon'

const bindings = require('../index.node')

function wait(delay: number) {
  return new Promise((resolve) => setTimeout(resolve, delay))
}

const delay = 100

test('should setTimeout', async (t) => {
  const handler = Sinon.spy()
  bindings.setTimeout(handler, delay)
  t.is(handler.callCount, 0)
  await wait(delay + 10)
  t.is(handler.callCount, 1)
})

test('should clearTimeout', async (t) => {
  const handler = Sinon.spy()
  const timer = setTimeout(() => handler(), delay)
  t.is(handler.callCount, 0)
  bindings.clearTimeout(timer)
  await wait(delay + 10)
  t.is(handler.callCount, 0)
})