OLD | NEW |
(Empty) | |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 define(["gtest", "codec", "sample_service"], |
| 6 function(gtest, codec, sample) { |
| 7 testBar(); |
| 8 testFoo(); |
| 9 this.result = "PASS"; |
| 10 |
| 11 function barMatches(bar, expected) { |
| 12 gtest.expectEqual(bar.alpha, expected.alpha, |
| 13 "bar.alpha is " + bar.alpha); |
| 14 gtest.expectEqual(bar.beta, expected.beta, |
| 15 "bar.beta is " + bar.beta); |
| 16 gtest.expectEqual(bar.gamma, expected.gamma, |
| 17 "bar.gamma is " + bar.gamma); |
| 18 } |
| 19 |
| 20 function equalsArray(actual, expected, tag) { |
| 21 for (var i = 0; i < expected.length; ++i) { |
| 22 gtest.expectEqual(actual[i], expected[i], |
| 23 tag + "[" + i + "] is " + actual[i]); |
| 24 } |
| 25 } |
| 26 |
| 27 function testBar() { |
| 28 var bar = new sample.Bar(); |
| 29 bar.alpha = 1; |
| 30 bar.beta = 2; |
| 31 bar.gamma = 3; |
| 32 bar.extraProperty = "banana"; |
| 33 |
| 34 var messageName = 42; |
| 35 var payloadSize = sample.Bar.encodedSize; |
| 36 |
| 37 var builder = new codec.MessageBuilder(messageName, payloadSize); |
| 38 builder.encodeStruct(sample.Bar, bar); |
| 39 |
| 40 var message = builder.finish(); |
| 41 |
| 42 var expectedMemory = [ |
| 43 24, 0, 0, 0, |
| 44 42, 0, 0, 0, |
| 45 |
| 46 16, 0, 0, 0, |
| 47 3, 0, 0, 0, |
| 48 |
| 49 1, 2, 3, 0, |
| 50 0, 0, 0, 0, |
| 51 ]; |
| 52 |
| 53 for (var i = 0; i < expectedMemory.length; ++i) { |
| 54 gtest.expectEqual(message.memory[i], expectedMemory[i], |
| 55 "message.memory[" + i + "] is " + message.memory[i]); |
| 56 } |
| 57 |
| 58 var reader = new codec.MessageReader(message); |
| 59 |
| 60 gtest.expectEqual(reader.payloadSize, payloadSize, |
| 61 "reader.payloadSize is " + reader.payloadSize); |
| 62 gtest.expectEqual(reader.messageName, messageName, |
| 63 "reader.messageName is " + reader.messageName); |
| 64 |
| 65 var bar2 = reader.decodeStruct(sample.Bar); |
| 66 |
| 67 barMatches(bar2, bar); |
| 68 gtest.expectFalse("extraProperty" in bar2, |
| 69 "extraProperty appeared in bar2") |
| 70 } |
| 71 |
| 72 function testFoo() { |
| 73 var foo = new sample.Foo(); |
| 74 foo.x = 0x212B4D5; |
| 75 foo.y = 0x16E93; |
| 76 foo.a = 1; |
| 77 foo.b = 0; |
| 78 foo.c = 3; // This will get truncated to one bit. |
| 79 foo.bar = new sample.Bar(); |
| 80 foo.bar.alpha = 91; |
| 81 foo.bar.beta = 82; |
| 82 foo.bar.gamma = 73; |
| 83 foo.data = [ |
| 84 4, 5, 6, 7, 8, |
| 85 ]; |
| 86 foo.extra_bars = [ |
| 87 new sample.Bar(), new sample.Bar(), new sample.Bar(), |
| 88 ]; |
| 89 for (var i = 0; i < foo.extra_bars.length; ++i) { |
| 90 foo.extra_bars[i].alpha = 1 * i; |
| 91 foo.extra_bars[i].beta = 2 * i; |
| 92 foo.extra_bars[i].gamma = 3 * i; |
| 93 } |
| 94 foo.name = "I am a banana"; |
| 95 foo.files = [ |
| 96 // These are supposed to be handles, but we fake them with integers. |
| 97 23423782, 32549823, 98320423, 38502383, 92834093, |
| 98 ]; |
| 99 |
| 100 var messageName = 31; |
| 101 var payloadSize = sample.Foo.encodedSize; |
| 102 |
| 103 var builder = new codec.MessageBuilder(messageName, payloadSize); |
| 104 builder.encodeStruct(sample.Foo, foo); |
| 105 |
| 106 var message = builder.finish(); |
| 107 |
| 108 var expectedMemory = [ |
| 109 /* 0: */ 80, 0, 0, 0, 31, 0, 0, 0, |
| 110 /* 8: */ 72, 0, 0, 0, 10, 0, 0, 0, |
| 111 /* 16: */ 0xD5, 0xB4, 0x12, 0x02, 0x93, 0x6E, 0x01, 0, |
| 112 /* 24: */ 5, 0, 0, 0, 0, 0, 0, 0, |
| 113 /* 32: */ 48, 0, 0, 0, 0, 0, 0, 0, |
| 114 // TODO(abarth): Test more of the message's raw memory. |
| 115 ]; |
| 116 |
| 117 equalsArray(message.memory, expectedMemory, "message.memory"); |
| 118 |
| 119 var expectedHandles = [ |
| 120 23423782, 32549823, 98320423, 38502383, 92834093, |
| 121 ]; |
| 122 |
| 123 equalsArray(message.handles, expectedHandles, "message.handles"); |
| 124 |
| 125 var reader = new codec.MessageReader(message); |
| 126 |
| 127 gtest.expectEqual(reader.payloadSize, payloadSize, |
| 128 "reader.payloadSize is " + reader.payloadSize); |
| 129 gtest.expectEqual(reader.messageName, messageName, |
| 130 "reader.messageName is " + reader.messageName); |
| 131 |
| 132 var foo2 = reader.decodeStruct(sample.Foo); |
| 133 |
| 134 gtest.expectEqual |
| 135 |
| 136 gtest.expectEqual(foo2.x, foo.x, |
| 137 "foo2.x is " + foo2.x); |
| 138 gtest.expectEqual(foo2.y, foo.y, |
| 139 "foo2.y is " + foo2.y); |
| 140 |
| 141 gtest.expectEqual(foo2.a, foo.a & 1, |
| 142 "foo2.a is " + foo2.a); |
| 143 gtest.expectEqual(foo2.b, foo.b & 1, |
| 144 "foo2.b is " + foo2.b); |
| 145 gtest.expectEqual(foo2.c, foo.c & 1, |
| 146 "foo2.c is " + foo2.c); |
| 147 |
| 148 barMatches(foo2.bar, foo.bar); |
| 149 equalsArray(foo2.data, foo.data, "foo2.data"); |
| 150 |
| 151 var actualExtraBarsJSON = JSON.stringify(foo2.extra_bars); |
| 152 var expectedExtraBarsJSON = JSON.stringify(foo.extra_bars); |
| 153 gtest.expectEqual(actualExtraBarsJSON, expectedExtraBarsJSON, |
| 154 actualExtraBarsJSON); |
| 155 |
| 156 gtest.expectEqual(foo2.name, foo.name, |
| 157 "foo2.name is " + foo2.name); |
| 158 |
| 159 equalsArray(foo2.files, foo.files, "foo2.files"); |
| 160 } |
| 161 }); |
OLD | NEW |