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/dart/test/codec_test.dart

Issue 1027603002: Dart: Removes all but native calls and the handle watcher from the snapshot. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Hoist application interface dependence Created 5 years, 9 months 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 import 'dart:typed_data'; 5 import 'dart:typed_data';
6 import 'dart:mojo.bindings' as bindings;
7 import 'dart:mojo.core' as core;
8 6
9 import 'package:mojo/dart/testing/expect.dart'; 7 import 'package:mojo/dart/testing/expect.dart';
8 import 'package:mojo/public/dart/bindings.dart' as bindings;
9 import 'package:mojo/public/dart/core.dart' as core;
10 10
11 class Bar extends bindings.Struct { 11 class Bar extends bindings.Struct {
12 static const int kStructSize = 16; 12 static const int kStructSize = 16;
13 static const bindings.StructDataHeader kDefaultStructInfo = 13 static const bindings.StructDataHeader kDefaultStructInfo =
14 const bindings.StructDataHeader(kStructSize, 4); 14 const bindings.StructDataHeader(kStructSize, 4);
15 15
16 static final int Type_VERTICAL = 1; 16 static final int Type_VERTICAL = 1;
17 static final int Type_HORIZONTAL = Type_VERTICAL + 1; 17 static final int Type_HORIZONTAL = Type_VERTICAL + 1;
18 static final int Type_BOTH = Type_HORIZONTAL + 1; 18 static final int Type_BOTH = Type_HORIZONTAL + 1;
19 static final int Type_INVALID = Type_BOTH + 1; 19 static final int Type_INVALID = Type_BOTH + 1;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 54
55 void encode(bindings.Encoder encoder) { 55 void encode(bindings.Encoder encoder) {
56 var encoder0 = encoder.getStructEncoderAtOffset(kDefaultStructInfo); 56 var encoder0 = encoder.getStructEncoderAtOffset(kDefaultStructInfo);
57 encoder0.encodeUint8(alpha, 8); 57 encoder0.encodeUint8(alpha, 8);
58 encoder0.encodeUint8(beta, 9); 58 encoder0.encodeUint8(beta, 9);
59 encoder0.encodeUint8(gamma, 10); 59 encoder0.encodeUint8(gamma, 10);
60 encoder0.encodeInt32(type, 12); 60 encoder0.encodeInt32(type, 12);
61 } 61 }
62 } 62 }
63 63
64
65 void testBar() { 64 void testBar() {
66 var bar = new Bar(); 65 var bar = new Bar();
67 bar.alpha = 1; 66 bar.alpha = 1;
68 bar.beta = 2; 67 bar.beta = 2;
69 bar.gamma = 3; 68 bar.gamma = 3;
70 bar.type = 0x08070605; 69 bar.type = 0x08070605;
71 70
72 int name = 42; 71 int name = 42;
73 var header = new bindings.MessageHeader(name); 72 var header = new bindings.MessageHeader(name);
74 var message = bar.serializeWithHeader(header); 73 var message = bar.serializeWithHeader(header);
75 74
76 var expectedMemory = new Uint8List.fromList([ 75 var expectedMemory = new Uint8List.fromList([
77 16, 0, 0, 0, 76 16,
78 2, 0, 0, 0, 77 0,
79 42, 0, 0, 0, 78 0,
80 0, 0, 0, 0, 79 0,
81 80 2,
82 16, 0, 0, 0, 81 0,
83 4, 0, 0, 0, 82 0,
84 83 0,
85 1, 2, 3, 0, 84 42,
86 5, 6, 7, 8, 85 0,
86 0,
87 0,
88 0,
89 0,
90 0,
91 0,
92 16,
93 0,
94 0,
95 0,
96 4,
97 0,
98 0,
99 0,
100 1,
101 2,
102 3,
103 0,
104 5,
105 6,
106 7,
107 8,
87 ]); 108 ]);
88 109
89 var actualMemory = message.buffer.buffer.asUint8List(); 110 var actualMemory = message.buffer.buffer.asUint8List();
90 Expect.listEquals(expectedMemory, actualMemory); 111 Expect.listEquals(expectedMemory, actualMemory);
91 112
92 var receivedMessage = new bindings.ServiceMessage.fromMessage(message); 113 var receivedMessage = new bindings.ServiceMessage.fromMessage(message);
93 114
94 Expect.equals(receivedMessage.header.size, header.size); 115 Expect.equals(receivedMessage.header.size, header.size);
95 Expect.equals(receivedMessage.header.type, header.type); 116 Expect.equals(receivedMessage.header.type, header.type);
96 117
97 var bar2 = Bar.deserialize(receivedMessage.payload); 118 var bar2 = Bar.deserialize(receivedMessage.payload);
98 119
99 Expect.equals(bar.alpha, bar2.alpha); 120 Expect.equals(bar.alpha, bar2.alpha);
100 Expect.equals(bar.beta, bar2.beta); 121 Expect.equals(bar.beta, bar2.beta);
101 Expect.equals(bar.gamma, bar2.gamma); 122 Expect.equals(bar.gamma, bar2.gamma);
102 Expect.equals(bar.type, bar2.type); 123 Expect.equals(bar.type, bar2.type);
103 } 124 }
104 125
105
106 class Foo extends bindings.Struct { 126 class Foo extends bindings.Struct {
107 static const int kStructSize = 96; 127 static const int kStructSize = 96;
108 static const bindings.StructDataHeader kDefaultStructInfo = 128 static const bindings.StructDataHeader kDefaultStructInfo =
109 const bindings.StructDataHeader(kStructSize, 15); 129 const bindings.StructDataHeader(kStructSize, 15);
110 static final kFooby = "Fooby"; 130 static final kFooby = "Fooby";
111 int x = 0; 131 int x = 0;
112 int y = 0; 132 int y = 0;
113 bool a = true; 133 bool a = true;
114 bool b = false; 134 bool b = false;
115 bool c = false; 135 bool c = false;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 } 180 }
161 if (mainDataHeader.version > 6) { 181 if (mainDataHeader.version > 6) {
162 result.data = decoder0.decodeUint8Array( 182 result.data = decoder0.decodeUint8Array(
163 32, bindings.kArrayNullable, bindings.kUnspecifiedArrayLength); 183 32, bindings.kArrayNullable, bindings.kUnspecifiedArrayLength);
164 } 184 }
165 if (mainDataHeader.version > 7) { 185 if (mainDataHeader.version > 7) {
166 var decoder1 = decoder0.decodePointer(40, true); 186 var decoder1 = decoder0.decodePointer(40, true);
167 if (decoder1 == null) { 187 if (decoder1 == null) {
168 result.extraBars = null; 188 result.extraBars = null;
169 } else { 189 } else {
170 var si1 = decoder1.decodeDataHeaderForPointerArray( 190 var si1 = decoder1
171 bindings.kUnspecifiedArrayLength); 191 .decodeDataHeaderForPointerArray(bindings.kUnspecifiedArrayLength);
172 result.extraBars = new List<Bar>(si1.numElements); 192 result.extraBars = new List<Bar>(si1.numElements);
173 for (int i1 = 0; i1 < si1.numElements; ++i1) { 193 for (int i1 = 0; i1 < si1.numElements; ++i1) {
174 var decoder2 = decoder1.decodePointer( 194 var decoder2 = decoder1.decodePointer(
175 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i1, 195 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i1,
176 false); 196 false);
177 result.extraBars[i1] = Bar.decode(decoder2); 197 result.extraBars[i1] = Bar.decode(decoder2);
178 } 198 }
179 } 199 }
180 } 200 }
181 if (mainDataHeader.version > 8) { 201 if (mainDataHeader.version > 8) {
182 result.name = decoder0.decodeString(48, false); 202 result.name = decoder0.decodeString(48, false);
183 } 203 }
184 if (mainDataHeader.version > 10) { 204 if (mainDataHeader.version > 10) {
185 result.inputStreams = decoder0.decodeHandleArray( 205 result.inputStreams = decoder0.decodeHandleArray(
186 56, bindings.kArrayNullable, bindings.kUnspecifiedArrayLength); 206 56, bindings.kArrayNullable, bindings.kUnspecifiedArrayLength);
187 } 207 }
188 if (mainDataHeader.version > 11) { 208 if (mainDataHeader.version > 11) {
189 result.outputStreams = decoder0.decodeHandleArray( 209 result.outputStreams = decoder0.decodeHandleArray(
190 64, bindings.kArrayNullable, bindings.kUnspecifiedArrayLength); 210 64, bindings.kArrayNullable, bindings.kUnspecifiedArrayLength);
191 } 211 }
192 if (mainDataHeader.version > 12) { 212 if (mainDataHeader.version > 12) {
193 var decoder1 = decoder0.decodePointer(72, true); 213 var decoder1 = decoder0.decodePointer(72, true);
194 if (decoder1 == null) { 214 if (decoder1 == null) {
195 result.arrayOfArrayOfBools = null; 215 result.arrayOfArrayOfBools = null;
196 } else { 216 } else {
197 var si1 = decoder1.decodeDataHeaderForPointerArray( 217 var si1 = decoder1
198 bindings.kUnspecifiedArrayLength); 218 .decodeDataHeaderForPointerArray(bindings.kUnspecifiedArrayLength);
199 result.arrayOfArrayOfBools = new List<List<bool>>(si1.numElements); 219 result.arrayOfArrayOfBools = new List<List<bool>>(si1.numElements);
200 for (int i1 = 0; i1 < si1.numElements; ++i1) { 220 for (int i1 = 0; i1 < si1.numElements; ++i1) {
201 result.arrayOfArrayOfBools[i1] = decoder1.decodeBoolArray( 221 result.arrayOfArrayOfBools[i1] = decoder1.decodeBoolArray(
202 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i1, 222 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i1,
203 bindings.kNothingNullable, 223 bindings.kNothingNullable, bindings.kUnspecifiedArrayLength);
204 bindings.kUnspecifiedArrayLength);
205 } 224 }
206 } 225 }
207 } 226 }
208 if (mainDataHeader.version > 13) { 227 if (mainDataHeader.version > 13) {
209 var decoder1 = decoder0.decodePointer(80, true); 228 var decoder1 = decoder0.decodePointer(80, true);
210 if (decoder1 == null) { 229 if (decoder1 == null) {
211 result.multiArrayOfStrings = null; 230 result.multiArrayOfStrings = null;
212 } else { 231 } else {
213 var si1 = decoder1.decodeDataHeaderForPointerArray( 232 var si1 = decoder1
214 bindings.kUnspecifiedArrayLength); 233 .decodeDataHeaderForPointerArray(bindings.kUnspecifiedArrayLength);
215 result.multiArrayOfStrings = 234 result.multiArrayOfStrings =
216 new List<List<List<String>>>(si1.numElements); 235 new List<List<List<String>>>(si1.numElements);
217 for (int i1 = 0; i1 < si1.numElements; ++i1) { 236 for (int i1 = 0; i1 < si1.numElements; ++i1) {
218 var decoder2 = decoder1.decodePointer( 237 var decoder2 = decoder1.decodePointer(
219 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i1, 238 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i1,
220 false); 239 false);
221 { 240 {
222 var si2 = decoder2.decodeDataHeaderForPointerArray( 241 var si2 = decoder2.decodeDataHeaderForPointerArray(
223 bindings.kUnspecifiedArrayLength); 242 bindings.kUnspecifiedArrayLength);
224 result.multiArrayOfStrings[i1] = 243 result.multiArrayOfStrings[i1] =
225 new List<List<String>>(si2.numElements); 244 new List<List<String>>(si2.numElements);
226 for (int i2 = 0; i2 < si2.numElements; ++i2) { 245 for (int i2 = 0; i2 < si2.numElements; ++i2) {
227 var decoder3 = decoder2.decodePointer( 246 var decoder3 = decoder2.decodePointer(
228 bindings.ArrayDataHeader.kHeaderSize + 247 bindings.ArrayDataHeader.kHeaderSize +
229 bindings.kPointerSize * i2, 248 bindings.kPointerSize * i2, false);
230 false);
231 { 249 {
232 var si3 = decoder3.decodeDataHeaderForPointerArray( 250 var si3 = decoder3.decodeDataHeaderForPointerArray(
233 bindings.kUnspecifiedArrayLength); 251 bindings.kUnspecifiedArrayLength);
234 result.multiArrayOfStrings[i1][i2] = 252 result.multiArrayOfStrings[i1][i2] =
235 new List<String>(si3.numElements); 253 new List<String>(si3.numElements);
236 for (int i3 = 0; i3 < si3.numElements; ++i3) { 254 for (int i3 = 0; i3 < si3.numElements; ++i3) {
237 var length = bindings.ArrayDataHeader.kHeaderSize + 255 var length = bindings.ArrayDataHeader.kHeaderSize +
238 bindings.kPointerSize * i3; 256 bindings.kPointerSize * i3;
239 result.multiArrayOfStrings[i1][i2][i3] = 257 result.multiArrayOfStrings[i1][i2][i3] =
240 decoder3.decodeString(length, false); 258 decoder3.decodeString(length, false);
241 } 259 }
242 } 260 }
243 } 261 }
244 } 262 }
245 } 263 }
246 } 264 }
247 } 265 }
248 if (mainDataHeader.version > 14) { 266 if (mainDataHeader.version > 14) {
(...skipping 14 matching lines...) Expand all
263 encoder0.encodeStruct(bar, 24, true); 281 encoder0.encodeStruct(bar, 24, true);
264 encoder0.encodeUint8Array( 282 encoder0.encodeUint8Array(
265 data, 32, bindings.kArrayNullable, bindings.kUnspecifiedArrayLength); 283 data, 32, bindings.kArrayNullable, bindings.kUnspecifiedArrayLength);
266 284
267 if (extraBars == null) { 285 if (extraBars == null) {
268 encoder0.encodeNullPointer(40, true); 286 encoder0.encodeNullPointer(40, true);
269 } else { 287 } else {
270 var encoder1 = encoder0.encodePointerArray( 288 var encoder1 = encoder0.encodePointerArray(
271 extraBars.length, 40, bindings.kUnspecifiedArrayLength); 289 extraBars.length, 40, bindings.kUnspecifiedArrayLength);
272 for (int i0 = 0; i0 < extraBars.length; ++i0) { 290 for (int i0 = 0; i0 < extraBars.length; ++i0) {
273 encoder1.encodeStruct( 291 encoder1.encodeStruct(extraBars[i0],
274 extraBars[i0],
275 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i0, 292 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i0,
276 false); 293 false);
277 } 294 }
278 } 295 }
279 296
280 encoder0.encodeString(name, 48, false); 297 encoder0.encodeString(name, 48, false);
281 encoder0.encodeHandleArray(inputStreams, 298 encoder0.encodeHandleArray(inputStreams, 56,
282 56, 299 bindings.kArrayNullable, bindings.kUnspecifiedArrayLength);
283 bindings.kArrayNullable, 300 encoder0.encodeHandleArray(outputStreams, 64, bindings.kArrayNullable,
284 bindings.kUnspecifiedArrayLength); 301 bindings.kUnspecifiedArrayLength);
285 encoder0.encodeHandleArray(outputStreams,
286 64,
287 bindings.kArrayNullable,
288 bindings.kUnspecifiedArrayLength);
289 302
290 if (arrayOfArrayOfBools == null) { 303 if (arrayOfArrayOfBools == null) {
291 encoder0.encodeNullPointer(72, true); 304 encoder0.encodeNullPointer(72, true);
292 } else { 305 } else {
293 var encoder1 = encoder0.encodePointerArray( 306 var encoder1 = encoder0.encodePointerArray(
294 arrayOfArrayOfBools.length, 72, bindings.kUnspecifiedArrayLength); 307 arrayOfArrayOfBools.length, 72, bindings.kUnspecifiedArrayLength);
295 for (int i0 = 0; i0 < arrayOfArrayOfBools.length; ++i0) { 308 for (int i0 = 0; i0 < arrayOfArrayOfBools.length; ++i0) {
296 encoder1.encodeBoolArray( 309 encoder1.encodeBoolArray(arrayOfArrayOfBools[i0],
297 arrayOfArrayOfBools[i0],
298 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i0, 310 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i0,
299 bindings.kNothingNullable, 311 bindings.kNothingNullable, bindings.kUnspecifiedArrayLength);
300 bindings.kUnspecifiedArrayLength);
301 } 312 }
302 } 313 }
303 314
304 if (multiArrayOfStrings == null) { 315 if (multiArrayOfStrings == null) {
305 encoder0.encodeNullPointer(80, true); 316 encoder0.encodeNullPointer(80, true);
306 } else { 317 } else {
307 var encoder1 = encoder0.encodePointerArray( 318 var encoder1 = encoder0.encodePointerArray(
308 multiArrayOfStrings.length, 80, bindings.kUnspecifiedArrayLength); 319 multiArrayOfStrings.length, 80, bindings.kUnspecifiedArrayLength);
309 for (int i0 = 0; i0 < multiArrayOfStrings.length; ++i0) { 320 for (int i0 = 0; i0 < multiArrayOfStrings.length; ++i0) {
310 if (multiArrayOfStrings[i0] == null) { 321 if (multiArrayOfStrings[i0] == null) {
311 encoder1.encodeNullPointer( 322 encoder1.encodeNullPointer(
312 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i0, 323 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i0,
313 false); 324 false);
314 } else { 325 } else {
315 var encoder2 = encoder1.encodePointerArray( 326 var encoder2 = encoder1.encodePointerArray(
316 multiArrayOfStrings[i0].length, 327 multiArrayOfStrings[i0].length,
317 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i0, 328 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i0,
318 bindings.kUnspecifiedArrayLength); 329 bindings.kUnspecifiedArrayLength);
319 for (int i1 = 0; i1 < multiArrayOfStrings[i0].length; ++i1) { 330 for (int i1 = 0; i1 < multiArrayOfStrings[i0].length; ++i1) {
320 if (multiArrayOfStrings[i0][i1] == null) { 331 if (multiArrayOfStrings[i0][i1] == null) {
321 encoder2.encodeNullPointer( 332 encoder2.encodeNullPointer(bindings.ArrayDataHeader.kHeaderSize +
322 bindings.ArrayDataHeader.kHeaderSize + 333 bindings.kPointerSize * i1, false);
323 bindings.kPointerSize * i1,
324 false);
325 } else { 334 } else {
326 var encoder3 = encoder2.encodePointerArray( 335 var encoder3 = encoder2.encodePointerArray(
327 multiArrayOfStrings[i0][i1].length, 336 multiArrayOfStrings[i0][i1].length,
328 bindings.ArrayDataHeader.kHeaderSize + 337 bindings.ArrayDataHeader.kHeaderSize +
329 bindings.kPointerSize * i1, 338 bindings.kPointerSize * i1,
330 bindings.kUnspecifiedArrayLength); 339 bindings.kUnspecifiedArrayLength);
331 for (int i2 = 0; i2 < multiArrayOfStrings[i0][i1].length; ++i2) { 340 for (int i2 = 0; i2 < multiArrayOfStrings[i0][i1].length; ++i2) {
332 var length = bindings.ArrayDataHeader.kHeaderSize + 341 var length = bindings.ArrayDataHeader.kHeaderSize +
333 bindings.kPointerSize * i2; 342 bindings.kPointerSize * i2;
334 encoder3.encodeString( 343 encoder3.encodeString(
335 multiArrayOfStrings[i0][i1][i2], 344 multiArrayOfStrings[i0][i1][i2], length, false);
336 length,
337 false);
338 } 345 }
339 } 346 }
340 } 347 }
341 } 348 }
342 } 349 }
343 } 350 }
344 351
345 encoder0.encodeBoolArray(arrayOfBools, 352 encoder0.encodeBoolArray(arrayOfBools, 88, bindings.kArrayNullable,
346 88, 353 bindings.kUnspecifiedArrayLength);
347 bindings.kArrayNullable,
348 bindings.kUnspecifiedArrayLength);
349 } 354 }
350 } 355 }
351 356
352
353 void testFoo() { 357 void testFoo() {
354 var foo = new Foo(); 358 var foo = new Foo();
355 foo.x = 0x212B4D5; 359 foo.x = 0x212B4D5;
356 foo.y = 0x16E93; 360 foo.y = 0x16E93;
357 foo.a = true; 361 foo.a = true;
358 foo.b = false; 362 foo.b = false;
359 foo.c = true; 363 foo.c = true;
360 foo.bar = new Bar(); 364 foo.bar = new Bar();
361 foo.bar.alpha = 91; 365 foo.bar.alpha = 91;
362 foo.bar.beta = 82; 366 foo.bar.beta = 82;
363 foo.bar.gamma = 73; 367 foo.bar.gamma = 73;
364 foo.data = [ 368 foo.data = [4, 5, 6, 7, 8,];
365 4, 5, 6, 7, 8, 369 foo.extraBars = [new Bar(), new Bar(), new Bar(),];
366 ];
367 foo.extraBars = [
368 new Bar(), new Bar(), new Bar(),
369 ];
370 for (int i = 0; i < foo.extraBars.length; ++i) { 370 for (int i = 0; i < foo.extraBars.length; ++i) {
371 foo.extraBars[i].alpha = 1 * i; 371 foo.extraBars[i].alpha = 1 * i;
372 foo.extraBars[i].beta = 2 * i; 372 foo.extraBars[i].beta = 2 * i;
373 foo.extraBars[i].gamma = 3 * i; 373 foo.extraBars[i].gamma = 3 * i;
374 } 374 }
375 foo.name = "I am a banana"; 375 foo.name = "I am a banana";
376 // This is supposed to be a handle, but we fake it with an integer. 376 // This is supposed to be a handle, but we fake it with an integer.
377 foo.source = new core.MojoHandle(23423782); 377 foo.source = new core.MojoHandle(23423782);
378 foo.arrayOfArrayOfBools = [ 378 foo.arrayOfArrayOfBools = [[true], [false, true]];
379 [true], [false, true] 379 foo.arrayOfBools = [true, false, true, false, true, false, true, true];
380 ];
381 foo.arrayOfBools = [
382 true, false, true, false, true, false, true, true
383 ];
384 380
385 int name = 31; 381 int name = 31;
386 var header = new bindings.MessageHeader(name); 382 var header = new bindings.MessageHeader(name);
387 var message = foo.serializeWithHeader(header); 383 var message = foo.serializeWithHeader(header);
388 384
389 var expectedMemory = new Uint8List.fromList([ 385 var expectedMemory = new Uint8List.fromList([
390 /* 0: */ 16, 0, 0, 0, 2, 0, 0, 0, 386 /* 0: */ 16,
391 /* 8: */ 31, 0, 0, 0, 0, 0, 0, 0, 387 0,
392 /* 16: */ 96, 0, 0, 0, 15, 0, 0, 0, 388 0,
393 /* 24: */ 0xD5, 0xB4, 0x12, 0x02, 0x93, 0x6E, 0x01, 0, 389 0,
394 /* 32: */ 5, 0, 0, 0, 0, 0, 0, 0, 390 2,
395 /* 40: */ 72, 0, 0, 0, 0, 0, 0, 0, 391 0,
392 0,
393 0,
394 /* 8: */ 31,
395 0,
396 0,
397 0,
398 0,
399 0,
400 0,
401 0,
402 /* 16: */ 96,
403 0,
404 0,
405 0,
406 15,
407 0,
408 0,
409 0,
410 /* 24: */ 0xD5,
411 0xB4,
412 0x12,
413 0x02,
414 0x93,
415 0x6E,
416 0x01,
417 0,
418 /* 32: */ 5,
419 0,
420 0,
421 0,
422 0,
423 0,
424 0,
425 0,
426 /* 40: */ 72,
427 0,
428 0,
429 0,
430 0,
431 0,
432 0,
433 0,
396 ]); 434 ]);
397 435
398 var allActualMemory = message.buffer.buffer.asUint8List(); 436 var allActualMemory = message.buffer.buffer.asUint8List();
399 var actualMemory = allActualMemory.sublist(0, expectedMemory.length); 437 var actualMemory = allActualMemory.sublist(0, expectedMemory.length);
400 Expect.listEquals(expectedMemory, actualMemory); 438 Expect.listEquals(expectedMemory, actualMemory);
401 439
402 var expectedHandles = <core.MojoHandle>[ 440 var expectedHandles = <core.MojoHandle>[new core.MojoHandle(23423782),];
403 new core.MojoHandle(23423782),
404 ];
405 441
406 Expect.listEquals(expectedHandles, message.handles); 442 Expect.listEquals(expectedHandles, message.handles);
407 443
408 var receivedMessage = new bindings.ServiceMessage.fromMessage(message); 444 var receivedMessage = new bindings.ServiceMessage.fromMessage(message);
409 445
410 Expect.equals(receivedMessage.header.size, header.size); 446 Expect.equals(receivedMessage.header.size, header.size);
411 Expect.equals(receivedMessage.header.type, header.type); 447 Expect.equals(receivedMessage.header.type, header.type);
412 448
413 var foo2 = Foo.deserialize(receivedMessage.payload); 449 var foo2 = Foo.deserialize(receivedMessage.payload);
414 450
(...skipping 15 matching lines...) Expand all
430 Expect.equals(foo.extraBars[i].beta, foo2.extraBars[i].beta); 466 Expect.equals(foo.extraBars[i].beta, foo2.extraBars[i].beta);
431 Expect.equals(foo.extraBars[i].gamma, foo2.extraBars[i].gamma); 467 Expect.equals(foo.extraBars[i].gamma, foo2.extraBars[i].gamma);
432 Expect.equals(foo.extraBars[i].type, foo2.extraBars[i].type); 468 Expect.equals(foo.extraBars[i].type, foo2.extraBars[i].type);
433 } 469 }
434 470
435 Expect.equals(foo.name, foo2.name); 471 Expect.equals(foo.name, foo2.name);
436 Expect.equals(foo.source, foo2.source); 472 Expect.equals(foo.source, foo2.source);
437 473
438 Expect.listEquals(foo.arrayOfBools, foo2.arrayOfBools); 474 Expect.listEquals(foo.arrayOfBools, foo2.arrayOfBools);
439 for (int i = 0; i < foo2.arrayOfArrayOfBools.length; i++) { 475 for (int i = 0; i < foo2.arrayOfArrayOfBools.length; i++) {
440 Expect.listEquals(foo.arrayOfArrayOfBools[i], 476 Expect.listEquals(foo.arrayOfArrayOfBools[i], foo2.arrayOfArrayOfBools[i]);
441 foo2.arrayOfArrayOfBools[i]);
442 } 477 }
443 } 478 }
444 479
445
446 class Rect extends bindings.Struct { 480 class Rect extends bindings.Struct {
447 static const int kStructSize = 24; 481 static const int kStructSize = 24;
448 static const bindings.StructDataHeader kDefaultStructInfo = 482 static const bindings.StructDataHeader kDefaultStructInfo =
449 const bindings.StructDataHeader(kStructSize, 4); 483 const bindings.StructDataHeader(kStructSize, 4);
450 int x; 484 int x;
451 int y; 485 int y;
452 int width; 486 int width;
453 int height; 487 int height;
454 488
455 Rect() : super(kStructSize); 489 Rect() : super(kStructSize);
(...skipping 24 matching lines...) Expand all
480 } 514 }
481 515
482 void encode(bindings.Encoder encoder) { 516 void encode(bindings.Encoder encoder) {
483 var encoder0 = encoder.getStructEncoderAtOffset(kDefaultStructInfo); 517 var encoder0 = encoder.getStructEncoderAtOffset(kDefaultStructInfo);
484 encoder0.encodeInt32(x, 8); 518 encoder0.encodeInt32(x, 8);
485 encoder0.encodeInt32(y, 12); 519 encoder0.encodeInt32(y, 12);
486 encoder0.encodeInt32(width, 16); 520 encoder0.encodeInt32(width, 16);
487 encoder0.encodeInt32(height, 20); 521 encoder0.encodeInt32(height, 20);
488 } 522 }
489 523
490 bool operator==(Rect other) => 524 bool operator ==(Rect other) => (this.x == other.x) &&
491 (this.x == other.x) &&
492 (this.y == other.y) && 525 (this.y == other.y) &&
493 (this.width == other.width) && 526 (this.width == other.width) &&
494 (this.height == other.height); 527 (this.height == other.height);
495 } 528 }
496 529
497
498 Rect createRect(int x, int y, int width, int height) { 530 Rect createRect(int x, int y, int width, int height) {
499 var r = new Rect(); 531 var r = new Rect();
500 r.x = x; 532 r.x = x;
501 r.y = y; 533 r.y = y;
502 r.width = width; 534 r.width = width;
503 r.height = height; 535 r.height = height;
504 return r; 536 return r;
505 } 537 }
506 538
507
508 class NamedRegion extends bindings.Struct { 539 class NamedRegion extends bindings.Struct {
509 static const int kStructSize = 24; 540 static const int kStructSize = 24;
510 static const bindings.StructDataHeader kDefaultStructInfo = 541 static const bindings.StructDataHeader kDefaultStructInfo =
511 const bindings.StructDataHeader(kStructSize, 2); 542 const bindings.StructDataHeader(kStructSize, 2);
512 String name; 543 String name;
513 List<Rect> rects; 544 List<Rect> rects;
514 545
515 NamedRegion() : super(kStructSize); 546 NamedRegion() : super(kStructSize);
516 547
517 static NamedRegion deserialize(bindings.Message message) { 548 static NamedRegion deserialize(bindings.Message message) {
518 return decode(new bindings.Decoder(message)); 549 return decode(new bindings.Decoder(message));
519 } 550 }
520 551
521 static NamedRegion decode(bindings.Decoder decoder0) { 552 static NamedRegion decode(bindings.Decoder decoder0) {
522 if (decoder0 == null) { 553 if (decoder0 == null) {
523 return null; 554 return null;
524 } 555 }
525 NamedRegion result = new NamedRegion(); 556 NamedRegion result = new NamedRegion();
526 var mainDataHeader = decoder0.decodeStructDataHeader(); 557 var mainDataHeader = decoder0.decodeStructDataHeader();
527 if (mainDataHeader.version > 0) { 558 if (mainDataHeader.version > 0) {
528 result.name = decoder0.decodeString(8, true); 559 result.name = decoder0.decodeString(8, true);
529 } 560 }
530 if (mainDataHeader.version > 1) { 561 if (mainDataHeader.version > 1) {
531 var decoder1 = decoder0.decodePointer(16, true); 562 var decoder1 = decoder0.decodePointer(16, true);
532 if (decoder1 == null) { 563 if (decoder1 == null) {
533 result.rects = null; 564 result.rects = null;
534 } else { 565 } else {
535 var si1 = decoder1.decodeDataHeaderForPointerArray( 566 var si1 = decoder1
536 bindings.kUnspecifiedArrayLength); 567 .decodeDataHeaderForPointerArray(bindings.kUnspecifiedArrayLength);
537 result.rects = new List<Rect>(si1.numElements); 568 result.rects = new List<Rect>(si1.numElements);
538 for (int i1 = 0; i1 < si1.numElements; ++i1) { 569 for (int i1 = 0; i1 < si1.numElements; ++i1) {
539 var decoder2 = decoder1.decodePointer( 570 var decoder2 = decoder1.decodePointer(
540 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i1, 571 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i1,
541 false); 572 false);
542 result.rects[i1] = Rect.decode(decoder2); 573 result.rects[i1] = Rect.decode(decoder2);
543 } 574 }
544 } 575 }
545 } 576 }
546 return result; 577 return result;
547 } 578 }
548 579
549 void encode(bindings.Encoder encoder) { 580 void encode(bindings.Encoder encoder) {
550 var encoder0 = encoder.getStructEncoderAtOffset(kDefaultStructInfo); 581 var encoder0 = encoder.getStructEncoderAtOffset(kDefaultStructInfo);
551 encoder0.encodeString(name, 8, true); 582 encoder0.encodeString(name, 8, true);
552 if (rects == null) { 583 if (rects == null) {
553 encoder0.encodeNullPointer(16, true); 584 encoder0.encodeNullPointer(16, true);
554 } else { 585 } else {
555 var encoder1 = encoder0.encodePointerArray( 586 var encoder1 = encoder0.encodePointerArray(
556 rects.length, 16, bindings.kUnspecifiedArrayLength); 587 rects.length, 16, bindings.kUnspecifiedArrayLength);
557 for (int i0 = 0; i0 < rects.length; ++i0) { 588 for (int i0 = 0; i0 < rects.length; ++i0) {
558 encoder1.encodeStruct( 589 encoder1.encodeStruct(rects[i0],
559 rects[i0],
560 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i0, 590 bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i0,
561 false); 591 false);
562 } 592 }
563 } 593 }
564 } 594 }
565 } 595 }
566 596
567
568 testNamedRegion() { 597 testNamedRegion() {
569 var r = new NamedRegion(); 598 var r = new NamedRegion();
570 r.name = "rectangle"; 599 r.name = "rectangle";
571 r.rects = [createRect(1, 2, 3, 4), createRect(10, 20, 30, 40)]; 600 r.rects = [createRect(1, 2, 3, 4), createRect(10, 20, 30, 40)];
572 601
573 int name = 1; 602 int name = 1;
574 var header = new bindings.MessageHeader(name); 603 var header = new bindings.MessageHeader(name);
575 var message = r.serializeWithHeader(header); 604 var message = r.serializeWithHeader(header);
576 var resultMessage = new bindings.ServiceMessage.fromMessage(message); 605 var resultMessage = new bindings.ServiceMessage.fromMessage(message);
577 var result = NamedRegion.deserialize(resultMessage.payload); 606 var result = NamedRegion.deserialize(resultMessage.payload);
578 607
579 Expect.equals("rectangle", result.name); 608 Expect.equals("rectangle", result.name);
580 Expect.equals(createRect(1, 2, 3, 4), result.rects[0]); 609 Expect.equals(createRect(1, 2, 3, 4), result.rects[0]);
581 Expect.equals(createRect(10, 20, 30, 40), result.rects[1]); 610 Expect.equals(createRect(10, 20, 30, 40), result.rects[1]);
582 } 611 }
583 612
584
585 void testAlign() { 613 void testAlign() {
586 List aligned = [ 614 List aligned = [
587 0, // 0 615 0, // 0
588 8, // 1 616 8, // 1
589 8, // 2 617 8, // 2
590 8, // 3 618 8, // 3
591 8, // 4 619 8, // 4
592 8, // 5 620 8, // 5
593 8, // 6 621 8, // 6
594 8, // 7 622 8, // 7
595 8, // 8 623 8, // 8
596 16, // 9 624 16, // 9
597 16, // 10 625 16, // 10
598 16, // 11 626 16, // 11
599 16, // 12 627 16, // 12
600 16, // 13 628 16, // 13
601 16, // 14 629 16, // 14
602 16, // 15 630 16, // 15
603 16, // 16 631 16, // 16
604 24, // 17 632 24, // 17
605 24, // 18 633 24, // 18
606 24, // 19 634 24, // 19
607 24, // 20 635 24, // 20
608 ]; 636 ];
609 for (int i = 0; i < aligned.length; ++i) { 637 for (int i = 0; i < aligned.length; ++i) {
610 Expect.equals(bindings.align(i), aligned[i]); 638 Expect.equals(bindings.align(i), aligned[i]);
611 } 639 }
612 } 640 }
613 641
614
615 class MojoString extends bindings.Struct { 642 class MojoString extends bindings.Struct {
616 static const int kStructSize = 16; 643 static const int kStructSize = 16;
617 static const bindings.StructDataHeader kDefaultStructInfo = 644 static const bindings.StructDataHeader kDefaultStructInfo =
618 const bindings.StructDataHeader(kStructSize, 1); 645 const bindings.StructDataHeader(kStructSize, 1);
619 String string; 646 String string;
620 MojoString() : super(kStructSize); 647 MojoString() : super(kStructSize);
621 648
622 static MojoString deserialize(bindings.Message message) { 649 static MojoString deserialize(bindings.Message message) {
623 return decode(new bindings.Decoder(message)); 650 return decode(new bindings.Decoder(message));
624 } 651 }
625 652
626 static MojoString decode(bindings.Decoder decoder0) { 653 static MojoString decode(bindings.Decoder decoder0) {
627 if (decoder0 == null) { 654 if (decoder0 == null) {
628 return null; 655 return null;
629 } 656 }
630 MojoString result = new MojoString(); 657 MojoString result = new MojoString();
631 var mainDataHeader = decoder0.decodeStructDataHeader(); 658 var mainDataHeader = decoder0.decodeStructDataHeader();
632 result.string = decoder0.decodeString(8, false); 659 result.string = decoder0.decodeString(8, false);
633 return result; 660 return result;
634 } 661 }
635 662
636 void encode(bindings.Encoder encoder) { 663 void encode(bindings.Encoder encoder) {
637 var encoder0 = encoder.getStructEncoderAtOffset(kDefaultStructInfo); 664 var encoder0 = encoder.getStructEncoderAtOffset(kDefaultStructInfo);
638 encoder0.encodeString(string, 8, false); 665 encoder0.encodeString(string, 8, false);
639 } 666 }
640 } 667 }
641 668
642
643 testUtf8() { 669 testUtf8() {
644 var str = "B\u03ba\u1f79"; // some UCS-2 codepoints. 670 var str = "B\u03ba\u1f79"; // some UCS-2 codepoints.
645 var name = 42; 671 var name = 42;
646 var payloadSize = 24; 672 var payloadSize = 24;
647 673
648 var mojoString = new MojoString(); 674 var mojoString = new MojoString();
649 mojoString.string = str; 675 mojoString.string = str;
650 676
651 var header = new bindings.MessageHeader(name); 677 var header = new bindings.MessageHeader(name);
652 var message = mojoString.serializeWithHeader(header); 678 var message = mojoString.serializeWithHeader(header);
653 var resultMessage = new bindings.ServiceMessage.fromMessage(message); 679 var resultMessage = new bindings.ServiceMessage.fromMessage(message);
654 var result = MojoString.deserialize(resultMessage.payload); 680 var result = MojoString.deserialize(resultMessage.payload);
655 681
656 var expectedMemory = new Uint8List.fromList([ 682 var expectedMemory = new Uint8List.fromList([
657 /* 0: */ 16, 0, 0, 0, 2, 0, 0, 0, 683 /* 0: */ 16,
658 /* 8: */ 42, 0, 0, 0, 0, 0, 0, 0, 684 0,
659 /* 16: */ 16, 0, 0, 0, 1, 0, 0, 0, 685 0,
660 /* 24: */ 8, 0, 0, 0, 0, 0, 0, 0, 686 0,
661 /* 32: */ 14, 0, 0, 0, 6, 0, 0, 0, 687 2,
662 /* 40: */ 0x42, 0xCE, 0xBA, 0xE1, 0xBD, 0xB9, 0, 0, 688 0,
689 0,
690 0,
691 /* 8: */ 42,
692 0,
693 0,
694 0,
695 0,
696 0,
697 0,
698 0,
699 /* 16: */ 16,
700 0,
701 0,
702 0,
703 1,
704 0,
705 0,
706 0,
707 /* 24: */ 8,
708 0,
709 0,
710 0,
711 0,
712 0,
713 0,
714 0,
715 /* 32: */ 14,
716 0,
717 0,
718 0,
719 6,
720 0,
721 0,
722 0,
723 /* 40: */ 0x42,
724 0xCE,
725 0xBA,
726 0xE1,
727 0xBD,
728 0xB9,
729 0,
730 0,
663 ]); 731 ]);
664 var allActualMemory = message.buffer.buffer.asUint8List(); 732 var allActualMemory = message.buffer.buffer.asUint8List();
665 var actualMemory = allActualMemory.sublist(0, expectedMemory.length); 733 var actualMemory = allActualMemory.sublist(0, expectedMemory.length);
666 Expect.equals(expectedMemory.length, actualMemory.length); 734 Expect.equals(expectedMemory.length, actualMemory.length);
667 Expect.listEquals(expectedMemory, actualMemory); 735 Expect.listEquals(expectedMemory, actualMemory);
668 736
669 Expect.equals(str, result.string); 737 Expect.equals(str, result.string);
670 } 738 }
671 739
672
673 main() { 740 main() {
674 testAlign(); 741 testAlign();
675 testBar(); 742 testBar();
676 testFoo(); 743 testFoo();
677 testNamedRegion(); 744 testNamedRegion();
678 testUtf8(); 745 testUtf8();
679 } 746 }
OLDNEW
« no previous file with comments | « mojo/dart/test/bindings_generation_test.dart ('k') | mojo/dart/test/compile_all_interfaces_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698