UNPKG

@benev/slate

Version:
108 lines 4.88 kB
import { expect } from "cynic"; import { deepEqual } from "./equal.js"; export default { async "compare primitive types"() { expect(deepEqual(123, 123)).equals(true); expect(deepEqual("abc", "abc")).equals(true); expect(deepEqual(true, true)).equals(true); expect(deepEqual(123, "123")).equals(false); expect(deepEqual(true, 1)).equals(false); }, async "compare arrays"() { const array1 = [1, 2, 3]; const array2 = [1, 2, 3]; const array3 = [1, 2, 4]; expect(deepEqual(array1, array2)).equals(true); expect(deepEqual(array1, array3)).equals(false); }, async "compare plain objects"() { const obj1 = { foo: "bar", baz: 123 }; const obj2 = { foo: "bar", baz: 123 }; const obj3 = { foo: "bar", baz: 124 }; expect(deepEqual(obj1, obj2)).equals(true); expect(deepEqual(obj1, obj3)).equals(false); }, async "compare nested objects"() { const obj1 = { foo: "bar", inner: { baz: 123, deeper: { qux: true } } }; const obj2 = { foo: "bar", inner: { baz: 123, deeper: { qux: true } } }; const obj3 = { foo: "bar", inner: { baz: 124, deeper: { qux: true } } }; expect(deepEqual(obj1, obj2)).equals(true); expect(deepEqual(obj1, obj3)).equals(false); }, async "compare array of objects"() { const arr1 = [{ foo: "bar" }, { baz: 123 }, { qux: true }]; const arr2 = [{ foo: "bar" }, { baz: 123 }, { qux: true }]; const arr3 = [{ foo: "bar" }, { baz: 123 }, { qux: false }]; expect(deepEqual(arr1, arr2)).equals(true); expect(deepEqual(arr1, arr3)).equals(false); }, async "compare null and undefined"() { expect(deepEqual(null, null)).equals(true); expect(deepEqual(undefined, undefined)).equals(true); expect(deepEqual(null, undefined)).equals(false); }, async "compare with nested arrays"() { const obj1 = { foo: "bar", array: [1, 2, [3, 4]] }; const obj2 = { foo: "bar", array: [1, 2, [3, 4]] }; const obj3 = { foo: "bar", array: [1, 2, [3, 5]] }; expect(deepEqual(obj1, obj2)).equals(true); expect(deepEqual(obj1, obj3)).equals(false); }, async "circularity is forbidden"() { const obj1 = { alpha: 1 }; const obj2 = { alpha: 1 }; obj1.bravo = obj1; obj2.bravo = obj2; expect(() => deepEqual(obj1, obj2)).throws(); }, async "duplicate references are allowed"() { const dupe = { a: 123 }; const obj1 = { alpha: 1, dupe }; const obj2 = { alpha: 1, dupe }; const obj3 = { alpha: 1, dupe: { a: 0 } }; expect(deepEqual(obj1, obj2)).equals(true); expect(deepEqual(obj1, obj3)).equals(false); }, "maps and sets": { async "compare maps"() { const map1 = new Map([['key1', 'value1'], ['key2', 'value2']]); const map2 = new Map([['key1', 'value1'], ['key2', 'value2']]); const map3 = new Map([['key1', 'value1'], ['key2', 'value3']]); expect(deepEqual(map1, map2)).equals(true); expect(deepEqual(map1, map3)).equals(false); }, async "compare sets"() { const set1 = new Set([1, 2, 3]); const set2 = new Set([1, 2, 3]); const set3 = new Set([1, 2, 4]); expect(deepEqual(set1, set2)).equals(true); expect(deepEqual(set1, set3)).equals(false); }, async "compare nested maps and sets"() { const obj1 = { map: new Map([['key', new Set([1, 2, 3])]]) }; const obj2 = { map: new Map([['key', new Set([1, 2, 3])]]) }; const obj3 = { map: new Map([['key', new Set([1, 2, 4])]]) }; expect(deepEqual(obj1, obj2)).equals(true); expect(deepEqual(obj1, obj3)).equals(false); }, async "compare complex structures"() { const map1 = new Map([['set', new Set([{ a: 1 }, { b: 2 }])]]); const map2 = new Map([['set', new Set([{ a: 1 }, { b: 2 }])]]); const map3 = new Map([['set', new Set([{ a: 1 }, { b: 3 }])]]); expect(deepEqual(map1, map2)).equals(true); expect(deepEqual(map1, map3)).equals(false); }, async "compare edge cases"() { const emptyMap1 = new Map(); const emptyMap2 = new Map(); const emptySet1 = new Set(); const emptySet2 = new Set(); const mixedMap1 = new Map([['b', 2], ['a', 1]]); const mixedMap2 = new Map([['a', 1], ['b', 2]]); expect(deepEqual(emptyMap1, emptyMap2)).equals(true); expect(deepEqual(emptySet1, emptySet2)).equals(true); expect(deepEqual(mixedMap1, mixedMap2)).equals(true); }, }, }; //# sourceMappingURL=equal.test.js.map