aboutsummaryrefslogtreecommitdiff
path: root/contexts/data/lib/closure-library/closure/goog/pubsub/pubsub_test.html
diff options
context:
space:
mode:
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/pubsub/pubsub_test.html')
-rw-r--r--contexts/data/lib/closure-library/closure/goog/pubsub/pubsub_test.html635
1 files changed, 0 insertions, 635 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/pubsub/pubsub_test.html b/contexts/data/lib/closure-library/closure/goog/pubsub/pubsub_test.html
deleted file mode 100644
index d2bd52b..0000000
--- a/contexts/data/lib/closure-library/closure/goog/pubsub/pubsub_test.html
+++ /dev/null
@@ -1,635 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-Copyright 2007 The Closure Library Authors. All Rights Reserved.
-
-Use of this source code is governed by the Apache License, Version 2.0.
-See the COPYING file for details.
--->
-<!--
--->
-<head>
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
- <title>Closure Unit Tests - goog.pubsub.PubSub</title>
- <script src="../base.js"></script>
- <script>
- goog.require('goog.array');
- goog.require('goog.pubsub.PubSub');
- goog.require('goog.testing.jsunit');
- </script>
-</head>
-<body>
- <script>
- var pubsub;
-
- function setUp() {
- pubsub = new goog.pubsub.PubSub();
- }
-
- function tearDown() {
- pubsub.dispose();
- }
-
- function testConstructor() {
- assertNotNull('PubSub instance must not be null', pubsub);
- assertTrue('PubSub instance must have the expected type',
- pubsub instanceof goog.pubsub.PubSub);
- }
-
- function testDispose() {
- assertFalse('PubSub instance must not have been disposed of',
- pubsub.isDisposed());
- pubsub.dispose();
- assertTrue('PubSub instance must have been disposed of',
- pubsub.isDisposed());
- }
-
- function testSubscribeUnsubscribe() {
- function foo1() {
- }
- function bar1() {
- }
- function foo2() {
- }
- function bar2() {
- }
-
- assertEquals('Topic "foo" must not have any subscribers', 0,
- pubsub.getCount('foo'));
- assertEquals('Topic "bar" must not have any subscribers', 0,
- pubsub.getCount('bar'));
-
- pubsub.subscribe("foo", foo1);
- assertEquals('Topic "foo" must have 1 subscriber', 1,
- pubsub.getCount('foo'));
- assertEquals('Topic "bar" must not have any subscribers', 0,
- pubsub.getCount('bar'));
-
- pubsub.subscribe("bar", bar1);
- assertEquals('Topic "foo" must have 1 subscriber', 1,
- pubsub.getCount('foo'));
- assertEquals('Topic "bar" must have 1 subscriber', 1,
- pubsub.getCount('bar'));
-
- pubsub.subscribe("foo", foo2);
- assertEquals('Topic "foo" must have 2 subscribers', 2,
- pubsub.getCount('foo'));
- assertEquals('Topic "bar" must have 1 subscriber', 1,
- pubsub.getCount('bar'));
-
- pubsub.subscribe("bar", bar2);
- assertEquals('Topic "foo" must have 2 subscribers', 2,
- pubsub.getCount('foo'));
- assertEquals('Topic "bar" must have 2 subscribers', 2,
- pubsub.getCount('bar'));
-
- assertTrue(pubsub.unsubscribe("foo", foo1));
- assertEquals('Topic "foo" must have 1 subscriber', 1,
- pubsub.getCount('foo'));
- assertEquals('Topic "bar" must have 2 subscribers', 2,
- pubsub.getCount('bar'));
-
- assertTrue(pubsub.unsubscribe("foo", foo2));
- assertEquals('Topic "foo" must have no subscribers', 0,
- pubsub.getCount('foo'));
- assertEquals('Topic "bar" must have 2 subscribers', 2,
- pubsub.getCount('bar'));
-
- assertTrue(pubsub.unsubscribe("bar", bar1));
- assertEquals('Topic "foo" must have no subscribers', 0,
- pubsub.getCount('foo'));
- assertEquals('Topic "bar" must have 1 subscriber', 1,
- pubsub.getCount('bar'));
-
- assertTrue(pubsub.unsubscribe("bar", bar2));
- assertEquals('Topic "foo" must have no subscribers', 0,
- pubsub.getCount('foo'));
- assertEquals('Topic "bar" must have no subscribers', 0,
- pubsub.getCount('bar'));
-
- assertFalse('Unsubscribing a nonexistent topic must return false',
- pubsub.unsubscribe("baz", foo1));
-
- assertFalse('Unsubscribing a nonexistent function must return false',
- pubsub.unsubscribe("foo", function() {}));
- }
-
- function testSubscribeUnsubscribeWithContext() {
- function foo() {
- }
- function bar() {
- }
-
- var contextA = {};
- var contextB = {};
-
- assertEquals('Topic "X" must not have any subscribers', 0,
- pubsub.getCount('X'));
-
- pubsub.subscribe('X', foo, contextA);
- assertEquals('Topic "X" must have 1 subscriber', 1,
- pubsub.getCount('X'));
-
- pubsub.subscribe('X', bar);
- assertEquals('Topic "X" must have 2 subscribers', 2,
- pubsub.getCount('X'));
-
- pubsub.subscribe('X', bar, contextB);
- assertEquals('Topic "X" must have 3 subscribers', 3,
- pubsub.getCount('X'));
-
- assertFalse('Unknown function/context combination return false',
- pubsub.unsubscribe('X', foo, contextB));
-
- assertTrue(pubsub.unsubscribe('X', foo, contextA));
- assertEquals('Topic "X" must have 2 subscribers', 2,
- pubsub.getCount('X'));
-
- assertTrue(pubsub.unsubscribe('X', bar));
- assertEquals('Topic "X" must have 1 subscriber', 1,
- pubsub.getCount('X'));
-
- assertTrue(pubsub.unsubscribe('X', bar, contextB));
- assertEquals('Topic "X" must have no subscribers', 0,
- pubsub.getCount('X'));
- }
-
- function testSubscribeOnce() {
- var called, context;
-
- called = false;
- pubsub.subscribeOnce('someTopic', function() {
- called = true;
- });
- assertEquals('Topic must have one subscriber', 1,
- pubsub.getCount('someTopic'));
- assertFalse('Subscriber must not have been called yet', called);
-
- pubsub.publish('someTopic');
- assertEquals('Topic must have no subscribers', 0,
- pubsub.getCount('someTopic'));
- assertTrue('Subscriber must have been called', called);
-
- context = {called: false};
- pubsub.subscribeOnce('someTopic', function() {
- this.called = true;
- }, context);
- assertEquals('Topic must have one subscriber', 1,
- pubsub.getCount('someTopic'));
- assertFalse('Subscriber must not have been called yet', context.called);
-
- pubsub.publish('someTopic');
- assertEquals('Topic must have no subscribers', 0,
- pubsub.getCount('someTopic'));
- assertTrue('Subscriber must have been called', context.called);
-
- context = {called: false, value: 0};
- pubsub.subscribeOnce('someTopic', function(value) {
- this.called = true;
- this.value = value;
- }, context);
- assertEquals('Topic must have one subscriber', 1,
- pubsub.getCount('someTopic'));
- assertFalse('Subscriber must not have been called yet', context.called);
- assertEquals('Value must have expected value', 0, context.value);
-
- pubsub.publish('someTopic', 17);
- assertEquals('Topic must have no subscribers', 0,
- pubsub.getCount('someTopic'));
- assertTrue('Subscriber must have been called', context.called);
- assertEquals('Value must have been updated', 17, context.value);
- }
-
- function testSubscribeOnce_boundFn() {
- var context = {called: false, value: 0};
-
- function subscriber(value) {
- this.called = true;
- this.value = value;
- }
-
- pubsub.subscribeOnce('someTopic', goog.bind(subscriber, context));
- assertEquals('Topic must have one subscriber', 1,
- pubsub.getCount('someTopic'));
- assertFalse('Subscriber must not have been called yet', context.called);
- assertEquals('Value must have expected value', 0, context.value);
-
- pubsub.publish('someTopic', 17);
- assertEquals('Topic must have no subscribers', 0,
- pubsub.getCount('someTopic'));
- assertTrue('Subscriber must have been called', context.called);
- assertEquals('Value must have been updated', 17, context.value);
- }
-
- function testSubscribeOnce_partialFn() {
- var called = false;
- var value = 0;
-
- function subscriber(hasBeenCalled, newValue) {
- called = hasBeenCalled;
- value = newValue;
- }
-
- pubsub.subscribeOnce('someTopic', goog.partial(subscriber, true));
- assertEquals('Topic must have one subscriber', 1,
- pubsub.getCount('someTopic'));
- assertFalse('Subscriber must not have been called yet', called);
- assertEquals('Value must have expected value', 0, value);
-
- pubsub.publish('someTopic', 17);
- assertEquals('Topic must have no subscribers', 0,
- pubsub.getCount('someTopic'));
- assertTrue('Subscriber must have been called', called);
- assertEquals('Value must have been updated', 17, value);
- }
-
- function testSelfResubscribe() {
- var value = null;
-
- function resubscribe(iteration, newValue) {
- pubsub.subscribeOnce('someTopic',
- goog.partial(resubscribe, iteration + 1));
- value = newValue + ':' + iteration;
- }
-
- pubsub.subscribeOnce('someTopic', goog.partial(resubscribe, 0));
- assertEquals('Topic must have 1 subscriber', 1,
- pubsub.getCount('someTopic'));
- assertNull('Value must be null', value);
-
- pubsub.publish('someTopic', 'foo');
- assertEquals('Topic must have 1 subscriber', 1,
- pubsub.getCount('someTopic'));
- assertEquals('Pubsub must not have any pending unsubscribe keys', 0,
- pubsub.pendingKeys_.length);
- assertEquals('Value be as expected', 'foo:0', value);
-
- pubsub.publish('someTopic', 'bar');
- assertEquals('Topic must have 1 subscriber', 1,
- pubsub.getCount('someTopic'));
- assertEquals('Pubsub must not have any pending unsubscribe keys', 0,
- pubsub.pendingKeys_.length);
- assertEquals('Value be as expected', 'bar:1', value);
-
- pubsub.publish('someTopic', 'baz');
- assertEquals('Topic must have 1 subscriber', 1,
- pubsub.getCount('someTopic'));
- assertEquals('Pubsub must not have any pending unsubscribe keys', 0,
- pubsub.pendingKeys_.length);
- assertEquals('Value be as expected', 'baz:2', value);
- }
-
- function testUnsubscribeByKey() {
- var key1, key2, key3;
-
- key1 = pubsub.subscribe('X', function() {});
- key2 = pubsub.subscribe('Y', function() {});
-
- assertEquals('Topic "X" must have 1 subscriber', 1,
- pubsub.getCount('X'));
- assertEquals('Topic "Y" must have 1 subscriber', 1,
- pubsub.getCount('Y'));
- assertNotEquals('Subscription keys must be distinct', key1, key2);
-
- pubsub.unsubscribeByKey(key1);
- assertEquals('Topic "X" must have no subscribers', 0,
- pubsub.getCount('X'));
- assertEquals('Topic "Y" must have 1 subscriber', 1,
- pubsub.getCount('Y'));
-
- key3 = pubsub.subscribe('X', function() {});
- assertEquals('Topic "X" must have 1 subscriber', 1,
- pubsub.getCount('X'));
- assertEquals('Topic "Y" must have 1 subscriber', 1,
- pubsub.getCount('Y'));
- assertNotEquals('Subscription keys must be distinct', key1, key3);
- assertNotEquals('Subscription keys must be distinct', key2, key3);
-
- pubsub.unsubscribeByKey(key1); // Obsolete key; should be no-op.
- assertEquals('Topic "X" must have 1 subscriber', 1,
- pubsub.getCount('X'));
- assertEquals('Topic "Y" must have 1 subscriber', 1,
- pubsub.getCount('Y'));
-
- pubsub.unsubscribeByKey(key2);
- assertEquals('Topic "X" must have 1 subscriber', 1,
- pubsub.getCount('X'));
- assertEquals('Topic "Y" must have no subscribers', 0,
- pubsub.getCount('Y'));
-
- pubsub.unsubscribeByKey(key3);
- assertEquals('Topic "X" must have no subscribers', 0,
- pubsub.getCount('X'));
- assertEquals('Topic "Y" must have no subscribers', 0,
- pubsub.getCount('Y'));
- }
-
- function testSubscribeUnsubscribeMultiple() {
- function foo() {
- }
- function bar() {
- }
-
- var context = {};
-
- assertEquals('Pubsub channel must not have any subscribers', 0,
- pubsub.getCount());
-
- assertEquals('Topic "X" must not have any subscribers', 0,
- pubsub.getCount('X'));
- assertEquals('Topic "Y" must not have any subscribers', 0,
- pubsub.getCount('Y'));
- assertEquals('Topic "Z" must not have any subscribers', 0,
- pubsub.getCount('Z'));
-
- goog.array.forEach(['X', 'Y', 'Z'], function(topic) {
- pubsub.subscribe(topic, foo);
- });
- assertEquals('Topic "X" must have 1 subscriber', 1,
- pubsub.getCount('X'));
- assertEquals('Topic "Y" must have 1 subscriber', 1,
- pubsub.getCount('Y'));
- assertEquals('Topic "Z" must have 1 subscriber', 1,
- pubsub.getCount('Z'));
-
- goog.array.forEach(['X', 'Y', 'Z'], function(topic) {
- pubsub.subscribe(topic, bar, context);
- });
- assertEquals('Topic "X" must have 2 subscribers', 2,
- pubsub.getCount('X'));
- assertEquals('Topic "Y" must have 2 subscribers', 2,
- pubsub.getCount('Y'));
- assertEquals('Topic "Z" must have 2 subscribers', 2,
- pubsub.getCount('Z'));
-
- assertEquals('Pubsub channel must have a total of 6 subscribers', 6,
- pubsub.getCount());
-
- goog.array.forEach(['X', 'Y', 'Z'], function(topic) {
- pubsub.unsubscribe(topic, foo);
- });
- assertEquals('Topic "X" must have 1 subscriber', 1,
- pubsub.getCount('X'));
- assertEquals('Topic "Y" must have 1 subscriber', 1,
- pubsub.getCount('Y'));
- assertEquals('Topic "Z" must have 1 subscriber', 1,
- pubsub.getCount('Z'));
-
- goog.array.forEach(['X', 'Y', 'Z'], function(topic) {
- pubsub.unsubscribe(topic, bar, context);
- });
- assertEquals('Topic "X" must not have any subscribers', 0,
- pubsub.getCount('X'));
- assertEquals('Topic "Y" must not have any subscribers', 0,
- pubsub.getCount('Y'));
- assertEquals('Topic "Z" must not have any subscribers', 0,
- pubsub.getCount('Z'));
-
- assertEquals('Pubsub channel must not have any subscribers', 0,
- pubsub.getCount());
- }
-
- function testPublish() {
- var context = {};
- var fooCalled = false;
- var barCalled = false;
-
- function foo(x, y) {
- fooCalled = true;
- assertEquals('x must have expected value', 'x', x);
- assertEquals('y must have expected value', 'y', y);
- }
-
- function bar(x, y) {
- barCalled = true;
- assertEquals('Context must have expected value', context, this);
- assertEquals('x must have expected value', 'x', x);
- assertEquals('y must have expected value', 'y', y);
- }
-
- pubsub.subscribe('someTopic', foo);
- pubsub.subscribe('someTopic', bar, context);
-
- assertTrue(pubsub.publish('someTopic', 'x', 'y'));
- assertTrue('foo() must have been called', fooCalled);
- assertTrue('bar() must have been called', barCalled);
-
- fooCalled = false;
- barCalled = false;
- assertTrue(pubsub.unsubscribe('someTopic', foo));
-
- assertTrue(pubsub.publish('someTopic', 'x', 'y'));
- assertFalse('foo() must not have been called', fooCalled);
- assertTrue('bar() must have been called', barCalled);
-
- fooCalled = false;
- barCalled = false;
- pubsub.subscribe('differentTopic', foo);
-
- assertTrue(pubsub.publish('someTopic', 'x', 'y'));
- assertFalse('foo() must not have been called', fooCalled);
- assertTrue('bar() must have been called', barCalled);
- }
-
- function testPublishEmptyTopic() {
- var fooCalled = false;
- function foo() {
- fooCalled = true;
- }
-
- assertFalse('Publishing to nonexistent topic must return false',
- pubsub.publish('someTopic'));
-
- pubsub.subscribe('someTopic', foo);
- assertTrue('Publishing to topic with subscriber must return true',
- pubsub.publish('someTopic'));
- assertTrue('Foo must have been called', fooCalled);
-
- pubsub.unsubscribe('someTopic', foo);
- fooCalled = false;
- assertFalse('Publishing to topic without subscribers must return false',
- pubsub.publish('someTopic'));
- assertFalse('Foo must nothave been called', fooCalled);
- }
-
- function testSubscribeWhilePublishing() {
- // It's OK for a subscriber to add a new subscriber to its own topic,
- // but the newly added subscriber shouldn't be called until the next
- // publish cycle.
-
- var firstCalled = false;
- var secondCalled = false;
-
- pubsub.subscribe('someTopic', function() {
- pubsub.subscribe('someTopic', function() {
- secondCalled = true;
- });
- firstCalled = true;
- });
- assertEquals('Topic must have one subscriber', 1,
- pubsub.getCount('someTopic'));
- assertFalse('No subscriber must have been called yet',
- firstCalled || secondCalled);
-
- pubsub.publish('someTopic');
- assertEquals('Topic must have two subscribers', 2,
- pubsub.getCount('someTopic'));
- assertTrue('The first subscriber must have been called',
- firstCalled);
- assertFalse('The second subscriber must not have been called yet',
- secondCalled);
-
- pubsub.publish('someTopic');
- assertEquals('Topic must have three subscribers', 3,
- pubsub.getCount('someTopic'));
- assertTrue('The first subscriber must have been called',
- firstCalled);
- assertTrue('The second subscriber must also have been called',
- secondCalled);
- }
-
- function testUnsubscribeWhilePublishing() {
- // It's OK for a subscriber to unsubscribe another subscriber from its
- // own topic, but the subscriber in question won't actually be removed
- // until after publishing is complete.
-
- var firstCalled = false;
- var secondCalled = false;
- var thirdCalled = false;
-
- function first() {
- assertFalse('unsubscribe() must return false during publishing',
- pubsub.unsubscribe('X', second));
- assertEquals('Topic "X" must still have 3 subscribers', 3,
- pubsub.getCount('X'));
- firstCalled = true;
- }
- pubsub.subscribe('X', first);
-
- function second() {
- assertEquals('Topic "X" must still have 3 subscribers', 3,
- pubsub.getCount('X'));
- secondCalled = true;
- }
- pubsub.subscribe('X', second);
-
- function third() {
- assertFalse('unsubscribe() must return false during publishing',
- pubsub.unsubscribe('X', first));
- assertEquals('Topic "X" must still have 3 subscribers', 3,
- pubsub.getCount('X'));
- thirdCalled = true;
- }
- pubsub.subscribe('X', third);
-
- assertEquals('Topic "X" must have 3 subscribers', 3,
- pubsub.getCount('X'));
- assertFalse('No subscribers must have been called yet',
- firstCalled || secondCalled || thirdCalled);
-
- assertTrue(pubsub.publish('X'));
- assertTrue('First function must have been called', firstCalled);
- assertTrue('Second function must have been called', secondCalled);
- assertTrue('Third function must have been called', thirdCalled);
- assertEquals('Topic "X" must have 1 subscriber after publishing', 1,
- pubsub.getCount('X'));
- assertEquals('PubSub must not have any subscriptions pending removal', 0,
- pubsub.pendingKeys_.length);
- }
-
- function testUnsubscribeSelfWhilePublishing() {
- // It's OK for a subscriber to unsubscribe itself, but it won't actually
- // be removed until after publishing is complete.
-
- var selfDestructCalled = false;
-
- function selfDestruct() {
- assertFalse('unsubscribe() must return false during publishing',
- pubsub.unsubscribe('someTopic', arguments.callee));
- assertEquals('Topic must still have 1 subscriber', 1,
- pubsub.getCount('someTopic'));
- selfDestructCalled = true;
- }
-
- pubsub.subscribe('someTopic', selfDestruct);
- assertEquals('Topic must have 1 subscriber', 1,
- pubsub.getCount('someTopic'));
- assertFalse('selfDestruct() must not have been called yet',
- selfDestructCalled);
-
- pubsub.publish('someTopic');
- assertTrue('selfDestruct() must have been called', selfDestructCalled);
- assertEquals('Topic must have no subscribers after publishing', 0,
- pubsub.getCount('someTopic'));
- assertEquals('PubSub must not have any subscriptions pending removal', 0,
- pubsub.pendingKeys_.length);
- }
-
- function testPublishReturnValue() {
- pubsub.subscribe('X', function() {
- pubsub.unsubscribe('X', arguments.callee);
- });
- assertTrue('publish() must return true even if the only subscriber ' +
- 'removes itself during publishing', pubsub.publish('X'));
- }
-
- function testNestedPublish() {
- var x1 = false;
- var x2 = false;
- var y1 = false;
- var y2 = false;
-
- pubsub.subscribe('X', function() {
- pubsub.publish('Y');
- pubsub.unsubscribe('X', arguments.callee);
- x1 = true;
- });
-
- pubsub.subscribe('X', function() {
- x2 = true;
- });
-
- pubsub.subscribe('Y', function() {
- pubsub.unsubscribe('Y', arguments.callee);
- y1 = true;
- });
-
- pubsub.subscribe('Y', function() {
- y2 = true;
- });
-
- pubsub.publish('X');
-
- assertTrue('x1 must be true', x1);
- assertTrue('x2 must be true', x2);
- assertTrue('y1 must be true', y1);
- assertTrue('y2 must be true', y2);
- }
-
- function testClear() {
- function fn() {
- }
-
- goog.array.forEach(['W', 'X', 'Y', 'Z'], function(topic) {
- pubsub.subscribe(topic, fn);
- });
- assertEquals('Pubsub channel must have 4 subscribers', 4,
- pubsub.getCount());
-
- pubsub.clear('W');
- assertEquals('Pubsub channel must have 3 subscribers', 3,
- pubsub.getCount());
-
- goog.array.forEach(['X', 'Y'], function(topic) {
- pubsub.clear(topic);
- });
- assertEquals('Pubsub channel must have 1 subscriber', 1,
- pubsub.getCount());
-
- pubsub.clear();
- assertEquals('Pubsub channel must have no subscribers', 0,
- pubsub.getCount());
- }
- </script>
-</body>
-</html>