napi-rs/examples/napi-compat-mode/__tests__/js-value.spec.ts
forehal a781a4f27e feat(cli): brand new cli tool with both cli and programmatical usage (#1492)
BREAKING CHANGE: requires node >= 16 and some cli options have been renamed
2023-04-06 11:04:53 +08:00

60 lines
1.6 KiB
TypeScript

import test from 'ava'
const bindings = require('../index.node')
test('instanceof', (t) => {
const day = new Date()
t.true(bindings.instanceof(day, Date))
t.false(bindings.instanceof(day, Number))
t.false(bindings.instanceof(1, Date))
})
test('is_error', (t) => {
t.true(bindings.isError(new Error()))
t.true(bindings.isError(new TypeError()))
t.true(bindings.isError(new SyntaxError()))
t.false(bindings.isError('111'))
t.false(bindings.isError(2))
t.false(bindings.isError(Symbol()))
})
test('is_typedarray', (t) => {
t.true(bindings.isTypedarray(new Uint8Array()))
t.true(bindings.isTypedarray(new Uint16Array()))
t.true(bindings.isTypedarray(new Uint32Array()))
t.true(bindings.isTypedarray(new Int8Array()))
t.true(bindings.isTypedarray(new Int16Array()))
t.true(bindings.isTypedarray(new Int32Array()))
t.true(bindings.isTypedarray(Buffer.from('123')))
t.false(bindings.isTypedarray(Buffer.from('123').buffer))
t.false(bindings.isTypedarray([]))
})
test('is_dataview', (t) => {
const data = new Uint8Array(100)
t.true(bindings.isDataview(new DataView(data.buffer)))
t.false(bindings.isDataview(Buffer.from('123')))
})
test('strict_equals', (t) => {
const a = {
foo: 'bar',
}
const b = { ...a }
t.false(bindings.strictEquals(a, b))
t.false(bindings.strictEquals(1, '1'))
t.false(bindings.strictEquals(null, undefined))
t.false(bindings.strictEquals(NaN, NaN))
t.true(bindings.strictEquals(a, a))
})
test('cast_unknown', (t) => {
const f = {}
const r = bindings.castUnknown(f)
t.is(f, r)
})
test('cast_unknown will not throw', (t) => {
const f = 1
t.notThrows(() => bindings.castUnknown(f))
})