123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- // Copyright 2012 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.RespondingChannelTest');
- goog.setTestOnly('goog.messaging.RespondingChannelTest');
- goog.require('goog.messaging.RespondingChannel');
- goog.require('goog.testing.MockControl');
- goog.require('goog.testing.jsunit');
- goog.require('goog.testing.messaging.MockMessageChannel');
- var CH1_REQUEST = {'request': 'quux1'};
- var CH2_REQUEST = {'request': 'quux2'};
- var CH1_RESPONSE = {'response': 'baz1'};
- var CH2_RESPONSE = {'response': 'baz2'};
- var SERVICE_NAME = 'serviceName';
- var mockControl;
- var ch1;
- var ch2;
- var respondingCh1;
- var respondingCh2;
- function setUp() {
- mockControl = new goog.testing.MockControl();
- ch1 = new goog.testing.messaging.MockMessageChannel(mockControl);
- ch2 = new goog.testing.messaging.MockMessageChannel(mockControl);
- respondingCh1 = new goog.messaging.RespondingChannel(ch1);
- respondingCh2 = new goog.messaging.RespondingChannel(ch2);
- }
- function tearDown() {
- respondingCh1.dispose();
- respondingCh2.dispose();
- mockControl.$verifyAll();
- }
- function testSendWithSignature() {
- // 1 to 2 and back.
- var message1Ch1Request = {'data': CH1_REQUEST, 'signature': 0};
- var message1Ch2Response = {'data': CH2_RESPONSE, 'signature': 0};
- var message2Ch1Request = {'data': CH1_REQUEST, 'signature': 1};
- var message2Ch2Response = {'data': CH2_RESPONSE, 'signature': 1};
- // 2 to 1 and back.
- var message3Ch2Request = {'data': CH2_REQUEST, 'signature': 0};
- var message3Ch1Response = {'data': CH1_RESPONSE, 'signature': 0};
- var message4Ch2Request = {'data': CH2_REQUEST, 'signature': 1};
- var message4Ch1Response = {'data': CH1_RESPONSE, 'signature': 1};
- // 1 to 2 and back.
- ch1.send('public:' + SERVICE_NAME, message1Ch1Request);
- ch2.send('private:mics', message1Ch2Response);
- ch1.send('public:' + SERVICE_NAME, message2Ch1Request);
- ch2.send('private:mics', message2Ch2Response);
- // 2 to 1 and back.
- ch2.send('public:' + SERVICE_NAME, message3Ch2Request);
- ch1.send('private:mics', message3Ch1Response);
- ch2.send('public:' + SERVICE_NAME, message4Ch2Request);
- ch1.send('private:mics', message4Ch1Response);
- mockControl.$replayAll();
- var hasInvokedCh1 = false;
- var hasInvokedCh2 = false;
- var hasReturnedFromCh1 = false;
- var hasReturnedFromCh2 = false;
- var serviceCallback1 = function(message) {
- hasInvokedCh1 = true;
- assertObjectEquals(CH2_REQUEST, message);
- return CH1_RESPONSE;
- };
- var serviceCallback2 = function(message) {
- hasInvokedCh2 = true;
- assertObjectEquals(CH1_REQUEST, message);
- return CH2_RESPONSE;
- };
- var invocationCallback1 = function(message) {
- hasReturnedFromCh2 = true;
- assertObjectEquals(CH2_RESPONSE, message);
- };
- var invocationCallback2 = function(message) {
- hasReturnedFromCh1 = true;
- assertObjectEquals(CH1_RESPONSE, message);
- };
- respondingCh1.registerService(SERVICE_NAME, serviceCallback1);
- respondingCh2.registerService(SERVICE_NAME, serviceCallback2);
- respondingCh1.send(SERVICE_NAME, CH1_REQUEST, invocationCallback1);
- ch2.receive('public:' + SERVICE_NAME, message1Ch1Request);
- ch1.receive('private:mics', message1Ch2Response);
- respondingCh1.send(SERVICE_NAME, CH1_REQUEST, invocationCallback1);
- ch2.receive('public:' + SERVICE_NAME, message2Ch1Request);
- ch1.receive('private:mics', message2Ch2Response);
- respondingCh2.send(SERVICE_NAME, CH2_REQUEST, invocationCallback2);
- ch1.receive('public:' + SERVICE_NAME, message3Ch2Request);
- ch2.receive('private:mics', message3Ch1Response);
- respondingCh2.send(SERVICE_NAME, CH2_REQUEST, invocationCallback2);
- ch1.receive('public:' + SERVICE_NAME, message4Ch2Request);
- ch2.receive('private:mics', message4Ch1Response);
- assertTrue(
- hasInvokedCh1 && hasInvokedCh2 && hasReturnedFromCh1 &&
- hasReturnedFromCh2);
- }
|