UNPKG

rafa

Version:

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

71 lines (67 loc) 2.58 kB
module.exports = (assert, Rafa) => { suite("group", () => { test("structure", () => { var stream = Rafa.stream(); var parts = stream.group(); assert.isNotNull(parts._); assert.isNotNull(parts._.destroy); }); test("categories", () => { var stream = Rafa.stream(); var parts = stream.group('a', 'b'); var values = { 'a': [], 'b': [], '_': [] }; parts.a.each(v => values.a.push(v)); parts.b.each(v => values.b.push(v)); parts._.each(v => values._.push(v)); stream.push(Rafa.context(), Rafa.message('a')); stream.push(Rafa.context(), Rafa.message('b')); stream.push(Rafa.context(), Rafa.message('c')); stream.push(Rafa.context(), Rafa.message('a')); stream.push(Rafa.context(), Rafa.message('b')); stream.push(Rafa.context(), Rafa.message('d')); assert.equal(values.a.length, 2); assert.equal(values.b.length, 2); assert.equal(values._.length, 2); assert.equal(values.a[0], 'a'); assert.equal(values.a[1], 'a'); assert.equal(values.b[0], 'b'); assert.equal(values.b[1], 'b'); assert.equal(values._[0], 'c'); assert.equal(values._[1], 'd'); }); test("starts with", () => { var stream = Rafa.stream(); var values = { 'a': [], 'b': [], '_': [] }; var parts = stream.group('a', 'b', v => v[0]); parts.a.each(v => values.a.push(v)); parts.b.each(v => values.b.push(v)); parts._.each(v => values._.push(v)); stream.push(Rafa.context(), Rafa.message('amazing')); stream.push(Rafa.context(), Rafa.message('balloon')); stream.push(Rafa.context(), Rafa.message('time')); stream.push(Rafa.context(), Rafa.message('awesome')); stream.push(Rafa.context(), Rafa.message('battle')); stream.push(Rafa.context(), Rafa.message('drunk')); assert.equal(values.a.length, 2); assert.equal(values.b.length, 2); assert.equal(values._.length, 2); assert.equal(values.a[0], 'amazing'); assert.equal(values.a[1], 'awesome'); assert.equal(values.b[0], 'balloon'); assert.equal(values.b[1], 'battle'); assert.equal(values._[0], 'time'); assert.equal(values._[1], 'drunk'); }); test("detach", () => { var stream = Rafa.stream(); var parts = stream.group(); var _ = parts._; var called = 0; parts._.each(v => called++); parts._.detach(); stream.push(Rafa.context(), Rafa.message(1)); assert.isNull(parts._); assert.equal(called, 0); }); }); };