From 035cac86ccd0081e69001352e8d669ab8585e9bd Mon Sep 17 00:00:00 2001 From: Bauke Date: Tue, 27 Dec 2022 14:26:00 +0100 Subject: [PATCH] Add an optional title to assertions. --- source/test.ts | 14 +++++++++++--- tests/index.ts | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/source/test.ts b/source/test.ts index ddaa5af..3c938d3 100644 --- a/source/test.ts +++ b/source/test.ts @@ -1,24 +1,31 @@ export class AssertionError extends Error { public readonly actual: string; public readonly expected: string; + public readonly title: string | undefined; - constructor(message: string, actual: any, expected: any) { + constructor(message: string, actual: any, expected: any, title?: string) { super(message); this.actual = JSON.stringify(actual); this.expected = JSON.stringify(expected); + this.title = title; } } /** Test execution context with assertions. */ export class TestContext { /** Assert strict equality with `===`. */ - equals(actual: T, expected: T): void { + equals(actual: T, expected: T, title?: string): void { if (actual === expected) { return; } - throw new AssertionError("Failed equals assertion", actual, expected); + throw new AssertionError( + "Failed equals assertion", + actual, + expected, + title, + ); } } @@ -120,6 +127,7 @@ export class Result implements ResultData { if (this.error !== undefined) { message += `\n %c${this.error.message}`; + message += this.error.title === undefined ? "" : `: ${this.error.title}`; message += `\n | Actual: ${this.error.actual}`; message += `\n | Expected: ${this.error.expected}`; styles.push("color: pink;"); diff --git a/tests/index.ts b/tests/index.ts index a1215aa..151fb2d 100644 --- a/tests/index.ts +++ b/tests/index.ts @@ -52,6 +52,6 @@ void setup("subtract", async (group) => { }); group.test("subtract(1, 1) = 2", async (test) => { - test.equals(await subtract(1, 1), 2); + test.equals(await subtract(1, 1), 2, "extra title"); }); });