{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-markus/src/client/reactive/test/active-expression-rewriting/configurable-comparison-function.spec.js"],"names":["chai","expect","sinon","sinonChai","BaseActiveExpression","use","spy","arr","expr","onChange","push","getCall","match","x","checkAndNotify","matchSecondProperty","compare","lastResult","newResult","store","reset","set","Set","add","map","Map"],"mappings":"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","file":"configurable-comparison-function.spec.js","sourcesContent":["'enable aexpr';\n'use strict';\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\nimport { BaseActiveExpression } from '../../active-expression/active-expression.js';\n\ndescribe('Configurable Comparison Function', () => {\n\n  describe('Identity as default for objects', () => {\n  });\n\n  // #TODO: other implementation strategies have to detect those changes\n  describe('Arrays as Data Structures', () => {\n\n    it('detects a newly pushed element', () => {\n      const spy = sinon.spy();\n      const arr = [1,2];\n      const expr = aexpr(() => arr).onChange(spy);\n\n      arr.push(42);\n\n      expect(spy).to.be.calledOnce;\n      expect(spy.getCall(0).args[0]).to.equal(arr);\n    });\n\n    it('identity does not matter/arrays as value classes', () => {\n      const spy = sinon.spy();\n      let arr = [1,2];\n      const expr = aexpr(() => arr).onChange(spy);\n\n      arr = [1,2];\n\n      expect(spy).not.to.be.called;\n    });\n    \n    describe('explicit option configured to identity', () => {\n      it('array modification do not trigger callbacks', () => {\n        const spy = sinon.spy();\n        const arr = [1,2];\n        const expr = aexpr(() => arr, { match: 'identity' }).onChange(spy);\n\n        arr.push(42);\n  \n        expect(spy).not.to.be.called;\n      });\n      it('identity changes matter', () => {\n        const spy = sinon.spy();\n        let arr = [1,2];\n        const expr = aexpr(() => arr, { match: 'identity' }).onChange(spy);\n\n        arr = [1,2];\n  \n        expect(spy).to.be.calledOnce;\n        expect(spy.getCall(0).args[0]).to.equal(arr);\n      });\n    });\n    \n    describe('explicit option set to shallow', () => {\n      it('array modification triggers callbacks2', () => {\n        const spy = sinon.spy();\n        const arr = [1,2];\n        const expr = aexpr(() => arr, { match: 'shallow' }).onChange(spy);\n\n        arr.push(42);\n  \n        expect(spy).to.be.calledOnce;\n        expect(spy.getCall(0).args[0]).to.equal(arr);\n      });\n      it('identity changes do not matter', () => {\n        const spy = sinon.spy();\n        let arr = [1,2];\n        const expr = aexpr(() => arr, { match: 'shallow' }).onChange(spy);\n\n        arr = [1,2];\n  \n        expect(spy).not.to.be.called;\n      });\n    });\n    \n    describe('explicit option set to deep', () => {\n      it('array modification triggers callbacks', () => {\n        const spy = sinon.spy();\n        const arr = [1, { x: 4 }];\n        const expr = aexpr(() => arr, { match: 'deep' }).onChange(spy);\n\n        arr.push(42);\n        expr.checkAndNotify();\n  \n        expect(spy).to.be.calledOnce;\n        expect(spy.getCall(0).args[0]).to.equal(arr);\n      });\n      it('identity changes do not matter1', () => {\n        const spy = sinon.spy();\n        let arr = [1, { x: 4 }];\n        const expr = aexpr(() => arr, { match: 'deep' }).onChange(spy);\n\n        arr = [1, { x: 4 }];\n  \n        expect(spy).not.to.be.called;\n      });\n      it('nested property identity changes do not trigger1', () => {\n        const spy = sinon.spy();\n        let arr = [1, { x: 4 }];\n        const expr = aexpr(() => arr, { match: 'deep' }).onChange(spy);\n\n        arr[1] = { x: 4 };\n  \n        expect(spy).not.to.be.called;\n      });\n      it('nested property changes trigger', () => {\n        const spy = sinon.spy();\n        let arr = [1, { x: 4 }];\n        const expr = aexpr(() => arr, { match: 'deep' }).onChange(spy);\n\n        arr[1] = { x: 5};\n        expr.checkAndNotify();\n  \n        expect(spy).to.be.calledOnce;\n        expect(spy.getCall(0).args[0]).to.equal(arr);\n      });\n      it('nested property changes trigger (modify only a deep property)', () => {\n        const spy = sinon.spy();\n        let arr = [1, { x: 4 }];\n        const expr = aexpr(() => arr, { match: 'deep' }).onChange(spy);\n\n        arr[1].x = 5;\n        expr.checkAndNotify();\n  \n        expect(spy).to.be.calledOnce;\n        expect(spy.getCall(0).args[0]).to.equal(arr);\n      });\n    });\n    \n    describe('custom comparator (explicit option)', () => {\n      const matchSecondProperty = {\n        compare(lastResult, newResult) {\n          return lastResult[1] === newResult[1];\n        },\n        store(newResult) { return [...newResult]; }\n      }\n      \n      it('array modification triggers callbacks', () => {\n        const spy = sinon.spy();\n        const arr = [1, 2];\n        const expr = aexpr(() => arr, { match: matchSecondProperty }).onChange(spy);\n\n        arr.push(42);\n  \n        expect(spy).not.to.be.called;\n      });\n      \n      // #TODO: this test failing when removing the explicit checkAndNotify means we do not detect dependencies in matcher or store functions!\n      it('changing second property triggers callbacks', () => {\n        const spy = sinon.spy();\n        const arr = [1, 2];\n        const expr = aexpr(() => arr, { match: matchSecondProperty }).onChange(spy);\n\n        arr[1] = 3;\n        expr.checkAndNotify();\n  \n        expect(spy).to.be.calledOnce;\n        expect(spy.getCall(0).args[0]).to.equal(arr);\n        spy.reset()\n\n        arr.length = 1;\n        expr.checkAndNotify();\n  \n        expect(spy).to.be.calledOnce;\n        expect(spy.getCall(0).args[0]).to.equal(arr);\n      });\n    });\n    \n  });\n  \n  describe('Sets as Data Structures', () => {\n    it('detects a newly added element', () => {\n      const spy = sinon.spy();\n      const set = new Set([1,2]);\n      const expr = aexpr(() => set).onChange(spy);\n\n      set.add(42);\n\n      expect(spy).to.be.calledOnce;\n      expect(spy.getCall(0).args[0]).to.equal(set);\n    });\n    it('set modification triggers callbacks with shallow matcher', () => {\n      const spy = sinon.spy();\n      const set = new Set([1,2]);\n      const expr = aexpr(() => set, { match: 'shallow' }).onChange(spy);\n\n      set.add(42);\n\n      expect(spy).to.be.calledOnce;\n      expect(spy.getCall(0).args[0]).to.equal(set);\n    });\n    it('identity does not matter/sets as value classes', () => {\n      const spy = sinon.spy();\n      let set = new Set([1,2]);\n      const expr = aexpr(() => set).onChange(spy);\n\n      set = new Set([1,2]);\n\n      expect(spy).not.to.be.called;\n    });\n    it('order of insertion does not matter/set semantic', () => {\n      const spy = sinon.spy();\n      let set = new Set([1,2]);\n      const expr = aexpr(() => set).onChange(spy);\n\n      set = new Set([2,1]);\n\n      expect(spy).not.to.be.called;\n    });\n  });\n  describe('Maps as Data Structures', () => {\n    it('detects a newly added element (maps)', () => {\n      const spy = sinon.spy();\n      const map = new Map([[1,2]]);\n      const expr = aexpr(() => map).onChange(spy);\n\n      map.set(42, {});\n\n      expect(spy).to.be.calledOnce;\n      expect(spy.getCall(0).args[0]).to.equal(map);\n    });\n    it('identity does not matter/maps as value classes', () => {\n      const spy = sinon.spy();\n      let map = new Map([[1,2]]);\n      const expr = aexpr(() => map).onChange(spy);\n\n      map = new Map([[1,2]]);\n\n      expect(spy).not.to.be.called;\n    });\n    it('order of insertion does not matter/map semantic', () => {\n      const spy = sinon.spy();\n      let map = new Map([[1,2],[3,4]]);\n      const expr = aexpr(() => map).onChange(spy);\n\n      map = new Map([[3,4],[1,2]]);\n\n      expect(spy).not.to.be.called;\n    });\n  });\n});"]}