{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-markus/src/client/reactive/test/active-expression-rewriting/update-expression.spec.js"],"names":["chai","expect","sinon","sinonChai","deleteMember","use","outerSpy","spy","i","changeSpy","x","onChange","obj","prop"],"mappings":"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","file":"update-expression.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 { deleteMember} from '../../active-expression-rewriting/active-expression-rewriting.js';\n\ndescribe('UpdateOperator', () => {\n  \n  it('x++', () => {\n    const outerSpy = sinon.spy(i => i);\n    const changeSpy = sinon.spy();\n    \n    var x = 42;\n    aexpr(() => x).onChange(changeSpy);\n\n    outerSpy(x++);\n\n    expect(changeSpy).to.be.calledOnce;\n    expect(changeSpy).to.be.calledWith(43);\n    expect(changeSpy).to.be.calledBefore(outerSpy);\n    expect(outerSpy).to.be.calledWith(42); // expression return the previous value\n\n    expect(x).to.equal(43);\n  });\n  \n  it('x--', () => {\n    const outerSpy = sinon.spy(i => i);\n    const changeSpy = sinon.spy();\n    \n    var x = 42;\n    aexpr(() => x).onChange(changeSpy);\n\n    outerSpy(x--);\n\n    expect(changeSpy).to.be.calledOnce;\n    expect(changeSpy).to.be.calledWith(41);\n    expect(changeSpy).to.be.calledBefore(outerSpy);\n    expect(outerSpy).to.be.calledWith(42); // expression return the previous value\n\n    expect(x).to.equal(41);\n  });\n  \n  it('++x', () => {\n    const outerSpy = sinon.spy(i => i);\n    const changeSpy = sinon.spy();\n    \n    var x = 42;\n    aexpr(() => x).onChange(changeSpy);\n\n    outerSpy(++x);\n\n    expect(changeSpy).to.be.calledOnce;\n    expect(changeSpy).to.be.calledWith(43);\n    expect(changeSpy).to.be.calledBefore(outerSpy);\n    expect(outerSpy).to.be.calledWith(43); // expression return the previous value\n\n    expect(x).to.equal(43);\n  });\n  \n  it('--x', () => {\n    const outerSpy = sinon.spy(i => i);\n    const changeSpy = sinon.spy();\n    \n    var x = 42;\n    aexpr(() => x).onChange(changeSpy);\n\n    outerSpy(--x);\n\n    expect(changeSpy).to.be.calledOnce;\n    expect(changeSpy).to.be.calledWith(41);\n    expect(changeSpy).to.be.calledBefore(outerSpy);\n    expect(outerSpy).to.be.calledWith(41); // expression return the previous value\n\n    expect(x).to.equal(41);\n  });\n  \n  it('obj.prop++', () => {\n    const outerSpy = sinon.spy(i => i);\n    const changeSpy = sinon.spy();\n    \n    const obj = { prop: 42 };\n    aexpr(() => obj.prop).onChange(changeSpy);\n\n    outerSpy(obj.prop++);\n\n    expect(changeSpy).to.be.calledOnce;\n    expect(changeSpy).to.be.calledWith(43);\n    expect(changeSpy).to.be.calledBefore(outerSpy);\n    expect(outerSpy).to.be.calledWith(42); // expression return the previous value\n\n    expect(obj.prop).to.equal(43);\n  });\n  \n  it('obj.prop--', () => {\n    const outerSpy = sinon.spy(i => i);\n    const changeSpy = sinon.spy();\n    \n    const obj = { prop: 42 };\n    aexpr(() => obj.prop).onChange(changeSpy);\n\n    outerSpy(obj.prop--);\n\n    expect(changeSpy).to.be.calledOnce;\n    expect(changeSpy).to.be.calledWith(41);\n    expect(changeSpy).to.be.calledBefore(outerSpy);\n    expect(outerSpy).to.be.calledWith(42); // expression return the previous value\n\n    expect(obj.prop).to.equal(41);\n  });\n  \n  it('++obj.prop', () => {\n    const outerSpy = sinon.spy(i => i);\n    const changeSpy = sinon.spy();\n    \n    const obj = { prop: 42 };\n    aexpr(() => obj.prop).onChange(changeSpy);\n\n    outerSpy(++obj.prop);\n\n    expect(changeSpy).to.be.calledOnce;\n    expect(changeSpy).to.be.calledWith(43);\n    expect(changeSpy).to.be.calledBefore(outerSpy);\n    expect(outerSpy).to.be.calledWith(43); // expression return the previous value\n\n    expect(obj.prop).to.equal(43);\n  });\n  \n  it('--obj.prop', () => {\n    const outerSpy = sinon.spy(i => i);\n    const changeSpy = sinon.spy();\n    \n    const obj = { prop: 42 };\n    aexpr(() => obj.prop).onChange(changeSpy);\n\n    outerSpy(--obj.prop);\n\n    expect(changeSpy).to.be.calledOnce;\n    expect(changeSpy).to.be.calledWith(41);\n    expect(changeSpy).to.be.calledBefore(outerSpy);\n    expect(outerSpy).to.be.calledWith(41); // expression return the previous value\n\n    expect(obj.prop).to.equal(41);\n  });\n  \n});\n"]}