{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-core/src/client/reactive/test/stream.spec.js"],"names":["chai","expect","sinon","sinonChai","Stream","use","dataSpyFor","stream","dataSpy","spy","on","endSpyFor","endSpy","s","result","write","reset","end","withArgs","lateDataSpy","secondEndSpy","dest","src","pipe","map","d","src1","src2","zip","src3","from","sleep","val","j","v","asAsyncGenerator","loop","iterationCounts","all","forEach","transform","gen","i"],"mappings":"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","file":"stream.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 Stream from 'src/client/reactive/stream.js';\n\ndescribe(\"Streams\", function() {\n  \n  function dataSpyFor(stream) {\n    const dataSpy = sinon.spy();\n    stream.on('data', dataSpy);\n    return dataSpy;\n  }\n  \n  function endSpyFor(stream) {\n    const endSpy = sinon.spy();\n    stream.on('end', endSpy);\n    return endSpy;\n  }\n  \n  it(\"is defined\", () => {\n    expect(Stream).to.be.ok;\n  });\n  describe(\"simple streaming\", function() {\n    it(\"`.on` in chainable\", () => {\n      const s = new Stream();\n\n      const result = s.on('data', () => {});\n      expect(result).to.equal(s);\n    });\n\n    it(\"streams data (setup listeners beforehand)\", () => {\n      const s = new Stream();\n      const dataSpy = dataSpyFor(s);\n      const endSpy = endSpyFor(s);\n      \n      expect(dataSpy).not.to.be.called;\n      expect(endSpy).not.to.be.called;\n\n      s.write(1);\n      expect(dataSpy).to.be.calledOnce;\n      expect(dataSpy).to.be.calledWith(1);\n      dataSpy.reset();\n      expect(endSpy).not.to.be.called;\n      \n      s.write(2);\n      expect(dataSpy).to.be.calledOnce;\n      expect(dataSpy).to.be.calledWith(2);\n      dataSpy.reset();\n      expect(endSpy).not.to.be.called;\n      \n      s.end();\n      expect(dataSpy).not.to.be.called;\n      expect(endSpy).to.be.calledOnce;\n    });\n\n    it(\"streams data (setup listeners afterwards)\", () => {\n      const s = new Stream();\n      s.write(1);\n      s.write(2);\n      s.end();\n      \n      const dataSpy = dataSpyFor(s);\n      const endSpy = endSpyFor(s);\n      \n      expect(dataSpy).to.be.calledTwice;\n      expect(dataSpy.withArgs(1)).to.be.calledBefore(dataSpy.withArgs(2));\n      expect(dataSpy.withArgs(2)).to.be.calledBefore(endSpy);\n      expect(endSpy).to.be.calledOnce;\n    });\n    \n    it(\"ended streams still emit previously stored data\", () => {\n      const s = new Stream();\n      s.write(1);\n      s.end();\n\n      const dataSpy = dataSpyFor(s);\n      \n      expect(dataSpy).to.be.calledOnce;\n      expect(dataSpy).to.be.calledWith(1);\n      dataSpy.reset();\n      \n      s.write(2);\n      expect(dataSpy).not.to.be.called;\n    });\n    \n    it(\"ended streams do not emit further data\", () => {\n      const s = new Stream();\n      s.end();\n\n      const dataSpy = dataSpyFor(s);\n      const endSpy = endSpyFor(s);\n      \n      expect(dataSpy).not.to.be.called;\n      expect(endSpy).to.be.calledOnce;\n\n      s.write(1);\n      expect(dataSpy).not.to.be.called;\n      \n      const lateDataSpy = dataSpyFor(s);\n      expect(lateDataSpy).not.to.be.called;\n    });\n    \n    it(\"streams end only once\", () => {\n      const s = new Stream();\n      s.end();\n\n      const endSpy = endSpyFor(s);\n      \n      expect(endSpy).to.be.calledOnce;\n      endSpy.reset();\n\n      s.end();\n      expect(endSpy).not.to.be.called;\n      \n      const secondEndSpy = endSpyFor(s);\n      expect(secondEndSpy).to.be.calledOnce;\n    });\n  });\n  \n  describe(\"pipe\", function() {\n    it(\"returns the destination stream (chaining)\", () => {\n      const dest = new Stream();\n      const result = new Stream().pipe(dest);\n\n      expect(result).to.equal(dest);\n    });\n    \n    it(\"write data already present to the destination stream\", () => {\n      const src = new Stream();\n      const dest = new Stream();\n\n      const dataSpy = dataSpyFor(dest);\n      const endSpy = endSpyFor(dest);\n\n      src.write(1);\n      src.end();\n\n      src.pipe(dest);\n      \n      expect(dataSpy).to.be.calledOnce;\n      expect(dataSpy).to.be.calledWith(1);\n      expect(endSpy).to.be.calledOnce;\n      expect(dataSpy).to.be.calledBefore(endSpy);\n    });\n    \n    it(\"pipes data to the destination stream\", () => {\n      const src = new Stream();\n      const dest = new Stream();\n      src.pipe(dest);\n\n      const dataSpy = dataSpyFor(dest);\n      const endSpy = endSpyFor(dest);\n\n      expect(dataSpy).not.to.be.called;\n      expect(endSpy).not.to.be.called;\n\n      src.write(1);\n      \n      expect(dataSpy).to.be.calledOnce;\n      expect(dataSpy).to.be.calledWith(1);\n      dataSpy.reset();\n      expect(endSpy).not.to.be.called;\n      \n      src.end();\n      \n      expect(dataSpy).not.to.be.called;\n      expect(endSpy).to.be.calledOnce;\n    });\n  });\n  \n  describe(\"transformations\", function() {\n    it(\"map\", () => {\n      const src = new Stream();\n\n      src.write(1);\n\n      const dest = src.map(d => d + \"test\");\n\n      const dataSpy = dataSpyFor(dest);\n      const endSpy = endSpyFor(dest);\n      expect(dataSpy).to.be.calledOnce;\n      expect(dataSpy).to.be.calledWith('1test');\n      dataSpy.reset();\n      expect(endSpy).not.to.be.called;\n      \n      src.write(2);\n      expect(dataSpy).to.be.calledOnce;\n      expect(dataSpy).to.be.calledWith('2test');\n      dataSpy.reset();\n      expect(endSpy).not.to.be.called;\n\n      src.end();\n      expect(dataSpy).not.to.be.called;\n      expect(endSpy).to.be.calledOnce;\n      endSpy.reset();\n\n      src.write(3);\n      expect(dataSpy).not.to.be.called;\n      expect(endSpy).not.to.be.called;\n    });\n\n    describe(\"zip\", function() {\n    \n      it(\"zip two streams\", () => {\n        const src1 = new Stream();\n        const src2 = new Stream();\n\n        const dest = src1.zip(src2);\n\n        const dataSpy = dataSpyFor(dest);\n        const endSpy = endSpyFor(dest);\n\n        expect(dataSpy).not.to.be.called;\n        expect(endSpy).not.to.be.called;\n\n        src1.write(1);\n        expect(dataSpy).not.to.be.called;\n        expect(endSpy).not.to.be.called;\n\n        src1.write(2);\n        expect(dataSpy).not.to.be.called;\n        expect(endSpy).not.to.be.called;\n\n        src2.write('a');\n        expect(dataSpy).to.be.calledOnce;\n        expect(dataSpy).to.be.calledWith([1,'a']);\n        dataSpy.reset();\n        expect(endSpy).not.to.be.called;\n\n        src1.write(3);\n        expect(dataSpy).not.to.be.called;\n        expect(endSpy).not.to.be.called;\n\n        src2.write('b');\n        expect(dataSpy).to.be.calledOnce;\n        expect(dataSpy).to.be.calledWith([2,'b']);\n        dataSpy.reset();\n      });\n      \n      it(\"immediately pushes data already on input streams\", () => {\n        const src1 = new Stream();\n        src1.write(1);\n        src1.write(2);\n        src1.write(3);\n        \n        const src2 = new Stream();\n        src2.write('a');\n        src2.write('b');\n\n        const dest = src1.zip(src2);\n        const dataSpy = dataSpyFor(dest);\n        const endSpy = endSpyFor(dest);\n\n        expect(dataSpy).to.be.calledTwice;\n        expect(dataSpy.withArgs([1,'a'])).to.be.calledBefore(dataSpy.withArgs([2,'b']));\n        expect(endSpy).not.to.be.called;\n      });\n      \n      it(\"end a zipped stream early\", () => {\n        const src1 = new Stream();\n        const src2 = new Stream();\n\n        const dest = src1.zip(src2);\n        const dataSpy = dataSpyFor(dest);\n        const endSpy = endSpyFor(dest);\n\n        src1.write(1);\n        src1.end();\n\n        expect(dataSpy).not.to.be.called;\n        expect(endSpy).not.to.be.called;\n\n        src2.write('a');\n        \n        expect(dataSpy).to.be.calledOnce;\n        expect(dataSpy).to.be.calledWith([1, 'a']);\n        expect(endSpy).to.be.calledOnce;\n      });\n      \n      \n      it(\"handles more than two streams\", () => {\n        const src1 = new Stream();\n        const src2 = new Stream();\n        const src3 = new Stream();\n\n        const dest = src1.zip(src2, src3);\n        const dataSpy = dataSpyFor(dest);\n        const endSpy = endSpyFor(dest);\n\n        src1.write(1);\n        src1.write(2);\n        src2.write('a');\n\n        expect(dataSpy).not.to.be.called;\n        expect(endSpy).not.to.be.called;\n\n        src3.write('hello');\n\n        expect(dataSpy).to.be.calledOnce;\n        expect(dataSpy).to.be.calledWith([1, 'a', 'hello']);\n        dataSpy.reset();\n        expect(endSpy).not.to.be.called;\n        \n        src3.write('world');\n        \n        expect(dataSpy).not.to.be.called;\n        expect(endSpy).not.to.be.called;\n\n        src2.write('b');\n\n        expect(dataSpy).to.be.calledOnce;\n        expect(dataSpy).to.be.calledWith([2, 'b', 'world']);\n        dataSpy.reset();\n        expect(endSpy).not.to.be.called;\n        \n        src2.end();\n\n        expect(dataSpy).not.to.be.called;\n        expect(endSpy).to.be.calledOnce;\n      });\n    });\n  });\n  describe(\"generator interaction\", function() {\n\n    it(\"Stream.from(<GeneratorFunction>)\", async () => {\n      const s = Stream.from(function*() {\n        yield 1;\n        yield 2;\n        yield 3;\n      });\n\n      const dataSpy = dataSpyFor(s);\n      const endSpy = endSpyFor(s);\n\n      expect(dataSpy).to.be.calledThrice;\n      expect(dataSpy.withArgs(1)).to.be.calledBefore(dataSpy.withArgs(2));\n      expect(dataSpy.withArgs(2)).to.be.calledBefore(dataSpy.withArgs(3));\n      expect(endSpy).to.be.calledOnce;\n    });\n\n    it(\"Stream.from(<AsyncGeneratorFunction>)\", async () => {\n      const s = Stream.from(async function*() {\n        yield 1;\n        await lively.sleep(500)\n        yield 2;\n        await lively.sleep(500)\n        yield 3;\n      });\n\n      const dataSpy = dataSpyFor(s);\n      const endSpy = endSpyFor(s);\n\n      expect(dataSpy).not.to.be.called;\n      expect(endSpy).not.to.be.called;\n\n      await lively.sleep(250)\n      expect(dataSpy).to.be.calledOnce;\n      expect(dataSpy).to.be.calledWith(1);\n      expect(endSpy).not.to.be.called;\n      dataSpy.reset();\n\n      await lively.sleep(500)\n      expect(dataSpy).to.be.calledOnce;\n      expect(dataSpy).to.be.calledWith(2);\n      expect(endSpy).not.to.be.called;\n      dataSpy.reset();\n\n      await lively.sleep(500)\n      expect(dataSpy).to.be.calledOnce;\n      expect(dataSpy).to.be.calledWith(3);\n      expect(endSpy).to.be.calledOnce;\n    });\n\n    it(\".asAsyncGenerator\", async () => {\n      let val = 0;\n\n      const stream = new Stream();\n\n      // already existing increments\n      stream.write(val++);\n      stream.write(val++);\n\n      (async () => {\n        stream.write(val++);\n\n        await lively.sleep(10);\n        stream.write(val++);\n\n        await lively.sleep(10);\n        stream.write(val++);\n\n        await lively.sleep(10);\n        stream.write(val++);\n\n        await lively.sleep(10);\n        stream.write(val++);\n        stream.end();\n        // executed before #final_check, because the `end` is for await loop continues executed as a new async micro task (this is why we need the `- 1` in #final_check)\n        stream.write(val++);\n\n        // test is already over\n        await lively.sleep(10);\n        stream.write(val++);\n      })();\n\n      let j = 0;\n      for await (let v of stream.asAsyncGenerator()) {\n        expect(v).to.equal(j++);\n      }\n      // #final_check\n      expect(j).to.equal(val - 1);\n    });\n\n    it(\".asAsyncGenerator can deal with multiple changes in a synchronous execution\", async () => {\n      let val = 0;\n\n      const stream = new Stream();\n\n      (async () => {\n        await lively.sleep(10);\n        stream.write(val++);\n        stream.write(val++);\n        stream.write(val++);\n        stream.end();\n        stream.write(val++);\n      })();\n\n      let j = 0;\n      for await (let v of stream.asAsyncGenerator()) {\n        expect(v).to.equal(j++);\n      }\n      expect(j).to.equal(3);\n    });\n\n    it(\"multiple .asAsyncGenerator can co-exist\", async () => {\n      let val = 0;\n\n      const stream = new Stream();\n\n      (async () => {\n        await lively.sleep(10);\n        stream.write(val++);\n        stream.write(val++);\n        stream.write(val++);\n        stream.end();\n        stream.write(val++);\n      })();\n\n      async function loop() {\n        let j = 0;\n        for await (let v of stream.asAsyncGenerator()) {\n          expect(v).to.equal(j++);\n        }\n        return j;\n      }\n      \n      const iterationCounts = await Promise.all((2).times(loop));\n      iterationCounts.forEach(j => {\n        expect(j).to.equal(3);\n      });\n    });\n\n    it(\"Stream::transform(<AsyncGeneratorFunction>)\", async () => {\n      const src = new Stream();\n      const dest = src.transform(async function*(gen) {\n        for await (let i of gen) {\n          yield i\n          yield i+1\n          await lively.sleep(200)\n          yield i+2\n          await lively.sleep(500)\n          yield i+3\n        }\n      });\n\n      (async () => {\n        src.write(1);\n        await lively.sleep(500)\n        src.write(5);\n        await lively.sleep(500)\n        src.end();\n      })();\n\n      const dataSpy = dataSpyFor(dest);\n      const endSpy = endSpyFor(dest);\n\n      expect(dataSpy).not.to.be.called;\n      expect(endSpy).not.to.be.called;\n\n      // wait a bit\n      await lively.sleep(100)\n      expect(dataSpy).to.be.calledTwice;\n      expect(dataSpy.withArgs(1)).to.be.calledBefore(dataSpy.withArgs(2));\n      expect(endSpy).not.to.be.called;\n      dataSpy.reset();\n\n      await lively.sleep(200)\n      expect(dataSpy).to.be.calledOnce;\n      expect(dataSpy).to.be.calledWith(3);\n      expect(endSpy).not.to.be.called;\n      dataSpy.reset();\n      \n      await lively.sleep(500)\n      expect(dataSpy).to.be.calledThrice;\n      expect(dataSpy.withArgs(4)).to.be.calledBefore(dataSpy.withArgs(5));\n      expect(dataSpy.withArgs(5)).to.be.calledBefore(dataSpy.withArgs(6));\n      expect(endSpy).not.to.be.called;\n      dataSpy.reset();\n\n      await lively.sleep(200)\n      expect(dataSpy).to.be.calledOnce;\n      expect(dataSpy).to.be.calledWith(7);\n      expect(endSpy).not.to.be.called;\n      dataSpy.reset();\n      \n      await lively.sleep(500)\n      expect(dataSpy).to.be.calledOnce;\n      expect(dataSpy).to.be.calledWith(8);\n      expect(endSpy).to.be.calledOnce;\n    });\n  });\n});\n"]}