UNPKG

rafa

Version:

Rafa.js is a Javascript framework for building concurrent applications.

65 lines (60 loc) 2.07 kB
module.exports = (assert, Rafa) => { suite("merge", () => { test("structure", () => { var stream1 = Rafa.stream(); var stream2 = Rafa.stream(); var stream3 = Rafa.stream(); var merged = stream1.merge(stream2, stream3); assert.isNotNull(stream1.child); assert.isNotNull(stream2.child); assert.isNotNull(stream3.child); assert.isNull(merged.parent); assert.equal(stream1.child.handler, stream2.child.handler); assert.equal(stream1.child.handler, stream3.child.handler); }); test("values", () => { var stream1 = Rafa.stream(); var stream2 = Rafa.stream(); var merged = stream1.merge(stream2); var values = []; merged.each(v => values.push(v)); stream1.enumerate(Rafa.Enumerator.array([1])); stream2.enumerate(Rafa.Enumerator.array([2])); assert.equal(values.length, 2); assert.equal(values[0], 1); assert.equal(values[1], 2); }); test("errors", () => { var stream1 = Rafa.stream(); var stream2 = Rafa.stream(); var merged = stream1.merge(stream2); var values = []; merged.error(v => values.push(v)); stream1.push(Rafa.context(), Rafa.errorMessage(1)); stream2.push(Rafa.context(), Rafa.errorMessage(2)); assert.equal(values.length, 2); assert.equal(values[0], 1); assert.equal(values[1], 2); }); test("done", () => { var stream1 = Rafa.stream(); var stream2 = Rafa.stream(); var merged = stream1.merge(stream2); var dones = 0; merged.done(v => dones++); stream1.push(Rafa.context(), Rafa.doneMessage()); stream2.push(Rafa.context(), Rafa.doneMessage()); assert.equal(dones, 1); }); test("detach", () => { var stream1 = Rafa.stream(); var stream2 = Rafa.stream(); var merged = stream1.merge(stream2); var proxy1 = stream1.child; var proxy2 = stream2.child; merged.detach(); assert.isNull(stream1.child); assert.isNull(stream2.child); }); }); };