// Copyright 2013 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. /** * @fileoverview Unit tests for goog.labs.net.webChannel.WireV8. * */ goog.provide('goog.labs.net.webChannel.WireV8Test'); goog.require('goog.labs.net.webChannel.WireV8'); goog.require('goog.testing.jsunit'); goog.setTestOnly('goog.labs.net.webChannel.WireV8Test'); var wireCodec; function setUp() { wireCodec = new goog.labs.net.webChannel.WireV8(); } function tearDown() {} function testEncodeSimpleMessage() { // scalar types only var message = {a: 'a', b: 'b'}; var buff = []; wireCodec.encodeMessage(message, buff, 'prefix_'); assertEquals(2, buff.length); assertEquals('prefix_a=a', buff[0]); assertEquals('prefix_b=b', buff[1]); } function testEncodeComplexMessage() { var message = {a: 'a', b: {x: 1, y: 2}}; var buff = []; wireCodec.encodeMessage(message, buff, 'prefix_'); assertEquals(2, buff.length); assertEquals('prefix_a=a', buff[0]); // a round-trip URI codec assertEquals('prefix_b={\"x\":1,\"y\":2}', decodeURIComponent(buff[1])); } function testEncodeMessageQueue() { var message1 = {a: 'a'}; var queuedMessage1 = {map: message1, mapId: 3}; var message2 = {b: 'b'}; var queuedMessage2 = {map: message2, mapId: 4}; var queue = [queuedMessage1, queuedMessage2]; var result = wireCodec.encodeMessageQueue(queue, 2, null); assertEquals('count=2&ofs=3&req0_a=a&req1_b=b', result); } function testDecodeMessage() { var message = wireCodec.decodeMessage('[{"a":"a", "x":1}, {"b":"b"}]'); assertTrue(goog.isArray(message)); assertEquals(2, message.length); assertEquals('a', message[0].a); assertEquals(1, message[0].x); assertEquals('b', message[1].b); }