mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 06:47:35 +00:00
LibJS: Add SuppressedError{, Prototype, Constructor}
This commit is contained in:
parent
0d8bab82f0
commit
3353cf68f1
14 changed files with 300 additions and 0 deletions
|
@ -0,0 +1,57 @@
|
|||
describe("normal behavior", () => {
|
||||
test("length is 2", () => {
|
||||
expect(SuppressedError).toHaveLength(3);
|
||||
});
|
||||
|
||||
test("name is SuppressedError", () => {
|
||||
expect(SuppressedError.name).toBe("SuppressedError");
|
||||
});
|
||||
|
||||
test("Prototype of the SuppressedError constructor is the Error constructor", () => {
|
||||
expect(Object.getPrototypeOf(SuppressedError)).toBe(Error);
|
||||
});
|
||||
|
||||
test("Prototype of SuppressedError.prototype is Error.prototype", () => {
|
||||
expect(Object.getPrototypeOf(SuppressedError.prototype)).toBe(Error.prototype);
|
||||
});
|
||||
|
||||
test("construction", () => {
|
||||
expect(SuppressedError()).toBeInstanceOf(SuppressedError);
|
||||
expect(SuppressedError(1)).toBeInstanceOf(SuppressedError);
|
||||
expect(SuppressedError(1, 1)).toBeInstanceOf(SuppressedError);
|
||||
expect(new SuppressedError()).toBeInstanceOf(SuppressedError);
|
||||
expect(new SuppressedError(1)).toBeInstanceOf(SuppressedError);
|
||||
expect(new SuppressedError(1, 1)).toBeInstanceOf(SuppressedError);
|
||||
expect(Object.hasOwn(new SuppressedError(1, 1), "message")).toBeFalse();
|
||||
expect(new SuppressedError().toString()).toBe("SuppressedError");
|
||||
expect(new SuppressedError(1).toString()).toBe("SuppressedError");
|
||||
expect(new SuppressedError(1, 1).toString()).toBe("SuppressedError");
|
||||
expect(new SuppressedError(undefined, undefined, "Foo").toString()).toBe(
|
||||
"SuppressedError: Foo"
|
||||
);
|
||||
expect(new SuppressedError(1, 1, "Foo").toString()).toBe("SuppressedError: Foo");
|
||||
expect(Object.hasOwn(new SuppressedError(), "error")).toBeTrue();
|
||||
expect(Object.hasOwn(new SuppressedError(), "suppressed")).toBeTrue();
|
||||
const obj = {};
|
||||
expect(new SuppressedError(obj).error).toBe(obj);
|
||||
expect(new SuppressedError(null, obj).suppressed).toBe(obj);
|
||||
});
|
||||
|
||||
test("converts message to string", () => {
|
||||
expect(new SuppressedError(undefined, undefined, 1)).toHaveProperty("message", "1");
|
||||
expect(new SuppressedError(undefined, undefined, {})).toHaveProperty(
|
||||
"message",
|
||||
"[object Object]"
|
||||
);
|
||||
});
|
||||
|
||||
test("supports options object with cause", () => {
|
||||
const cause = new Error();
|
||||
const error = new SuppressedError(1, 2, "test", { cause });
|
||||
expect(error.hasOwnProperty("cause")).toBeTrue();
|
||||
expect(error.cause).toBe(cause);
|
||||
|
||||
const errorWithoutCase = new SuppressedError(1, 2, "test");
|
||||
expect(errorWithoutCase.hasOwnProperty("cause")).toBeFalse();
|
||||
});
|
||||
});
|
|
@ -0,0 +1,21 @@
|
|||
describe("normal behavior", () => {
|
||||
test("initial message value is empty string", () => {
|
||||
expect(SuppressedError.prototype.message).toBe("");
|
||||
});
|
||||
|
||||
test("Error gets message via prototype by default", () => {
|
||||
const error = new SuppressedError();
|
||||
expect(error.hasOwnProperty("message")).toBeFalse();
|
||||
expect(error.message).toBe("");
|
||||
SuppressedError.prototype.message = "Well hello friends";
|
||||
expect(error.message).toBe("Well hello friends");
|
||||
});
|
||||
|
||||
test("Error gets message via object if given to constructor", () => {
|
||||
const error = new SuppressedError(undefined, undefined, "Custom error message");
|
||||
expect(error.hasOwnProperty("message")).toBeTrue();
|
||||
expect(error.message).toBe("Custom error message");
|
||||
SuppressedError.prototype.message = "Well hello friends";
|
||||
expect(error.message).toBe("Custom error message");
|
||||
});
|
||||
});
|
|
@ -0,0 +1,13 @@
|
|||
describe("normal behavior", () => {
|
||||
test("initial name value is type name", () => {
|
||||
expect(SuppressedError.prototype.name).toBe("SuppressedError");
|
||||
});
|
||||
|
||||
test("Error gets name via prototype", () => {
|
||||
const error = new SuppressedError([]);
|
||||
expect(error.hasOwnProperty("name")).toBeFalse();
|
||||
expect(error.name).toBe("SuppressedError");
|
||||
SuppressedError.prototype.name = "Foo";
|
||||
expect(error.name).toBe("Foo");
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue