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