diff --git a/src/harness/harness.ts b/src/harness/harness.ts index 8f56a23994352..a65d6ac9a91f2 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -37,19 +37,20 @@ namespace assert { assert(!expr, msg); } export function equal(a: T, b: T, msg?: string): void { - assert(a === b, msg || (() => `Expected to be equal:\nExpected:\n${JSON.stringify(a)}\nActual:\n${JSON.stringify(b)}`)); + assert(a === b, () => `${msg ? msg + "\n" : ""}Expected to be equal:\nExpected:\n${stringify(a)}\nActual:\n${stringify(b)}`); } export function notEqual(a: T, b: T, msg = "Expected values to not be equal."): void { - assert(a !== b, msg); + assert(a !== b, () => `${msg ? msg + "\n" : ""}Expected to not be equal:\n${JSON.stringify(a)}`); } - export function isDefined(x: {} | null | undefined, msg = "Expected value to be defined."): void { - assert(x !== undefined && x !== null, msg); + export function isDefined(x: {} | null | undefined, msg?: string): void { + assert(x !== undefined && x !== null, `${msg ? msg + "\n" : ""}Expected value to be defined.`); } - export function isUndefined(x: {} | null | undefined, msg = "Expected value to be undefined."): void { - assert(x === undefined, msg); + export function isUndefined(x: {} | null | undefined, msg?: string): void { + assert(x === undefined, () => `${msg ? msg + "\n" : ""}Expected value to be undefined:\n${stringify(x)}`); } export function deepEqual(a: T, b: T, msg?: string): void { - 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)}`)); + assert(isDeepEqual(a, b), (() => + `${msg ? msg + "\n" : ""}Expected values to be deeply equal:\nExpected:\n${stringify(a)}\nActual:\n${stringify(b)}`)); } export function lengthOf(a: ReadonlyArray<{}>, length: number, msg = "Expected length to match."): void { assert(a.length === length, msg); @@ -76,6 +77,10 @@ namespace assert { const bKeys = Object.keys(b).sort(); return aKeys.length === bKeys.length && aKeys.every((key, i) => bKeys[i] === key && isDeepEqual((a as any)[key], (b as any)[key])); } + + function stringify(value: {} | null | undefined): string { + return JSON.stringify(value, undefined, 4); + } } declare var __dirname: string; // Node-specific var global: NodeJS.Global = Function("return this").call(undefined);