diff --git a/package/package.json b/package/package.json index 1739fcce..83b49a93 100644 --- a/package/package.json +++ b/package/package.json @@ -30,7 +30,8 @@ "test": "cross-env NODE_ENV=test TS_NODE_TRANSPILE_ONLY=true mocha" }, "dependencies": { - "@cometlib/dedent": "^0.8.0-es.10" + "@cometlib/dedent": "^0.8.0-es.10", + "fast-deep-equal": "^3.1.3" }, "devDependencies": { "@types/mocha": "^10.0.1", diff --git a/package/src/lib/ArrayAssertion.ts b/package/src/lib/ArrayAssertion.ts index 381a8be6..bce71488 100644 --- a/package/src/lib/ArrayAssertion.ts +++ b/package/src/lib/ArrayAssertion.ts @@ -1,3 +1,5 @@ +import isDeepEqual from "fast-deep-equal/es6"; + import { Assertion } from "./Assertion"; import { UnsupportedOperationError } from "./errors/UnsupportedOperationError"; import { type Expect } from "./expect"; @@ -5,7 +7,6 @@ import { type TypeFactory } from "./helpers/TypeFactories"; import { prettify } from "./helpers/messages"; import { AssertionError } from "assert"; -import { isDeepStrictEqual } from "util"; /** * Encapsulates assertion methods applicable to arrays. @@ -316,7 +317,7 @@ export class ArrayAssertion extends Assertion { }); return this.execute({ - assertWhen: isDeepStrictEqual(this.actual[index], value), + assertWhen: isDeepEqual(this.actual[index], value), error, invertedError, }); diff --git a/package/src/lib/Assertion.ts b/package/src/lib/Assertion.ts index d5db1e4f..83c1c97e 100644 --- a/package/src/lib/Assertion.ts +++ b/package/src/lib/Assertion.ts @@ -1,10 +1,11 @@ +import isDeepEqual from "fast-deep-equal/es6"; + import { UnsupportedOperationError } from "./errors/UnsupportedOperationError"; import { type TypeFactory } from "./helpers/TypeFactories"; import { isStruct, isKeyOf } from "./helpers/guards"; import { prettify } from "./helpers/messages"; import { AssertionError } from "assert"; -import { isDeepStrictEqual } from "util"; export interface Constructor extends Function { prototype: T; @@ -330,7 +331,7 @@ export class Assertion { }); return this.execute({ - assertWhen: isDeepStrictEqual(this.actual, expected), + assertWhen: isDeepEqual(this.actual, expected), error, invertedError, }); diff --git a/package/src/lib/FunctionAssertion.ts b/package/src/lib/FunctionAssertion.ts index 47d4b18e..7549dbf1 100644 --- a/package/src/lib/FunctionAssertion.ts +++ b/package/src/lib/FunctionAssertion.ts @@ -1,10 +1,11 @@ +import isDeepEqual from "fast-deep-equal/es6"; + import { Assertion, Constructor } from "./Assertion"; import { ErrorAssertion } from "./ErrorAssertion"; import { type TypeFactory } from "./helpers/TypeFactories"; import { prettify } from "./helpers/messages"; import { AssertionError } from "assert"; -import { isDeepStrictEqual } from "util"; export type AnyFunction = (...args: unknown[]) => unknown; @@ -55,7 +56,7 @@ export class FunctionAssertion extends Assertion { if (error !== undefined) { return this.execute({ - assertWhen: isDeepStrictEqual(captured, error), + assertWhen: isDeepEqual(captured, error), error: new AssertionError({ actual: captured, expected: error, diff --git a/package/src/lib/ObjectAssertion.ts b/package/src/lib/ObjectAssertion.ts index fa4e05f9..f3d7b6b6 100644 --- a/package/src/lib/ObjectAssertion.ts +++ b/package/src/lib/ObjectAssertion.ts @@ -1,9 +1,10 @@ +import isDeepEqual from "fast-deep-equal/es6"; + import { Assertion } from "./Assertion"; import { prettify } from "./helpers/messages"; import { Entry, Struct } from "./helpers/types"; import { AssertionError } from "assert"; -import { isDeepStrictEqual } from "util"; /** * Encapsulates assertion methods applicable to objects. @@ -160,7 +161,7 @@ export class ObjectAssertion extends Assertion { message: `Expected the object NOT to contain the provided value <${prettify(value)}>`, }); return this.execute({ - assertWhen: Object.values(this.actual).some(actualValue => isDeepStrictEqual(actualValue, value)), + assertWhen: Object.values(this.actual).some(actualValue => isDeepEqual(actualValue, value)), error, invertedError, }); @@ -191,7 +192,7 @@ export class ObjectAssertion extends Assertion { return this.execute({ assertWhen: values .every(value => - Object.values(this.actual).some(actualValue => isDeepStrictEqual(actualValue, value)), + Object.values(this.actual).some(actualValue => isDeepEqual(actualValue, value)), ), error, invertedError, @@ -223,7 +224,7 @@ export class ObjectAssertion extends Assertion { return this.execute({ assertWhen: values .some(value => - Object.values(this.actual).some(actualValue => isDeepStrictEqual(actualValue, value)), + Object.values(this.actual).some(actualValue => isDeepEqual(actualValue, value)), ), error, invertedError, @@ -254,7 +255,7 @@ export class ObjectAssertion extends Assertion { return this.execute({ assertWhen: this.hasOwnProp(entry[0]) && - isDeepStrictEqual(Object.getOwnPropertyDescriptor(this.actual, entry[0])?.value, entry[1]), + isDeepEqual(Object.getOwnPropertyDescriptor(this.actual, entry[0])?.value, entry[1]), error, invertedError, }); @@ -286,7 +287,7 @@ export class ObjectAssertion extends Assertion { assertWhen: entries .every(entry => this.hasOwnProp(entry[0]) && - isDeepStrictEqual(Object.getOwnPropertyDescriptor(this.actual, entry[0])?.value, entry[1]), + isDeepEqual(Object.getOwnPropertyDescriptor(this.actual, entry[0])?.value, entry[1]), ), error, invertedError, @@ -320,7 +321,7 @@ export class ObjectAssertion extends Assertion { assertWhen: entries .some(entry => this.hasOwnProp(entry[0]) && - isDeepStrictEqual(Object.getOwnPropertyDescriptor(this.actual, entry[0])?.value, entry[1]), + isDeepEqual(Object.getOwnPropertyDescriptor(this.actual, entry[0])?.value, entry[1]), ), error, invertedError, @@ -353,7 +354,7 @@ export class ObjectAssertion extends Assertion { assertWhen: Object.keys(other) .every(key => this.hasOwnProp(key) - ? isDeepStrictEqual(Object.getOwnPropertyDescriptor(this.actual, key)?.value, other[key]) + ? isDeepEqual(Object.getOwnPropertyDescriptor(this.actual, key)?.value, other[key]) : false, ), error, diff --git a/package/src/lib/PromiseAssertion.ts b/package/src/lib/PromiseAssertion.ts index 8c91e8a6..885aebcd 100644 --- a/package/src/lib/PromiseAssertion.ts +++ b/package/src/lib/PromiseAssertion.ts @@ -1,10 +1,10 @@ import dedent from "@cometlib/dedent"; +import isDeepEqual from "fast-deep-equal/es6"; import { Assertion } from "./Assertion"; import { prettify } from "./helpers/messages"; import { AssertionError } from "assert/strict"; -import { isDeepStrictEqual } from "util"; /** * Encapsulates assertion methods applicable to Promises @@ -87,7 +87,7 @@ export class PromiseAssertion extends Assertion { return this.actual.then(value => { this.execute({ - assertWhen: isDeepStrictEqual(value, expected), + assertWhen: isDeepEqual(value, expected), error: new AssertionError({ actual: value, expected, @@ -203,7 +203,7 @@ export class PromiseAssertion extends Assertion