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/js/bindings/codec_unittests.js

Issue 703273002: Update mojo sdk to rev 04a510fb37db10642e156957f9b2c11c2f6442ac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix content/child -> mojo/common linking Created 6 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
« no previous file with comments | « mojo/public/js/bindings/codec.js ('k') | mojo/public/js/bindings/connection.js » ('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 2014 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 "gin/test/expect",
7 "mojo/public/js/bindings/codec",
8 "mojo/public/interfaces/bindings/tests/rect.mojom",
9 "mojo/public/interfaces/bindings/tests/sample_service.mojom",
10 "mojo/public/interfaces/bindings/tests/test_structs.mojom",
11 ], function(expect, codec, rect, sample, structs) {
12 testBar();
13 testFoo();
14 testNamedRegion();
15 testTypes();
16 testAlign();
17 testUtf8();
18 this.result = "PASS";
19
20 function testBar() {
21 var bar = new sample.Bar();
22 bar.alpha = 1;
23 bar.beta = 2;
24 bar.gamma = 3;
25 bar.type = 0x08070605;
26 bar.extraProperty = "banana";
27
28 var messageName = 42;
29 var payloadSize = sample.Bar.encodedSize;
30
31 var builder = new codec.MessageBuilder(messageName, payloadSize);
32 builder.encodeStruct(sample.Bar, bar);
33
34 var message = builder.finish();
35
36 var expectedMemory = new Uint8Array([
37 16, 0, 0, 0,
38 2, 0, 0, 0,
39 42, 0, 0, 0,
40 0, 0, 0, 0,
41
42 16, 0, 0, 0,
43 4, 0, 0, 0,
44
45 1, 2, 3, 0,
46 5, 6, 7, 8,
47 ]);
48
49 var actualMemory = new Uint8Array(message.buffer.arrayBuffer);
50 expect(actualMemory).toEqual(expectedMemory);
51
52 var reader = new codec.MessageReader(message);
53
54 expect(reader.payloadSize).toBe(payloadSize);
55 expect(reader.messageName).toBe(messageName);
56
57 var bar2 = reader.decodeStruct(sample.Bar);
58
59 expect(bar2.alpha).toBe(bar.alpha);
60 expect(bar2.beta).toBe(bar.beta);
61 expect(bar2.gamma).toBe(bar.gamma);
62 expect("extraProperty" in bar2).toBeFalsy();
63 }
64
65 function testFoo() {
66 var foo = new sample.Foo();
67 foo.x = 0x212B4D5;
68 foo.y = 0x16E93;
69 foo.a = 1;
70 foo.b = 0;
71 foo.c = 3; // This will get truncated to one bit.
72 foo.bar = new sample.Bar();
73 foo.bar.alpha = 91;
74 foo.bar.beta = 82;
75 foo.bar.gamma = 73;
76 foo.data = [
77 4, 5, 6, 7, 8,
78 ];
79 foo.extra_bars = [
80 new sample.Bar(), new sample.Bar(), new sample.Bar(),
81 ];
82 for (var i = 0; i < foo.extra_bars.length; ++i) {
83 foo.extra_bars[i].alpha = 1 * i;
84 foo.extra_bars[i].beta = 2 * i;
85 foo.extra_bars[i].gamma = 3 * i;
86 }
87 foo.name = "I am a banana";
88 // This is supposed to be a handle, but we fake it with an integer.
89 foo.source = 23423782;
90 foo.array_of_array_of_bools = [
91 [true], [false, true]
92 ];
93 foo.array_of_bools = [
94 true, false, true, false, true, false, true, true
95 ];
96
97
98 var messageName = 31;
99 var payloadSize = 304;
100
101 var builder = new codec.MessageBuilder(messageName, payloadSize);
102 builder.encodeStruct(sample.Foo, foo);
103
104 var message = builder.finish();
105
106 var expectedMemory = new Uint8Array([
107 /* 0: */ 16, 0, 0, 0, 2, 0, 0, 0,
108 /* 8: */ 31, 0, 0, 0, 0, 0, 0, 0,
109 /* 16: */ 96, 0, 0, 0, 15, 0, 0, 0,
110 /* 24: */ 0xD5, 0xB4, 0x12, 0x02, 0x93, 0x6E, 0x01, 0,
111 /* 32: */ 5, 0, 0, 0, 0, 0, 0, 0,
112 /* 40: */ 72, 0, 0, 0, 0, 0, 0, 0,
113 ]);
114 // TODO(abarth): Test more of the message's raw memory.
115 var actualMemory = new Uint8Array(message.buffer.arrayBuffer,
116 0, expectedMemory.length);
117 expect(actualMemory).toEqual(expectedMemory);
118
119 var expectedHandles = [
120 23423782,
121 ];
122
123 expect(message.handles).toEqual(expectedHandles);
124
125 var reader = new codec.MessageReader(message);
126
127 expect(reader.payloadSize).toBe(payloadSize);
128 expect(reader.messageName).toBe(messageName);
129
130 var foo2 = reader.decodeStruct(sample.Foo);
131
132 expect(foo2.x).toBe(foo.x);
133 expect(foo2.y).toBe(foo.y);
134
135 expect(foo2.a).toBe(foo.a & 1 ? true : false);
136 expect(foo2.b).toBe(foo.b & 1 ? true : false);
137 expect(foo2.c).toBe(foo.c & 1 ? true : false);
138
139 expect(foo2.bar).toEqual(foo.bar);
140 expect(foo2.data).toEqual(foo.data);
141
142 expect(foo2.extra_bars).toEqual(foo.extra_bars);
143 expect(foo2.name).toBe(foo.name);
144 expect(foo2.source).toEqual(foo.source);
145
146 expect(foo2.array_of_bools).toEqual(foo.array_of_bools);
147 }
148
149 function createRect(x, y, width, height) {
150 var r = new rect.Rect();
151 r.x = x;
152 r.y = y;
153 r.width = width;
154 r.height = height;
155 return r;
156 }
157
158 // Verify that the references to the imported Rect type in test_structs.mojom
159 // are generated correctly.
160 function testNamedRegion() {
161 var r = new structs.NamedRegion();
162 r.name = "rectangle";
163 r.rects = new Array(createRect(1, 2, 3, 4), createRect(10, 20, 30, 40));
164
165 var builder = new codec.MessageBuilder(1, structs.NamedRegion.encodedSize);
166 builder.encodeStruct(structs.NamedRegion, r);
167 var reader = new codec.MessageReader(builder.finish());
168 var result = reader.decodeStruct(structs.NamedRegion);
169
170 expect(result.name).toEqual("rectangle");
171 expect(result.rects[0]).toEqual(createRect(1, 2, 3, 4));
172 expect(result.rects[1]).toEqual(createRect(10, 20, 30, 40));
173 }
174
175 function testTypes() {
176 function encodeDecode(cls, input, expectedResult, encodedSize) {
177 var messageName = 42;
178 var payloadSize = encodedSize || cls.encodedSize;
179
180 var builder = new codec.MessageBuilder(messageName, payloadSize);
181 builder.encodeStruct(cls, input)
182 var message = builder.finish();
183
184 var reader = new codec.MessageReader(message);
185 expect(reader.payloadSize).toBe(payloadSize);
186 expect(reader.messageName).toBe(messageName);
187 var result = reader.decodeStruct(cls);
188 expect(result).toEqual(expectedResult);
189 }
190 encodeDecode(codec.String, "banana", "banana", 24);
191 encodeDecode(codec.NullableString, null, null, 8);
192 encodeDecode(codec.Int8, -1, -1);
193 encodeDecode(codec.Int8, 0xff, -1);
194 encodeDecode(codec.Int16, -1, -1);
195 encodeDecode(codec.Int16, 0xff, 0xff);
196 encodeDecode(codec.Int16, 0xffff, -1);
197 encodeDecode(codec.Int32, -1, -1);
198 encodeDecode(codec.Int32, 0xffff, 0xffff);
199 encodeDecode(codec.Int32, 0xffffffff, -1);
200 encodeDecode(codec.Float, 1.0, 1.0);
201 encodeDecode(codec.Double, 1.0, 1.0);
202 }
203
204 function testAlign() {
205 var aligned = [
206 0, // 0
207 8, // 1
208 8, // 2
209 8, // 3
210 8, // 4
211 8, // 5
212 8, // 6
213 8, // 7
214 8, // 8
215 16, // 9
216 16, // 10
217 16, // 11
218 16, // 12
219 16, // 13
220 16, // 14
221 16, // 15
222 16, // 16
223 24, // 17
224 24, // 18
225 24, // 19
226 24, // 20
227 ];
228 for (var i = 0; i < aligned.length; ++i)
229 expect(codec.align(i)).toBe(aligned[i]);
230 }
231
232 function testUtf8() {
233 var str = "B\u03ba\u1f79"; // some UCS-2 codepoints
234 var messageName = 42;
235 var payloadSize = 24;
236
237 var builder = new codec.MessageBuilder(messageName, payloadSize);
238 var encoder = builder.createEncoder(8);
239 encoder.encodeStringPointer(str);
240 var message = builder.finish();
241 var expectedMemory = new Uint8Array([
242 /* 0: */ 16, 0, 0, 0, 2, 0, 0, 0,
243 /* 8: */ 42, 0, 0, 0, 0, 0, 0, 0,
244 /* 16: */ 8, 0, 0, 0, 0, 0, 0, 0,
245 /* 24: */ 14, 0, 0, 0, 6, 0, 0, 0,
246 /* 32: */ 0x42, 0xCE, 0xBA, 0xE1, 0xBD, 0xB9, 0, 0,
247 ]);
248 var actualMemory = new Uint8Array(message.buffer.arrayBuffer);
249 expect(actualMemory.length).toEqual(expectedMemory.length);
250 expect(actualMemory).toEqual(expectedMemory);
251
252 var reader = new codec.MessageReader(message);
253 expect(reader.payloadSize).toBe(payloadSize);
254 expect(reader.messageName).toBe(messageName);
255 var str2 = reader.decoder.decodeStringPointer();
256 expect(str2).toEqual(str);
257 }
258 });
OLDNEW
« no previous file with comments | « mojo/public/js/bindings/codec.js ('k') | mojo/public/js/bindings/connection.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698