const test = require('ava')

const bindings = require('../../index.node')
const napiVersion = require('../napi-version')

test('should get js function called from a thread', async (t) => {
  let called = 0

  if (napiVersion < 4) {
    t.is(bindings.testThreadsafeFunction, undefined)
    return
  }

  return new Promise((resolve, reject) => {
    bindings.testThreadsafeFunction((...args) => {
      called += 1
      try {
        t.deepEqual(args, [null, 42, 1, 2, 3])
      } catch (err) {
        reject(err)
      }

      if (called === 2) {
        resolve()
      }
    })
  })
})