Files
start-sdk/lib/node_modules/@deno/shim-deno-test/dist/test.js
2023-02-27 10:38:56 -07:00

73 lines
2.8 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.test = void 0;
const definitions_js_1 = require("./definitions.js");
const test = function test() {
var _a, _b;
let testDef;
const firstArg = arguments[0];
const secondArg = arguments[1];
const thirdArg = arguments[2];
if (typeof firstArg === "string") {
if (typeof secondArg === "object") {
if (typeof thirdArg === "function") {
if (secondArg.fn != null) {
throw new TypeError("Unexpected 'fn' field in options, test function is already provided as the third argument.");
}
}
if (secondArg.name != null) {
throw new TypeError("Unexpected 'name' field in options, test name is already provided as the first argument.");
}
// name, options, fn
testDef = { name: firstArg, fn: thirdArg, ...secondArg };
}
else {
// name, fn
testDef = { name: firstArg, fn: secondArg };
}
}
else if (firstArg instanceof Function) {
// function only
if (firstArg.name.length === 0) {
throw new TypeError("The test function must have a name");
}
testDef = { fn: firstArg, name: firstArg.name };
if (secondArg != null) {
throw new TypeError("Unexpected second argument to Deno.test()");
}
}
else if (typeof firstArg === "object") {
testDef = { ...firstArg };
if (typeof secondArg === "function") {
// options, fn
testDef.fn = secondArg;
if (firstArg.fn != null) {
throw new TypeError("Unexpected 'fn' field in options, test function is already provided as the second argument.");
}
if (testDef.name == null) {
if (secondArg.name.length === 0) {
throw new TypeError("The test function must have a name");
}
// options without name, fn
testDef.name = secondArg.name;
}
}
else {
if (typeof firstArg.fn !== "function") {
throw new TypeError("Expected 'fn' field in the first argument to be a test function.");
}
}
}
else {
throw new TypeError("Unknown test overload");
}
if (typeof testDef.fn !== "function") {
throw new TypeError("Missing test function");
}
if (((_b = (_a = testDef.name) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) === 0) {
throw new TypeError("The test name can't be empty");
}
definitions_js_1.testDefinitions.push(testDef);
};
exports.test = test;