Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(777)

Side by Side Diff: mojo/public/bindings/js/codec_unittests.js

Issue 69843003: Implement Mojo message codec in JavaScript (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Seems to work! Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698