UNPKG

rafa

Version:

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

64 lines (55 loc) 1.7 kB
module.exports = (assert, Rafa) => { suite("propagate", () => { test("reset", () => { var a = Rafa.property(1); var b = Rafa.property(() => a + 1); var c = Rafa.property(() => a + b); b.mark = 1; c.mark = 1; Rafa.Property.prototype.util.reset(a.properties); assert.equal(b.mark, 0); assert.equal(c.mark, 0); }); test("visit", () => { var a = Rafa.property(1); var b = Rafa.property(() => a + 1); var c = Rafa.property(() => a + b); var ordered = []; Rafa.Property.prototype.util.reset(a.properties); Rafa.Property.prototype.util.visit(ordered, a); assert.equal(ordered.length, 3); assert.equal(ordered[0], a); assert.equal(ordered[1], b); assert.equal(ordered[2], c); }); test("set value", () => { var a = Rafa.property(1); var b = Rafa.property(() => a + 1); var c = Rafa.property(() => a + b); a.set(2); assert.equal(a.get(), 2); assert.equal(b.get(), 3); assert.equal(c.get(), 5); }); test("single property", () => { var a = Rafa.property(1); var values = []; a.each(v => values.push(v)); a.set(2); assert.equal(values[0], 2); }); test("push to stream", () => { var a = Rafa.property(1); var b = Rafa.property(() => a + 1); var c = Rafa.property(() => a + b); var values = []; a.each(v => values.push('a' + v)); b.each(v => values.push('b' + v)); c.each(v => values.push('c' + v)); a.set(1); assert.equal(values[0], 'a1'); assert.equal(values[1], 'b2'); assert.equal(values[2], 'c3'); }); }); };