mirror of
https://github.com/denoland/deno.git
synced 2024-12-11 18:17:48 -05:00
ea9c3ffaa2
`napi_call_function` should use our equiv of NAPI_PREAMBLE (`&mut Env` instead of `*mut Env`) since it needs to set error codes based on whether the body of the function raised a JS exception. Fixes: https://github.com/denoland/deno/issues/26282
47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
|
|
import { assertEquals, assertThrows, loadTestLibrary } from "./common.js";
|
|
|
|
const callback = loadTestLibrary();
|
|
|
|
Deno.test("napi callback run with args", function () {
|
|
const result = callback.test_callback_run((a, b) => a + b, [1, 2]);
|
|
assertEquals(result, 3);
|
|
});
|
|
|
|
Deno.test("napi callback run with args (no return)", function () {
|
|
const result = callback.test_callback_run(() => {}, []);
|
|
assertEquals(result, undefined);
|
|
});
|
|
|
|
Deno.test("napi callback run with args (extra arguments)", function () {
|
|
const result = callback.test_callback_run((a, b) => a + b, [
|
|
"Hello,",
|
|
" Deno!",
|
|
1,
|
|
2,
|
|
3,
|
|
]);
|
|
assertEquals(result, "Hello, Deno!");
|
|
});
|
|
|
|
Deno.test("napi callback run with args & recv", function () {
|
|
const result = callback.test_callback_run_with_recv(
|
|
function () {
|
|
assertEquals(this, 69);
|
|
return this;
|
|
},
|
|
[],
|
|
69,
|
|
);
|
|
assertEquals(result, 69);
|
|
});
|
|
|
|
Deno.test("napi callback handles errors correctly", function () {
|
|
const e = new Error("hi!");
|
|
assertThrows(() => {
|
|
callback.test_callback_throws(() => {
|
|
throw e;
|
|
});
|
|
}, e);
|
|
});
|