rafa
Version:
Rafa.js is a Javascript framework for building concurrent applications.
64 lines (55 loc) • 1.7 kB
JavaScript
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');
});
});
};