UNPKG

assertthat

Version:
45 lines (44 loc) 1.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.compareObjects = void 0; const compare_1 = require("../typeAware/compare"); const size_1 = require("../../size/typeAware/size"); const EqualDiff_1 = require("../../diffs/EqualDiff"); const ObjectDiff_1 = require("../../diffs/forObjects/ObjectDiff"); const compareObjects = function (actual, expected) { const newDiff = (0, ObjectDiff_1.objectDiff)({ cost: 0, additions: {}, omissions: {}, changes: {}, equal: {} }); for (const key of Object.keys(actual)) { if (key in expected) { const subDiff = (0, compare_1.compare)(actual[key], expected[key]); if (subDiff.cost === 0) { newDiff.equal[key] = actual[key]; } else { newDiff.changes[key] = subDiff; newDiff.cost += subDiff.cost; } } else { newDiff.additions[key] = actual[key]; newDiff.cost += (0, size_1.size)(actual[key]); } } for (const key of Object.keys(expected)) { if (key in actual) { continue; } newDiff.omissions[key] = expected[key]; newDiff.cost += (0, size_1.size)(expected[key]); } if (newDiff.cost === 0) { return (0, EqualDiff_1.equalDiff)({ value: actual }); } return newDiff; }; exports.compareObjects = compareObjects;