blob: 3594ebe46695fbc424972e312ad8cdd103015bbd [file] [log] [blame]
describe('Test Mailbox functions.',
function() {
function testMailbox() {
var value1 = "aaa";
var value2 = "bbb";
var value3 = "ddd";
// Test that subscribing to a new mailbox sets the value to null.
sk.Mailbox.subscribe("foo", function(value) {
value1 = value;
});
assert.isNull(value1);
assert.equal(value2, "bbb");
// Test sending a string value by mailbox.
sk.Mailbox.send("foo", "ccc");
assert.equal(value1, "ccc");
assert.equal(value2, "bbb");
// Test that sending before any subscribers works.
sk.Mailbox.send("bar", {a: 1});
sk.Mailbox.subscribe("bar", function(value) {
value2 = value;
});
assert.equal(value1, "ccc");
assert.deepEqual(value2, {a: 1});
// Test multiple subscribers to a single mailbox.
sk.Mailbox.subscribe("bar", function(value) {
value3 = value;
});
assert.equal(value1, "ccc");
assert.deepEqual(value2, {a: 1});
assert.deepEqual(value3, {a: 1});
// Test sending to multiple subscribers of a single mailbox.
sk.Mailbox.send("bar", {b: 2});
assert.equal(value1, "ccc");
assert.deepEqual(value2, {b: 2});
assert.deepEqual(value3, {b: 2});
// Test unsubscribe, by unsubscribing within the callback.
var f = function(value) {
sk.Mailbox.unsubscribe("bar", f);
}
assert.equal(2, sk.Mailbox.boxes["bar"].callbacks.length);
sk.Mailbox.subscribe("bar", f);
assert.equal(2, sk.Mailbox.boxes["bar"].callbacks.length);
}
it('should be able to subscribe to mailboxes', function() {
testMailbox();
});
}
);