UNPKG

kizu

Version:

An easy-to-use, fast, and defensive Typescript/Javascript test runner designed to help you to write simple, readable, and maintainable tests.

70 lines 2.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deepStrictEqual = deepStrictEqual; /* eslint-disable max-lines-per-function */ function deepStrictEqual(actual, expected) { if (actual === expected) return true; // Handle RegExp comparison - expected can be RegExp, actual should be string if (expected instanceof RegExp) { if (typeof actual !== 'string') return false; return expected.test(actual); } // Handle case where actual is RegExp but expected is not RegExp if (actual instanceof RegExp && !(expected instanceof RegExp)) { return false; } if (isPrimitive(actual) && isPrimitive(expected)) return actual === expected; if (Array.isArray(actual) !== Array.isArray(expected)) return false; if (typeof actual !== typeof expected) return false; if (actual === null || expected === null) return false; // Handle Map objects if (actual instanceof Map && expected instanceof Map) { if (actual.size !== expected.size) return false; for (const [key, value] of actual) { if (!expected.has(key) || !deepStrictEqual(value, expected.get(key))) return false; } return true; } // Handle Set objects if (actual instanceof Set && expected instanceof Set) { if (actual.size !== expected.size) return false; for (const item of actual) { let matchFound = false; for (const item2 of expected) { if (deepStrictEqual(item, item2)) { matchFound = true; break; } } if (!matchFound) return false; } return true; } // Handle object comparison const keys1 = Object.keys(actual); const keys2 = Object.keys(expected); if (keys1.length !== keys2.length) return false; for (const key of keys1) { if (!Object.prototype.hasOwnProperty.call(expected, key)) return false; if (!deepStrictEqual(actual[key], expected[key])) return false; } return true; } // Helper function to check if a value is a primitive function isPrimitive(value) { return value !== Object(value); } //# sourceMappingURL=deepStrictEqual.js.map