org.eclipse.n4js.mangelhaft.assert
Version:
An assert library used with the Mangelhaft testing framework.
49 lines (46 loc) • 1.56 kB
JavaScript
// 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