{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-bp2019/src/client/reactive/test/utils/equality.spec.js"],"names":["shallowEqualsArray","shallowEqualsSet","shallowEqualsMap","shallowEquals","deepEquals","chai","expect","sinon","sinonChai","use","arr","obj1","set","Set","map","Map","obj","undefined","obj2","obj3","a","obj4","b","obj5","obj6","w","window","x"],"mappings":"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","file":"equality.spec.js","sourcesContent":["\"enable aexpr\";\nimport { shallowEqualsArray, shallowEqualsSet, shallowEqualsMap, shallowEquals, deepEquals } from 'src/client/reactive/utils/equality.js';\n\nimport chai, {expect} from 'src/external/chai.js';\nimport sinon from 'src/external/sinon-3.2.1.js';\nimport sinonChai from 'src/external/sinon-chai.js';\nchai.use(sinonChai);\n\ndescribe('testing for equality', () => {\n  it('shallowEqualsArray', () => {\n    const arr = [1,2,3];\n    expect(shallowEqualsArray(arr, arr)).to.be.true;\n    expect(shallowEqualsArray([], [])).to.be.true;\n    expect(shallowEqualsArray([1], [1])).to.be.true;\n    expect(shallowEqualsArray([1], [1,2])).to.be.false;\n    expect(shallowEqualsArray([1,2], [1])).to.be.false;\n    expect(shallowEqualsArray([1,2], [2,1])).to.be.false;\n    const obj1 = {};\n    expect(shallowEqualsArray([1, obj1, arr], [1, obj1, arr])).to.be.true;\n    \n    // not same identity\n    expect(shallowEqualsArray([{}], [{}])).to.be.false;\n  });\n\n  it('shallowEqualsSet', () => {\n    const set = new Set([1,2,3]);\n    expect(shallowEqualsSet(set, set)).to.be.true;\n    expect(shallowEqualsSet(new Set(), new Set())).to.be.true;\n    expect(shallowEqualsSet(new Set([1]), new Set([1]))).to.be.true;\n    expect(shallowEqualsSet(new Set([1]), new Set([1,2]))).to.be.false;\n    expect(shallowEqualsSet(new Set([1,2]), new Set([1]))).to.be.false;\n    expect(shallowEqualsSet(new Set([1,2]), new Set([2,1]))).to.be.true;\n    const obj1 = {};\n    expect(shallowEqualsSet(new Set([1, obj1, set]), new Set([obj1, 1, set]))).to.be.true;\n    \n    // not same identity\n    expect(shallowEqualsSet(new Set([{}]), new Set([{}]))).to.be.false;\n  });\n\n  it('shallowEqualsMap', () => {\n    const map = new Map([[1,2],[3,4],[5,6]]);\n    expect(shallowEqualsMap(map, map)).to.be.true;\n    expect(shallowEqualsMap(new Map(), new Map())).to.be.true;\n    expect(shallowEqualsMap(new Map([[1,2]]), new Map([[1,2]]))).to.be.true;\n    expect(shallowEqualsMap(new Map([[1,2]]), new Map([[1,2],[3,4]]))).to.be.false;\n    expect(shallowEqualsMap(new Map([[1,2],[3,4]]), new Map([[1,2]]))).to.be.false;\n    expect(shallowEqualsMap(new Map([[1,2],[3,4]]), new Map([[3,4],[1,2]]))).to.be.true;\n    const obj1 = {};\n    expect(shallowEqualsMap(new Map([[1,obj1],[map,2]]), new Map([[map,2],[1,obj1]]))).to.be.true;\n    \n    // not same identity\n    expect(shallowEqualsMap(new Map([[1,{}]]), new Map([[1,{}]]))).to.be.false;\n  });\n\n  describe('shallowEquals', () => {\n\n    it('identity', () => {\n      expect(shallowEquals(1, 1)).to.be.true;\n      expect(shallowEquals('hello', 'hello')).to.be.true;\n\n      const obj = {};\n      expect(shallowEquals(obj, obj)).to.be.true;\n\n      const map = new Map([[1,2],[3,4],[5,6]]);\n      expect(shallowEquals(map, map)).to.be.true;\n      \n      expect(shallowEquals(undefined, undefined)).to.be.true;\n\n      expect(shallowEquals(1, '1')).to.be.false;\n      expect(shallowEquals(true, false)).to.be.false;\n      expect(shallowEquals(undefined, true)).to.be.false;\n      expect(shallowEquals(undefined, false)).to.be.false;\n    });\n\n    it('shallow properties', () => {\n      const obj1 = {};\n      const obj2 = {};\n      const obj3 = { a: 42 };\n      const obj4 = { a: 42, b: 17 };\n      const obj5 = { b: 17, a: 42 };\n      const obj6 = { a: 43, b: 18 };\n      expect(shallowEquals(obj1, obj2)).to.be.true;\n      expect(shallowEquals(obj2, obj3)).to.be.false;\n      expect(shallowEquals(obj3, obj4)).to.be.false;\n      expect(shallowEquals(obj4, obj5)).to.be.true;\n      expect(shallowEquals(obj5, obj6)).to.be.false;\n    });\n\n  });\n\n  describe('deepEquals', () => {\n\n    it('identity', () => {\n      expect(deepEquals(1, 1)).to.be.true;\n      expect(deepEquals('hello', 'hello')).to.be.true;\n\n      const obj = {};\n      expect(deepEquals(obj, obj)).to.be.true;\n\n      const map = new Map([[1,2],[3,4],[5,6]]);\n      expect(deepEquals(map, map)).to.be.true;\n      \n      expect(deepEquals(undefined, undefined)).to.be.true;\n\n      expect(deepEquals(1, '1')).to.be.false;\n      expect(deepEquals(true, false)).to.be.false;\n      expect(deepEquals(undefined, true)).to.be.false;\n      expect(deepEquals(undefined, false)).to.be.false;\n    });\n\n    it('shallow properties', () => {\n      const obj1 = {};\n      const obj2 = {};\n      const obj3 = { a: 42 };\n      const obj4 = { a: 42, b: 17 };\n      const obj5 = { b: 17, a: 42 };\n      const obj6 = { a: 43, b: 18 };\n      expect(deepEquals(obj1, obj2)).to.be.true;\n      expect(deepEquals(obj2, obj3)).to.be.false;\n      expect(deepEquals(obj3, obj4)).to.be.false;\n      expect(deepEquals(obj4, obj5)).to.be.true;\n      expect(deepEquals(obj5, obj6)).to.be.false;\n    });\n\n    it('deep properties', () => {\n      const obj1 = {\n        a: {}\n      }\n      const obj2 = {\n        a: {}\n      }\n      expect(deepEquals(obj1, obj2)).to.be.true;\n    });\n\n    describe('infinite loop detection', () => {\n      \n      it('infinite loop detection', () => {\n        expect(deepEquals({ w: window }, { w: window })).to.be.true;\n      });\n      \n      it('recursive', () => {\n        const obj1 = { a: 22 }\n        obj1.b = obj1;\n        const obj2 = { a: 22 }\n        obj2.b = obj2;\n\n        expect(deepEquals(obj1, obj2)).to.be.true;\n      });\n      \n      it('imbalanced recursive', () => {\n        const obj1 = {\n          x: 22\n        }\n        obj1.a = obj1;\n        const obj2 = {\n          x: 22,\n          a: {\n            x: 22\n          }\n        }\n        obj2.a.a = obj2;\n\n        expect(deepEquals(obj1, obj2)).to.be.true;\n      });\n      \n      it('cross referencing recursive', () => {\n        const obj1 = { a: 22 }\n        const obj2 = { a: 22 }\n        obj1.b = obj2;\n        obj2.b = obj1;\n        \n        expect(deepEquals(obj1, obj2)).to.be.true;\n      });\n\n    });\n  });\n});\n"]}