napi-rs/examples/napi-compat-mode/__test__/serde/de.spec.ts
forehalo 2467b7139b
Introduce #[napi] procedural macro to automation development boilerplate (#696)
* napi procedural macro for basic rust/JavaScript types
* introduce the `compat-mode` for `napi` and `napi-derive` crates for backward compatible
* remove #[inline] and let compiler to decide the inline behavior
* cli now can produce the `.d.ts` file for native binding
* many tests and example for the new procedural macro

Co-authored-by: LongYinan <lynweklm@gmail.com>
2021-09-23 01:29:09 +08:00

39 lines
898 B
TypeScript

import test from 'ava'
import { napiVersion } from '../napi-version'
const bindings = require('../../index.node')
test('deserialize string', (t) => {
t.notThrows(() => bindings.expect_hello_world('hello world'))
})
test('deserialize object', (t) => {
if (napiVersion < 6) {
t.throws(() => {
bindings.expect_obj({})
})
} else {
t.notThrows(() =>
bindings.expect_obj({
a: 1,
b: [1, 2],
c: 'abc',
d: false,
e: null,
f: null,
g: [9, false, 'efg'],
h: '🤷',
i: 'Empty',
j: { Tuple: [27, 'hij'] },
k: { Struct: { a: 128, b: [9, 8, 7] } },
l: 'jkl',
m: [0, 1, 2, 3, 4],
o: { Value: ['z', 'y', 'x'] },
p: [1, 2, 3.5],
q: BigInt('9998881288248882845242411222333'),
r: BigInt('-3332323888900001232323022221345'),
}),
)
}
})