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

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: Address Aaron's comments 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
« no previous file with comments | « mojo/public/bindings/js/codec.js ('k') | mojo/public/bindings/js/core.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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([
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 });
OLDNEW
« no previous file with comments | « mojo/public/bindings/js/codec.js ('k') | mojo/public/bindings/js/core.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698