2024-01-01 14:58:21 -05:00
|
|
|
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
2023-05-24 09:41:43 -04:00
|
|
|
|
|
|
|
import { assertEquals, loadTestLibrary } from "./common.js";
|
|
|
|
|
|
|
|
const mc = loadTestLibrary();
|
|
|
|
|
|
|
|
Deno.test("napi makeCallback1", function () {
|
|
|
|
const resource = {};
|
|
|
|
|
|
|
|
let callCount = 0;
|
|
|
|
function cb() {
|
|
|
|
callCount++;
|
|
|
|
assertEquals(arguments.length, 0);
|
|
|
|
assertEquals(this, globalThis);
|
|
|
|
return 42;
|
|
|
|
}
|
|
|
|
assertEquals(mc.makeCallback(resource, globalThis, cb), 42);
|
|
|
|
assertEquals(callCount, 1);
|
|
|
|
});
|
|
|
|
|
|
|
|
Deno.test("napi makeCallback2", function () {
|
|
|
|
const resource = {};
|
|
|
|
|
|
|
|
let callCount = 0;
|
|
|
|
function cb(x) {
|
|
|
|
callCount++;
|
|
|
|
assertEquals(arguments.length, 1);
|
|
|
|
assertEquals(this, globalThis);
|
|
|
|
assertEquals(x, 1337);
|
|
|
|
return 42;
|
|
|
|
}
|
|
|
|
assertEquals(mc.makeCallback(resource, globalThis, cb, 1337), 42);
|
|
|
|
assertEquals(callCount, 1);
|
|
|
|
});
|
|
|
|
|
|
|
|
Deno.test("napi makeCallback3", function () {
|
|
|
|
const resource = {};
|
|
|
|
|
|
|
|
let callCount = 0;
|
|
|
|
|
|
|
|
function multiArgFunc(arg1, arg2, arg3) {
|
|
|
|
callCount++;
|
|
|
|
assertEquals(arg1, 1);
|
|
|
|
assertEquals(arg2, 2);
|
|
|
|
assertEquals(arg3, 3);
|
|
|
|
return 42;
|
|
|
|
}
|
|
|
|
assertEquals(
|
|
|
|
mc.makeCallback(resource, globalThis, multiArgFunc, 1, 2, 3),
|
|
|
|
42,
|
|
|
|
);
|
|
|
|
assertEquals(callCount, 1);
|
|
|
|
});
|