UNPKG

org.eclipse.n4js.mangelhaft.assert

Version:

An assert library used with the Mangelhaft testing framework.

49 lines (46 loc) 1.56 kB
// Generated by N4JS transpiler; for copyright see original N4JS source file. import 'n4js-runtime' export function deepEqual(actual, expected, ignorePrototype) { const shouldIgnorePrototype = (ignorePrototype == undefined) ? true : ignorePrototype; return deepEqualRec(actual, expected, new WeakMap(), shouldIgnorePrototype); } function deepEqualRec(actual, expected, visited, ignorePrototype) { if (!(actual instanceof Object) || !(expected instanceof Object)) { return actual === expected; } const actualObj = actual; const expectedObj = expected; if (!ignorePrototype) { const actualPrototype = Object.getPrototypeOf(actualObj); const expectedPrototype = Object.getPrototypeOf(expectedObj); if (actualPrototype !== expectedPrototype) { return false; } } const actualProperties = Object.keys(actualObj); const expectedProperties = Object.keys(expectedObj); if (actualProperties.length != expectedProperties.length) { return false; } actualProperties.sort(); expectedProperties.sort(); for(var i = 0;i < actualProperties.length;i++) { if (actualProperties[i] !== expectedProperties[i]) { return false; } } const elem = visited.get(actualObj); if (elem) { return elem == expectedObj; } visited.set(actualObj, expectedObj); for(i = 0;i < actualProperties.length;i++) { const isEqual = deepEqualRec(actualObj[actualProperties[i]], expectedObj[actualProperties[i]], visited, ignorePrototype); if (!isEqual) { return false; } } visited.delete(actualObj); return true; } //# sourceMappingURL=DeepEqual.map