Skip to content

Commit 6226464

Browse files
author
Andy Hanson
committed
assert.equal: Always print arguments, even when msg is provided
1 parent 8ad4aee commit 6226464

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

src/harness/harness.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,20 @@ namespace assert {
3737
assert(!expr, msg);
3838
}
3939
export function equal<T>(a: T, b: T, msg?: string): void {
40-
assert(a === b, msg || (() => `Expected to be equal:\nExpected:\n${JSON.stringify(a)}\nActual:\n${JSON.stringify(b)}`));
40+
assert(a === b, () => `${msg ? msg + "\n" : ""}Expected to be equal:\nExpected:\n${stringify(a)}\nActual:\n${stringify(b)}`);
4141
}
4242
export function notEqual<T>(a: T, b: T, msg = "Expected values to not be equal."): void {
43-
assert(a !== b, msg);
43+
assert(a !== b, () => `${msg ? msg + "\n" : ""}Expected to not be equal:\n${JSON.stringify(a)}`);
4444
}
45-
export function isDefined(x: {} | null | undefined, msg = "Expected value to be defined."): void {
46-
assert(x !== undefined && x !== null, msg);
45+
export function isDefined(x: {} | null | undefined, msg?: string): void {
46+
assert(x !== undefined && x !== null, `${msg ? msg + "\n" : ""}Expected value to be defined.`);
4747
}
48-
export function isUndefined(x: {} | null | undefined, msg = "Expected value to be undefined."): void {
49-
assert(x === undefined, msg);
48+
export function isUndefined(x: {} | null | undefined, msg?: string): void {
49+
assert(x === undefined, () => `${msg ? msg + "\n" : ""}Expected value to be undefined:\n${stringify(x)}`);
5050
}
5151
export function deepEqual<T>(a: T, b: T, msg?: string): void {
52-
assert(isDeepEqual(a, b), msg || (() => `Expected values to be deeply equal:\nExpected:\n${JSON.stringify(a, undefined, 4)}\nActual:\n${JSON.stringify(b, undefined, 4)}`));
52+
assert(isDeepEqual(a, b), (() =>
53+
`${msg ? msg + "\n" : ""}Expected values to be deeply equal:\nExpected:\n${stringify(a)}\nActual:\n${stringify(b)}`));
5354
}
5455
export function lengthOf(a: ReadonlyArray<{}>, length: number, msg = "Expected length to match."): void {
5556
assert(a.length === length, msg);
@@ -76,6 +77,10 @@ namespace assert {
7677
const bKeys = Object.keys(b).sort();
7778
return aKeys.length === bKeys.length && aKeys.every((key, i) => bKeys[i] === key && isDeepEqual((a as any)[key], (b as any)[key]));
7879
}
80+
81+
function stringify(value: {} | null | undefined): string {
82+
return JSON.stringify(value, undefined, 4);
83+
}
7984
}
8085
declare var __dirname: string; // Node-specific
8186
var global: NodeJS.Global = <any>Function("return this").call(undefined);

0 commit comments

Comments
 (0)