{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-active-expression-proxies/src/client/reactive/test/reflection.spec.js"],"names":["chai","expect","sinon","sinonChai","baseAExpr","aexpr","AExprRegistry","frameBasedAExpr","tickingAExpr","use","expr","meta","expectedName","info","returnValue","name","baseExpr","supportsDependencies","frameExpr","rewritingExpr","x","deps","dependencies","locals","y","deps2","obj","memberDeps","get","val","rect","width","height","useWidth","depsForWidth","dep","value","localDep","find","isLocalDependency","localDepDescription","getAsDependencyDescription","memberDep","isMemberDependency","memberDepDescription","z","sharedDeps","sharedDep","sharedDepDescription","temp","window","undefined","globals","foo","globalDeps","dependentAExprs","expr1","list","obj1","obj2","obj3","expr12","expr23","numberOfOccurences","count","allAsArray","item","addSpy","spy","removeSpy","on","ae","reset","ae2","dispose","getCallbacks","getHistoricEvents","level","relation"],"mappings":"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","file":"reflection.spec.js","sourcesContent":["\"enable aexpr\";\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 { aexpr as baseAExpr, AExprRegistry } from 'src/client/reactive/active-expression/active-expression.js'\nimport * as frameBasedAExpr from \"active-expression-frame-based\";\nimport * as tickingAExpr from \"src/client/reactive/active-expression-convention/active-expression-ticking.js\";\n\ndescribe('Reflection API', () => {\n\n  /**\n   * **************************************************************\n   * ****************** meta information **************************\n   * **************************************************************\n   */\n  describe('meta information', () => {\n\n    it('set and read a property', () => {\n      const expr = aexpr(() => {});\n      \n      expect(expr.meta().get('info')).to.be.undefined;\n      \n      const expectedName = 'my test AExpr';\n      expr.meta({ info: expectedName });\n      \n      expect(expr.meta().get('info')).to.equal(expectedName);\n    });\n\n    it('aexpr`s name is not supported anymore', () => {\n      const expr = baseAExpr(() => {});\n\n      expect(expr).not.to.respondTo('name');\n    });\n\n    it('setting a property is chainable', () => {\n      const expr = baseAExpr(() => {});\n\n      const expectedName = 'my test AExpr';\n      const returnValue = expr.meta({ name: expectedName });\n\n      expect(expr.meta().get('name')).to.equal(expectedName);\n      expect(returnValue).to.equal(expr); // chainability\n    });\n\n    describe('provide info about strategy', () => {\n\n      it('sets strategy meta to \"Rewriting\"', () => {\n        const expr = aexpr(() => {});\n        expect(expr.meta().get('strategy')).to.equal('Rewriting');\n      });\n\n      it('sets strategy meta to \"Frame-based\"', () => {\n        const expr = frameBasedAExpr.aexpr(() => {});\n        expect(expr.meta().get('strategy')).to.equal('Frame-based');\n      });\n\n    });\n\n  });\n\n  /**\n   * **************************************************************\n   * ******************** dependencies ****************************\n   * **************************************************************\n   */\n  describe('dependencies', () => {\n\n    describe('supportsDependencies', () => {\n\n      it('base aexprs do not supportsDependencies', () => {\n        const baseExpr = baseAExpr(() => {});\n        expect(baseExpr).to.respondTo('supportsDependencies');\n        expect(baseExpr.supportsDependencies()).to.be.false;\n      });\n\n      it('frame-based aexprs do not supportsDependencies', () => {\n        const frameExpr = frameBasedAExpr.aexpr(() => {});\n        expect(frameExpr).to.respondTo('supportsDependencies');\n        expect(frameExpr.supportsDependencies()).to.be.false;\n      });\n\n      it('rewriting aexprs supportsDependencies', () => {\n        const rewritingExpr = aexpr(() => {});\n        expect(rewritingExpr).to.respondTo('supportsDependencies');\n        expect(rewritingExpr.supportsDependencies()).to.be.true;\n      });\n\n    });\n\n    describe('dependencies', () => {\n\n      it('dependencies is defined for Rewriting AExprs', () => {\n        const expr = aexpr(() => {});\n        expect(expr).to.respondTo('dependencies');\n      });\n\n      it('get a local dependency', () => {\n        let x = 17;\n        \n        const expr = aexpr(() => x);\n        \n        x = 42;\n\n        const deps = expr.dependencies();\n        expect(deps.locals()).to.have.lengthOf(1);\n        expect(deps.locals()[0]).to.have.property('name', 'x');\n        expect(deps.locals()[0]).to.have.property('value', 42);\n      });\n\n      it('get two local dependencies', () => {\n        let x = 17;\n        let y = 31;\n        \n        const expr = aexpr(() => x + y);\n        \n        const deps = expr.dependencies();\n        expect(deps.locals()).to.have.lengthOf(2);\n        expect(deps.locals()[0]).to.have.property('name', 'x');\n        expect(deps.locals()[0]).to.have.property('value', 17);\n        expect(deps.locals()[1]).to.have.property('name', 'y');\n        expect(deps.locals()[1]).to.have.property('value', 31);\n        expect(deps.locals()[0].scope).to.equal(deps.locals()[1].scope);\n\n        x = 42;\n        y = 42;\n\n        const deps2 = expr.dependencies();\n        expect(deps2.locals()).to.have.lengthOf(2);\n        expect(deps2.locals()[0]).to.have.property('name', 'x');\n        expect(deps2.locals()[0]).to.have.property('value', 42);\n        expect(deps2.locals()[1]).to.have.property('name', 'y');\n        expect(deps2.locals()[1]).to.have.property('value', 42);\n        expect(deps2.locals()[0].scope).to.equal(deps2.locals()[1].scope);\n        expect(deps2.locals()[0].value).to.equal(deps2.locals()[1].value);\n      });\n\n      it('value of local updated on set', () => {\n        let x = false;\n        let y = 31;\n        \n        const expr = aexpr(() => x ? 42 : y);\n        \n        const deps = expr.dependencies();\n        expect(deps.locals()).to.have.lengthOf(2);\n        expect(deps.locals()[0]).to.have.property('name', 'x');\n        expect(deps.locals()[0]).to.have.property('value', false);\n        expect(deps.locals()[1]).to.have.property('name', 'y');\n        expect(deps.locals()[1]).to.have.property('value', 31);\n        expect(deps.locals()[0].scope).to.equal(deps.locals()[1].scope);\n\n        x = true;\n\n        const deps2 = expr.dependencies();\n        expect(deps2.locals()).to.have.lengthOf(1);\n        expect(deps2.locals()[0]).to.have.property('name', 'x');\n        expect(deps2.locals()[0]).to.have.property('value', true);\n\n        y = 42;\n      });\n\n      // #TODO: optimization: do not listen to locals that are not set (not on left-hand side or in an update expression)\n\n      it('get a member dependency', () => {\n        const obj = { x: 17 };\n        \n        const expr = aexpr(() => obj.x);\n\n        const memberDeps = expr.dependencies().members();\n        expect(memberDeps).to.have.lengthOf(1);\n        expect(memberDeps[0]).to.have.property('object', obj);\n        expect(memberDeps[0]).to.have.property('property', 'x');\n        expect(memberDeps[0]).to.have.property('value', 17);\n      });\n\n      it('get a nested member dependency', () => {\n        const obj = { x: { y: 17 } };\n        \n        const expr = aexpr(() => obj.x.y);\n\n        const memberDeps = expr.dependencies().members();\n        expect(memberDeps).to.have.lengthOf(2);\n        expect(memberDeps[0]).to.have.property('object', obj);\n        expect(memberDeps[0]).to.have.property('property', 'x');\n        expect(memberDeps[0]).to.have.property('value', obj.x);\n        expect(memberDeps[1]).to.have.property('object', obj.x);\n        expect(memberDeps[1]).to.have.property('property', 'y');\n        expect(memberDeps[1]).to.have.property('value', 17);\n      });\n\n      it('get a member dependency from a method call', () => {\n        const obj = {\n          get() {\n            return this.val;\n          },\n          val: 17\n        };\n        \n        const expr = aexpr(() => obj.get());\n\n        const memberDeps = expr.dependencies().members();\n        expect(memberDeps).to.have.lengthOf(2);\n        expect(memberDeps[0]).to.have.property('object', obj);\n        expect(memberDeps[0]).to.have.property('property', 'get');\n        expect(memberDeps[0]).to.have.property('value', obj.get);\n        expect(memberDeps[1]).to.have.property('object', obj);\n        expect(memberDeps[1]).to.have.property('property', 'val');\n        expect(memberDeps[1]).to.have.property('value', 17);\n      });\n\n      it('member dependencies change with re-evaluation', () => {\n        const rect = {\n          width: 100,\n          height: 200\n        };\n        let useWidth = true;\n        \n        const expr = aexpr(() => useWidth ? rect.width : rect.height);\n\n        const depsForWidth = expr.dependencies().members();\n        expect(depsForWidth).to.have.lengthOf(1);\n        expect(depsForWidth[0]).to.have.property('object', rect);\n        expect(depsForWidth[0]).to.have.property('property', 'width');\n        expect(depsForWidth[0]).to.have.property('value', 100);\n        \n        useWidth = false;\n\n        const memberDeps = expr.dependencies().members();\n        expect(memberDeps).to.have.lengthOf(1);\n        expect(memberDeps[0]).to.have.property('object', rect);\n        expect(memberDeps[0]).to.have.property('property', 'height');\n        expect(memberDeps[0]).to.have.property('value', 200);\n      });\n      \n      describe('all dependencies', () => {\n        it('no dependencies', () => {\n          const deps = aexpr(() => {}).dependencies().all();\n          expect(deps).to.be.an('array');\n          expect(deps).to.have.a.lengthOf(0);\n        });\n\n        it('returns all dependencies', () => {\n          var x = 42;\n          const deps = aexpr(() => x).dependencies().all();\n          expect(deps).to.be.an('array');\n          expect(deps).to.have.a.lengthOf(1);\n          const dep = deps.first.getAsDependencyDescription();\n          expect(dep).to.have.property('scope');\n          expect(dep).to.have.property('name', 'x');\n          expect(dep).to.have.property('value', 42);\n        });\n\n        it('returns all dependencies', () => {\n          var x = { value: 42};\n          const deps = aexpr(() => x.value).dependencies().all();\n          expect(deps).to.be.an('array');\n          expect(deps).to.have.a.lengthOf(2);\n\n          const localDep = deps.find(dep => dep.isLocalDependency());\n          expect(localDep).to.be.defined;\n          const localDepDescription = localDep.getAsDependencyDescription();\n          expect(localDepDescription).to.have.property('scope');\n          expect(localDepDescription).to.have.property('name', 'x');\n          expect(localDepDescription).to.have.property('value', x);\n\n          const memberDep = deps.find(dep => dep.isMemberDependency());\n          expect(memberDep).to.be.defined;\n          const memberDepDescription = memberDep.getAsDependencyDescription();\n          expect(memberDepDescription).to.have.property('object', x);\n          expect(memberDepDescription).to.have.property('property', 'value');\n          expect(memberDepDescription).to.have.property('value', 42);\n        });\n\n      });\n\n      describe('sharesDependenciesWith', () => {\n\n        it('available on aexprs', () => {\n          expect(aexpr(() => {})).to.respondTo('sharedDependenciesWith');\n        });\n        \n        it('compute shared dependencies between two aexprs', () => {\n          var x = 1, y = 2, z = 3;\n          \n          expect(aexpr(() => {})).to.respondTo('sharedDependenciesWith');\n          const sharedDeps = aexpr(() => x + y).sharedDependenciesWith(aexpr(() => y + z));\n\n          expect(sharedDeps).to.be.an('array');\n          expect(sharedDeps).to.have.a.lengthOf(1);\n          \n          const sharedDep = sharedDeps.first;\n          expect(sharedDep).to.be.defined;\n          const sharedDepDescription = sharedDep.getAsDependencyDescription();\n          expect(sharedDepDescription).to.have.property('scope');\n          expect(sharedDepDescription).to.have.property('name', 'y');\n          expect(sharedDepDescription).to.have.property('value', y);\n        });\n      });\n\n      describe('global dependencies not modelled member dependencies, but its own access', () => {\n        let temp;\n        \n        beforeEach(() => {\n          temp = window.foo;\n        });\n        \n        afterEach(() => {\n          window.foo = temp;\n          temp = undefined;\n        });\n        \n        it('dependencies is defined for Rewriting AExprs', () => {\n          const deps = aexpr(() => {}).dependencies();\n          expect(deps).to.respondTo('globals');\n          expect(deps.globals()).to.be.an('array');\n        });\n\n        it('get global dependencies', () => {\n          window.foo = 200;\n\n          const expr = aexpr(() => foo);\n\n          const memberDeps = expr.dependencies().members();\n          expect(memberDeps).to.have.lengthOf(0);\n          \n          const globalDeps = expr.dependencies().globals();\n          expect(globalDeps).to.have.lengthOf(1);\n          expect(globalDeps[0]).to.have.property('name', 'foo');\n          expect(globalDeps[0]).to.have.property('value', 200);\n        });\n\n      });\n      \n    });\n\n    describe('Object.prototype.dependentAExprs', () => {\n\n      it('is a method on Object', () => {\n        expect({}).to.respondTo('dependentAExprs');\n      });\n\n      it('returns a list', () => {\n        expect(({}).dependentAExprs()).to.be.an('array');\n      });\n\n      it('returns an empty list if not tracked', () => {\n        expect(({}).dependentAExprs()).to.be.empty;\n      });\n\n      it('returns a list of AExprs', () => {\n        const obj = {};\n        expect(obj.dependentAExprs()).to.be.empty;\n        \n        const expr1 = aexpr(() => obj);\n        \n        const list = obj.dependentAExprs();\n        expect(list).to.have.lengthOf(1);\n        expect(list).to.include(expr1);\n      });\n\n      it('returns a list of two AExprs', () => {\n        const obj1 = {};\n        const obj2 = {};\n        const obj3 = {};\n        \n        const expr12 = aexpr(() => (obj1, obj2));\n        const expr23 = aexpr(() => (obj2, obj3));\n\n        const list = obj2.dependentAExprs();\n        expect(list).to.have.lengthOf(2);\n        expect(list).to.include(expr12);\n        expect(list).to.include(expr23);\n      });\n\n    });\n    /**\n     * **************************************************************\n     * **************** all Active Expression ***********************\n     * **************************************************************\n     */\n    describe('track all undisposed AExprs', () => {\n\n      describe('`allAsArray`', () => {\n        \n        function numberOfOccurences(aexpr) {\n          let count = 0;\n          AExprRegistry.allAsArray().forEach(item => {\n            if(item === aexpr) {\n              count++;\n            }\n          })\n          return count;\n        }\n        \n        describe('change events', () => {\n\n          it('respondTo on and off', () => {\n            expect(AExprRegistry).to.respondTo('on');\n            expect(AExprRegistry).to.respondTo('off');\n          });\n\n          it('emits events on add/remove', () => {\n            const addSpy = sinon.spy();\n            const removeSpy = sinon.spy();\n            \n            AExprRegistry.on('add', addSpy);\n            AExprRegistry.on('remove', removeSpy);\n\n            expect(addSpy).not.to.be.called;\n            expect(removeSpy).not.to.be.called;\n\n            const ae = aexpr(() => {});\n            \n            expect(addSpy).to.be.calledOnce;\n            expect(addSpy).to.be.calledWith(ae);\n            addSpy.reset();\n            expect(removeSpy).not.to.be.called;\n\n            const ae2 = aexpr(() => {});\n            \n            expect(addSpy).to.be.calledOnce;\n            expect(addSpy).to.be.calledWith(ae2);\n            addSpy.reset();\n            expect(removeSpy).not.to.be.called;\n\n            ae2.dispose();\n            \n            expect(addSpy).not.to.be.called;\n            expect(removeSpy).to.be.calledOnce;\n            expect(removeSpy).to.be.calledWith(ae2);\n            removeSpy.reset();\n\n            ae2.dispose();\n            \n            expect(addSpy).not.to.be.called;\n            expect(removeSpy).not.to.be.called;\n          });\n\n        });\n\n        it('get all aexprs `allAsArray`', () => {\n          expect(AExprRegistry).to.respondTo('allAsArray');\n        });\n\n        it('should contain a **base** aexpr once', () => {\n          const expr = baseAExpr(() => {});\n          expect(numberOfOccurences(expr)).to.equal(1);\n          \n          expr.dispose();\n          expect(numberOfOccurences(expr)).to.equal(0);\n        });\n\n        \n        it('should add a **ticking** aexpr when ready (completely initialized)', () => {\n          const expr = tickingAExpr.aexpr(() => 1);\n          expect(numberOfOccurences(expr)).to.equal(1);\n          \n          expr.dispose();\n          expect(numberOfOccurences(expr)).to.equal(0);\n        });\n\n        it('should add a **frame-based** aexpr when ready (completely initialized)', () => {\n          const expr = frameBasedAExpr.aexpr(() => 1);\n          expect(numberOfOccurences(expr)).to.equal(1);\n          \n          expr.dispose();\n          expect(numberOfOccurences(expr)).to.equal(0);\n        });\n\n        it('should add a **rewriting** aexpr when ready (completely initialized)', () => {\n          const expr = aexpr(() => {});\n          expect(numberOfOccurences(expr)).to.equal(1);\n          \n          expr.dispose();\n          expect(numberOfOccurences(expr)).to.equal(0);\n        });\n\n      });\n\n      // #TODO: stream-based access\n      // #TODO: how to do a ROQ of allAexpr? (circular dependencies)\n    });    \n\n    // #TODO\n    xit('further reflection stuff', () => {\n      const expr = aexpr(() => {});\n      \n      expr.getCallbacks()\n      expr.getCallbacks().getImpact() // analyse calls to callbacks and what variables they access\n      expr.getHistoricEvents() // with stack at which they were called\n      expr.on('new-dependency', /* callback */) // further events\n      \n      /* other things*/\n      AExpr.EventHistory\n      \n      Higher-level.Abstractions >> Higher-level.events & relation.to.aexprs\n    });\n\n  });\n\n});\n"]}