2467b7139b
* 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>
36 lines
1 KiB
TypeScript
36 lines
1 KiB
TypeScript
import test from 'ava'
|
|
|
|
const bindings = require('../index.node')
|
|
|
|
test('should create class', (t) => {
|
|
const TestClass = bindings.createTestClass()
|
|
const fixture = 20
|
|
const testClass = new TestClass(fixture)
|
|
t.is(testClass.count, fixture)
|
|
const add = 101
|
|
testClass.addCount(add)
|
|
t.is(testClass.count, fixture + add)
|
|
})
|
|
|
|
test('should be able to manipulate wrapped native value', (t) => {
|
|
const TestClass = bindings.createTestClass()
|
|
const fixture = 20
|
|
const testClass = new TestClass(fixture)
|
|
const add = 101
|
|
t.is(testClass.addNativeCount(add), fixture + add + 100)
|
|
})
|
|
|
|
test('should be able to re-create wrapped native value', (t) => {
|
|
const TestClass = bindings.createTestClass()
|
|
const fixture = 20
|
|
const testClass = new TestClass(fixture)
|
|
const add = 101
|
|
t.is(testClass.addNativeCount(add), fixture + add + 100)
|
|
testClass.renewWrapped()
|
|
t.is(testClass.addNativeCount(0), 42)
|
|
})
|
|
|
|
test('should be able to new class instance in native side', (t) => {
|
|
const instance = bindings.newTestClass()
|
|
t.is(instance.count, 42)
|
|
})
|