123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- // Copyright 2010 The Closure Library Authors. All Rights Reserved.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS-IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- goog.provide('goog.messaging.MultiChannelTest');
- goog.setTestOnly('goog.messaging.MultiChannelTest');
- goog.require('goog.messaging.MultiChannel');
- goog.require('goog.testing.MockControl');
- goog.require('goog.testing.jsunit');
- goog.require('goog.testing.messaging.MockMessageChannel');
- goog.require('goog.testing.mockmatchers.IgnoreArgument');
- var mockControl;
- var mockChannel;
- var multiChannel;
- var channel1;
- var channel2;
- function setUp() {
- mockControl = new goog.testing.MockControl();
- mockChannel = new goog.testing.messaging.MockMessageChannel(mockControl);
- multiChannel = new goog.messaging.MultiChannel(mockChannel);
- channel0 = multiChannel.createVirtualChannel('foo');
- channel1 = multiChannel.createVirtualChannel('bar');
- }
- function expectedFn(name, callback) {
- var ignored = new goog.testing.mockmatchers.IgnoreArgument();
- var fn = mockControl.createFunctionMock(name);
- fn(ignored).$does(function(args) { callback.apply(this, args); });
- return function() { fn(arguments); };
- }
- function notExpectedFn() {
- return mockControl.createFunctionMock('notExpectedFn');
- }
- function assertEqualsFn() {
- var expectedArgs = Array.prototype.slice.call(arguments);
- return expectedFn('assertEqualsFn', function() {
- assertObjectEquals(expectedArgs, Array.prototype.slice.call(arguments));
- });
- }
- function tearDown() {
- multiChannel.dispose();
- mockControl.$verifyAll();
- assertTrue(mockChannel.disposed);
- }
- function testSend0() {
- mockChannel.send('foo:fooBar', {foo: 'bar'});
- mockControl.$replayAll();
- channel0.send('fooBar', {foo: 'bar'});
- }
- function testSend1() {
- mockChannel.send('bar:fooBar', {foo: 'bar'});
- mockControl.$replayAll();
- channel1.send('fooBar', {foo: 'bar'});
- }
- function testReceive0() {
- channel0.registerService('fooBar', assertEqualsFn('Baz bang'));
- channel1.registerService('fooBar', notExpectedFn());
- mockControl.$replayAll();
- mockChannel.receive('foo:fooBar', 'Baz bang');
- }
- function testReceive1() {
- channel1.registerService('fooBar', assertEqualsFn('Baz bang'));
- channel0.registerService('fooBar', notExpectedFn());
- mockControl.$replayAll();
- mockChannel.receive('bar:fooBar', 'Baz bang');
- }
- function testDefaultReceive0() {
- channel0.registerDefaultService(assertEqualsFn('fooBar', 'Baz bang'));
- channel1.registerDefaultService(notExpectedFn());
- mockControl.$replayAll();
- mockChannel.receive('foo:fooBar', 'Baz bang');
- }
- function testDefaultReceive1() {
- channel1.registerDefaultService(assertEqualsFn('fooBar', 'Baz bang'));
- channel0.registerDefaultService(notExpectedFn());
- mockControl.$replayAll();
- mockChannel.receive('bar:fooBar', 'Baz bang');
- }
- function testReceiveAfterDisposed() {
- channel0.registerService('fooBar', notExpectedFn());
- mockControl.$replayAll();
- channel0.dispose();
- mockChannel.receive('foo:fooBar', 'Baz bang');
- }
- function testReceiveAfterParentDisposed() {
- channel0.registerService('fooBar', notExpectedFn());
- mockControl.$replayAll();
- multiChannel.dispose();
- mockChannel.receive('foo:fooBar', 'Baz bang');
- }
|