{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-core/src/client/reactive/test/active-expression-rewriting/side-effects.spec.js"],"names":["chai","expect","sinon","sinonChai","use","items","spy","expr","map","i","dataflow","getCall","x"],"mappings":"AAAA;;;;;;;;;;;;;;;;;AACOA,U;AAAOC,Y,sBAAAA,M;;AACPC,W;;AACAC,e;;;;;;;;;;;;;;AAFOF,iS;;;;;;;;;;;;;;;;;;;;;;;;;;AAAPD,+R;;;;;;;;;;;;;;;;;;;;;;;;;;AACAE,gS;;;;;;;;;;;;;;;;;;;;;;;;;;AACAC,oS;;;;;;;;;;;;;;;;;;;;AACP,yFAAKC,GAAL,wFAASD,SAAT;;AAGA,oFAAS,cAAT,EAAyB,MAAM;;AAE7B;AACA,0EAAG,mFAAH,EAAwF,MAAM;AAAA;;AAC5F,gBAAME,QAAQ,CAAC,CAAD,EAAI,CAAJ,CAAd;;AAEA,gBAAMC,8EAAM,sFAAMA,GAAN,EAAN,CAAN;AACA,gBAAMC,OAAO,OAAM;AAAM,mNAAMC,GAAN,CAAUC;AAAA;AAAK,wHAAI,CAAJ;AAAL,aAAV;AAAN,WAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAmCC,QAAnC,EAA4CJ,GAA5C,YAA4CA,GAA5C,gFAA4CA,GAA5C,EAA4CA,GAA5C;AAAA;AAAA,YAAb;;AAEA,qIAAOA,GAAP,YAAOA,GAAP,gFAAOA,GAAP,EAAOA,GAAP;AACA,gOAAO,6GAAIK,OAAJ,CAAY,CAAZ,CAAP,YAA2B,CAA3B,mBAAsC,CAAC,CAAD,EAAI,CAAJ,CAAtC;AACD,SARD;;AAUA;AACA,0EAAG,gFAAH,EAAqF,MAAM;AAAA;;AACzF,cAAIC,CAAJ;;AAEA,gBAAMN,8EAAM,sFAAMA,GAAN,EAAN,CAAN;AACA,gBAAMC,OAAO,OAAM,MAAM;AACvBK,gBAAI,8EAAK,CAAT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACAA,gBAAI,6EAAI,CAAR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACAA,gBAAI,6EAAI,CAAR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0FAAOA,CAAP;AACD,WALY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAKVF,QALU,EAKDJ,GALC,YAKDA,GALC,gFAKDA,GALC,EAKDA,GALC;AAAA;AAAA,YAAb;;AAOAM,cAAI,CAAJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA,qIAAON,GAAP,YAAOA,GAAP,gFAAOA,GAAP,EAAOA,GAAP;AACA,gOAAO,6GAAIK,OAAJ,CAAY,CAAZ,CAAP,YAA2B,CAA3B,qBAAwC,CAAxC;AACA,gOAAO,6GAAIA,OAAJ,CAAY,CAAZ,CAAP,YAA2B,CAA3B,qBAAwC,CAAxC;AACD,SAhBD;AAmBD,OAjCD","file":"side-effects.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\n    \ndescribe('side effects', () => {\n  \n  // Caution: If this test fails, it may freeze the system because it can create an infinite loop\n  it('invoking DataStructureHook during AE execurion should not result in infinite loop', () => {\n    const items = [2, 4];\n    \n    const spy = sinon.spy();\n    const expr = aexpr(() => items.map(i => i * 2)).dataflow(spy);\n\n    expect(spy).to.be.calledOnce;\n    expect(spy.getCall(0).args[0]).to.eql([4, 8]);\n  });\n  \n  // Caution: If this test fails, it may freeze the system because it can create an infinite loop\n  it('invoking SourceCodeHook during AE execurion should not result in infinite loop', () => {\n    let x;\n    \n    const spy = sinon.spy();\n    const expr = aexpr(() => {\n      x = x || 4;\n      x = x + 1;\n      x = x - 1;\n      return x;\n    }).dataflow(spy);\n\n    x = 5;\n    \n    expect(spy).to.be.calledTwice;\n    expect(spy.getCall(0).args[0]).to.equal(4);\n    expect(spy.getCall(1).args[0]).to.equal(5);\n  });\n  \n  \n});\n"]}