Files
basilisk55/devtools/shared/worker/tests/browser/browser_worker-03.js
T

55 lines
1.2 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
// Tests that the devtools/shared/worker can handle:
// returned primitives (or promise or Error)
//
// And tests `workerify` by doing so.
const { workerify } = require("devtools/shared/worker/worker");
function square(x) {
return x * x;
}
function squarePromise(x) {
return new Promise((resolve) => resolve(x * x));
}
function squareError(x) {
return new Error("Nope");
}
function squarePromiseReject(x) {
return new Promise((_, reject) => reject("Nope"));
}
add_task(function* () {
let fn = workerify(square);
is((yield fn(5)), 25, "return primitives successful");
fn.destroy();
fn = workerify(squarePromise);
is((yield fn(5)), 25, "promise primitives successful");
fn.destroy();
fn = workerify(squareError);
try {
yield fn(5);
ok(false, "return error should reject");
} catch (e) {
ok(true, "return error should reject");
}
fn.destroy();
fn = workerify(squarePromiseReject);
try {
yield fn(5);
ok(false, "returned rejected promise rejects");
} catch (e) {
ok(true, "returned rejected promise rejects");
}
fn.destroy();
});