UNPKG

rafa

Version:

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

84 lines (72 loc) 2.37 kB
require("../../core.js")((assert, Rafa) => { suite("Context", () => { test("empty constructor", () => { const context = Rafa.context(); assert.equal(context.pending, 0); assert.equal(context.done, Rafa.noop); }); test("constructor with done", () => { const done = () => 1 const context = Rafa.context(done); assert.equal(context.pending, 0); assert.equal(context.done, done); }); test("waitfor success", (done) => { const stream = Rafa.stream(); const values = []; stream.each(v => values.push(v)); stream.error(v => values.push(v+100)); const context = Rafa.context(); const future = Rafa.future(); context.waitfor(stream, Rafa.message(future.promise)); assert.equal(context.pending, 1); future.resolve(1); setTimeout(() => { assert.equal(values.length, 1); assert.equal(values[0], 1); assert.equal(context.pending, 0); done(); }); }); test("waitfor error", (done) => { const stream = Rafa.stream(); const values = []; const finish = () => values.push(2); stream.each(v => values.push(v+100)); stream.error(v => values.push(v)); const context = Rafa.context(); const future = Rafa.future(); context.waitfor(stream, Rafa.message(future.promise)); assert.equal(context.pending, 1); future.reject(1); setTimeout(() => { assert.equal(values.length, 1); assert.equal(values[0], 1); assert.equal(context.pending, 0); done(); }); }); test("waitfor nested promise", (done) => { const stream = Rafa.stream(); const values = []; stream.each(v => values.push(v)); stream.error(v => values.push(v+100)); const context = Rafa.context(); const future = Rafa.future(); context.waitfor(stream, Rafa.message(future.promise)); assert.equal(context.pending, 1); const future2 = Rafa.future(); future.resolve(future2.promise); setTimeout(() => { assert.equal(context.pending, 1); future2.resolve(1); setTimeout(() => { assert.equal(values.length, 1); assert.equal(values[0], 1); assert.equal(context.pending, 0); done(); }); }); }); }); });