{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-bp2019/src/client/reactive/test/active-expression-rewriting/wrap-array.spec.js"],"names":["chai","expect","sinon","sinonChai","use","test","name","fn","arr012","spy","changeSpy","expr","undefined","forEach","getCall","push","i","entries","args"],"mappings":"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","file":"wrap-array.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\nfunction test(name, fn) {\n  const arr012 = [0,1,2];\n  const spy = sinon.spy();\n  const changeSpy = sinon.spy();\n  const expr = aexpr(() => arr012).onChange(changeSpy);\n  \n  it(name, () => fn({\n    arr012,\n    spy,\n    changeSpy,\n  }));\n}\n\ndescribe('AExpr Monitoring preserves Array Semantics', () => {\n\n  test('read 0', ({ arr012 }) => {\n    expect(arr012[0]).to.equal(0);\n  });\n\n  test('write 4', ({ arr012 }) => {\n    arr012[4] = 4;\n    \n    expect(arr012.length).to.equal(5);\n    expect(arr012[3]).to.equal(undefined);\n    expect(arr012[4]).to.equal(4);\n  });\n\n  test('read first', ({ arr012 }) => {\n    expect(arr012.first).to.equal(0);\n  });\n\n  test('write first', ({ arr012 }) => {\n    arr012.first = 'first';\n\n    expect(arr012.first).to.equal('first');\n  });\n\n  test('read last', ({ arr012 }) => {\n    expect(arr012.last).to.equal(2);\n  });\n\n  test('write last', ({ arr012 }) => {\n    arr012.last = 'last';\n\n    expect(arr012.last).to.equal('last');\n  });\n\n  test('forEach', ({ spy, arr012 }) => {\n    arr012.forEach(spy);\n    \n    expect(spy).to.be.calledThrice;\n    expect(spy.getCall(0).args[0]).to.equal(0);\n    expect(spy.getCall(1).args[0]).to.equal(1);\n    expect(spy.getCall(2).args[0]).to.equal(2);\n  });\n\n  test('push, then forEach', ({ spy, arr012 }) => {\n    arr012.push(3);\n    arr012.push(4);\n    arr012.forEach(spy);\n    \n    expect(spy).to.have.callCount(5);\n    expect(spy.getCall(0).args[0]).to.equal(0);\n    expect(spy.getCall(1).args[0]).to.equal(1);\n    expect(spy.getCall(2).args[0]).to.equal(2);\n    expect(spy.getCall(3).args[0]).to.equal(3);\n    expect(spy.getCall(4).args[0]).to.equal(4);\n  });\n\n  test('push, then for in', ({ spy, arr012 }) => {\n    arr012.push(3);\n    arr012.push(4);\n    \n    for (let i in arr012) {\n      spy(i)\n    }\n    \n    expect(spy).to.have.callCount(5);\n    expect(spy.getCall(0).args[0]).to.equal('0');\n    expect(spy.getCall(1).args[0]).to.equal('1');\n    expect(spy.getCall(2).args[0]).to.equal('2');\n    expect(spy.getCall(3).args[0]).to.equal('3');\n    expect(spy.getCall(4).args[0]).to.equal('4');\n  });\n\n  test('push, then for of', ({ spy, arr012 }) => {\n    arr012.push(3);\n    arr012.push(4);\n    \n    for (let i of arr012) {\n      spy(i)\n    }\n    \n    expect(spy).to.have.callCount(5);\n    expect(spy.getCall(0).args[0]).to.equal(0);\n    expect(spy.getCall(1).args[0]).to.equal(1);\n    expect(spy.getCall(2).args[0]).to.equal(2);\n    expect(spy.getCall(3).args[0]).to.equal(3);\n    expect(spy.getCall(4).args[0]).to.equal(4);\n  });\n\n  test('Object.entries', ({ spy, arr012 }) => {\n    arr012.push(3);\n    arr012.push(4);\n\n    Object.entries(arr012).forEach((args) => spy(...args));\n    \n    expect(spy).to.have.callCount(5);\n    expect(spy).to.calledWith('0', 0);\n    expect(spy).to.calledWith('1', 1);\n    expect(spy).to.calledWith('2', 2);\n    expect(spy).to.calledWith('3', 3);\n    expect(spy).to.calledWith('4', 4);\n  });\n\n  test('get length', ({ spy, arr012 }) => {\n    arr012.forEach(spy);\n    expect(arr012.length).to.equal(3);\n\n    arr012.length = 5;\n    expect(arr012.length).to.equal(5);\n  });\n\n});\n"]}