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

Side by Side Diff: runtime/observatory/tests/service/get_object_rpc_test.dart

Issue 1400393002: Use offset and count to request slices of lists, maps, and typed_data. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: pre review tidy Created 5 years, 2 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
« no previous file with comments | « no previous file | runtime/vm/json_stream.h » ('j') | runtime/vm/service.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 // VMOptions=--error_on_bad_type --error_on_bad_override 4 // VMOptions=--error_on_bad_type --error_on_bad_override
5 5
6 library get_object_rpc_test; 6 library get_object_rpc_test;
7 7
8 import 'dart:typed_data';
8 import 'package:observatory/service_io.dart'; 9 import 'package:observatory/service_io.dart';
10 import 'package:observatory/base64.dart';
Cutch 2015/10/14 17:58:09 dart:convert has a base64 converter now.
turnidge 2015/10/14 18:02:42 Ok -- will switch over when the rest of Observator
9 import 'package:unittest/unittest.dart'; 11 import 'package:unittest/unittest.dart';
10 12
11 import 'test_helper.dart'; 13 import 'test_helper.dart';
12 14
13 class _DummyClass { 15 class _DummyClass {
14 static var dummyVar = 11; 16 static var dummyVar = 11;
15 void dummyFunction() { 17 void dummyFunction() {
16 } 18 }
17 } 19 }
18 20
19 class _DummySubClass extends _DummyClass { 21 class _DummySubClass extends _DummyClass {
20 } 22 }
21 23
22 void warmup() { 24 void warmup() {
23 // Silence analyzer. 25 // Silence analyzer.
24 new _DummySubClass(); 26 new _DummySubClass();
25 new _DummyClass().dummyFunction(); 27 new _DummyClass().dummyFunction();
26 } 28 }
27 29
28 eval(Isolate isolate, String expression) async { 30 eval(Isolate isolate, String expression) async {
29 Map params = { 31 Map params = {
30 'targetId': isolate.rootLibrary.id, 32 'targetId': isolate.rootLibrary.id,
31 'expression': expression, 33 'expression': expression,
32 }; 34 };
33 return await isolate.invokeRpcNoUpgrade('evaluate', params); 35 return await isolate.invokeRpcNoUpgrade('evaluate', params);
34 } 36 }
35 37
38 var uint8List = new Uint8List.fromList([3, 2, 1]);
39 var uint64List = new Uint64List.fromList([3, 2, 1]);
40
36 var tests = [ 41 var tests = [
37 // null object. 42 // null object.
38 (Isolate isolate) async { 43 (Isolate isolate) async {
39 var params = { 44 var params = {
40 'objectId': 'objects/null', 45 'objectId': 'objects/null',
41 }; 46 };
42 var result = await isolate.invokeRpcNoUpgrade('getObject', params); 47 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
43 expect(result['type'], equals('Instance')); 48 expect(result['type'], equals('Instance'));
44 expect(result['kind'], equals('Null')); 49 expect(result['kind'], equals('Null'));
45 expect(result['id'], equals('objects/null')); 50 expect(result['id'], equals('objects/null'));
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 var result = await isolate.invokeRpcNoUpgrade('getObject', params); 97 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
93 expect(result['type'], equals('Instance')); 98 expect(result['type'], equals('Instance'));
94 expect(result['kind'], equals('List')); 99 expect(result['kind'], equals('List'));
95 expect(result['_vmType'], equals('GrowableObjectArray')); 100 expect(result['_vmType'], equals('GrowableObjectArray'));
96 expect(result['id'], startsWith('objects/')); 101 expect(result['id'], startsWith('objects/'));
97 expect(result['valueAsString'], isNull); 102 expect(result['valueAsString'], isNull);
98 expect(result['class']['type'], equals('@Class')); 103 expect(result['class']['type'], equals('@Class'));
99 expect(result['class']['name'], equals('_GrowableList')); 104 expect(result['class']['name'], equals('_GrowableList'));
100 expect(result['size'], isPositive); 105 expect(result['size'], isPositive);
101 expect(result['fields'], isEmpty); 106 expect(result['fields'], isEmpty);
107 expect(result['length'], equals(3));
108 expect(result['offset'], isNull);
109 expect(result['count'], isNull);
102 expect(result['elements'].length, equals(3)); 110 expect(result['elements'].length, equals(3));
103 expect(result['elements'][0]['type'], equals('@Instance')); 111 expect(result['elements'][0]['type'], equals('@Instance'));
104 expect(result['elements'][0]['kind'], equals('Int')); 112 expect(result['elements'][0]['kind'], equals('Int'));
105 expect(result['elements'][0]['valueAsString'], equals('3')); 113 expect(result['elements'][0]['valueAsString'], equals('3'));
114 expect(result['elements'][1]['type'], equals('@Instance'));
115 expect(result['elements'][1]['kind'], equals('Int'));
116 expect(result['elements'][1]['valueAsString'], equals('2'));
117 expect(result['elements'][2]['type'], equals('@Instance'));
118 expect(result['elements'][2]['kind'], equals('Int'));
119 expect(result['elements'][2]['valueAsString'], equals('1'));
120 },
121
122 // List prefix.
123 (Isolate isolate) async {
124 // Call eval to get a Dart list.
125 var evalResult = await eval(isolate, '[3, 2, 1]');
126 var params = {
127 'objectId': evalResult['id'],
128 'count': 2,
129 };
130 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
131 expect(result['type'], equals('Instance'));
132 expect(result['kind'], equals('List'));
133 expect(result['_vmType'], equals('GrowableObjectArray'));
134 expect(result['id'], startsWith('objects/'));
135 expect(result['valueAsString'], isNull);
136 expect(result['class']['type'], equals('@Class'));
137 expect(result['class']['name'], equals('_GrowableList'));
138 expect(result['size'], isPositive);
139 expect(result['fields'], isEmpty);
140 expect(result['length'], equals(3));
141 expect(result['offset'], isNull);
142 expect(result['count'], equals(2));
143 expect(result['elements'].length, equals(2));
144 expect(result['elements'][0]['type'], equals('@Instance'));
145 expect(result['elements'][0]['kind'], equals('Int'));
146 expect(result['elements'][0]['valueAsString'], equals('3'));
147 expect(result['elements'][1]['type'], equals('@Instance'));
148 expect(result['elements'][1]['kind'], equals('Int'));
149 expect(result['elements'][1]['valueAsString'], equals('2'));
150 },
151
152 // List suffix.
153 (Isolate isolate) async {
154 // Call eval to get a Dart list.
155 var evalResult = await eval(isolate, '[3, 2, 1]');
156 var params = {
157 'objectId': evalResult['id'],
158 'offset': 2,
159 'count': 2,
160 };
161 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
162 expect(result['type'], equals('Instance'));
163 expect(result['kind'], equals('List'));
164 expect(result['_vmType'], equals('GrowableObjectArray'));
165 expect(result['id'], startsWith('objects/'));
166 expect(result['valueAsString'], isNull);
167 expect(result['class']['type'], equals('@Class'));
168 expect(result['class']['name'], equals('_GrowableList'));
169 expect(result['size'], isPositive);
170 expect(result['fields'], isEmpty);
171 expect(result['length'], equals(3));
172 expect(result['offset'], equals(2));
173 expect(result['count'], equals(1));
174 expect(result['elements'].length, equals(1));
175 expect(result['elements'][0]['type'], equals('@Instance'));
176 expect(result['elements'][0]['kind'], equals('Int'));
177 expect(result['elements'][0]['valueAsString'], equals('1'));
178 },
179
180 // List with wacky offset.
181 (Isolate isolate) async {
182 // Call eval to get a Dart list.
183 var evalResult = await eval(isolate, '[3, 2, 1]');
184 var params = {
185 'objectId': evalResult['id'],
186 'offset': 100,
187 'count': 2,
188 };
189 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
190 expect(result['type'], equals('Instance'));
191 expect(result['kind'], equals('List'));
192 expect(result['_vmType'], equals('GrowableObjectArray'));
193 expect(result['id'], startsWith('objects/'));
194 expect(result['valueAsString'], isNull);
195 expect(result['class']['type'], equals('@Class'));
196 expect(result['class']['name'], equals('_GrowableList'));
197 expect(result['size'], isPositive);
198 expect(result['fields'], isEmpty);
199 expect(result['length'], equals(3));
200 expect(result['offset'], equals(3));
201 expect(result['count'], equals(0));
202 expect(result['elements'], isEmpty);
106 }, 203 },
107 204
108 // A built-in Map. 205 // A built-in Map.
109 (Isolate isolate) async { 206 (Isolate isolate) async {
110 // Call eval to get a Dart map. 207 // Call eval to get a Dart map.
111 var evalResult = await eval(isolate, '{"x": 3, "y": 4}'); 208 var evalResult = await eval(isolate, '{"x": 3, "y": 4, "z": 5}');
112 var params = { 209 var params = {
113 'objectId': evalResult['id'], 210 'objectId': evalResult['id'],
114 }; 211 };
115 var result = await isolate.invokeRpcNoUpgrade('getObject', params); 212 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
116 expect(result['type'], equals('Instance')); 213 expect(result['type'], equals('Instance'));
117 expect(result['kind'], equals('Map')); 214 expect(result['kind'], equals('Map'));
118 expect(result['_vmType'], equals('LinkedHashMap')); 215 expect(result['_vmType'], equals('LinkedHashMap'));
119 expect(result['id'], startsWith('objects/')); 216 expect(result['id'], startsWith('objects/'));
120 expect(result['valueAsString'], isNull); 217 expect(result['valueAsString'], isNull);
121 expect(result['class']['type'], equals('@Class')); 218 expect(result['class']['type'], equals('@Class'));
122 expect(result['class']['name'], equals('_InternalLinkedHashMap')); 219 expect(result['class']['name'], equals('_InternalLinkedHashMap'));
123 expect(result['size'], isPositive); 220 expect(result['size'], isPositive);
124 expect(result['fields'], isEmpty); 221 expect(result['fields'], isEmpty);
222 expect(result['length'], equals(3));
223 expect(result['offset'], isNull);
224 expect(result['count'], isNull);
225 expect(result['associations'].length, equals(3));
226 expect(result['associations'][0]['key']['type'], equals('@Instance'));
227 expect(result['associations'][0]['key']['kind'], equals('String'));
228 expect(result['associations'][0]['key']['valueAsString'], equals('x'));
229 expect(result['associations'][0]['value']['type'], equals('@Instance'));
230 expect(result['associations'][0]['value']['kind'], equals('Int'));
231 expect(result['associations'][0]['value']['valueAsString'], equals('3'));
232 expect(result['associations'][1]['key']['type'], equals('@Instance'));
233 expect(result['associations'][1]['key']['kind'], equals('String'));
234 expect(result['associations'][1]['key']['valueAsString'], equals('y'));
235 expect(result['associations'][1]['value']['type'], equals('@Instance'));
236 expect(result['associations'][1]['value']['kind'], equals('Int'));
237 expect(result['associations'][1]['value']['valueAsString'], equals('4'));
238 expect(result['associations'][2]['key']['type'], equals('@Instance'));
239 expect(result['associations'][2]['key']['kind'], equals('String'));
240 expect(result['associations'][2]['key']['valueAsString'], equals('z'));
241 expect(result['associations'][2]['value']['type'], equals('@Instance'));
242 expect(result['associations'][2]['value']['kind'], equals('Int'));
243 expect(result['associations'][2]['value']['valueAsString'], equals('5'));
244 },
245
246 // Map prefix.
247 (Isolate isolate) async {
248 // Call eval to get a Dart map.
249 var evalResult = await eval(isolate, '{"x": 3, "y": 4, "z": 5}');
250 var params = {
251 'objectId': evalResult['id'],
252 'count': 2,
253 };
254 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
255 expect(result['type'], equals('Instance'));
256 expect(result['kind'], equals('Map'));
257 expect(result['_vmType'], equals('LinkedHashMap'));
258 expect(result['id'], startsWith('objects/'));
259 expect(result['valueAsString'], isNull);
260 expect(result['class']['type'], equals('@Class'));
261 expect(result['class']['name'], equals('_InternalLinkedHashMap'));
262 expect(result['size'], isPositive);
263 expect(result['fields'], isEmpty);
264 expect(result['length'], equals(3));
265 expect(result['offset'], isNull);
266 expect(result['count'], equals(2));
125 expect(result['associations'].length, equals(2)); 267 expect(result['associations'].length, equals(2));
126 expect(result['associations'][0]['key']['type'], equals('@Instance')); 268 expect(result['associations'][0]['key']['type'], equals('@Instance'));
127 expect(result['associations'][0]['key']['kind'], equals('String')); 269 expect(result['associations'][0]['key']['kind'], equals('String'));
128 expect(result['associations'][0]['key']['valueAsString'], equals('x')); 270 expect(result['associations'][0]['key']['valueAsString'], equals('x'));
129 expect(result['associations'][0]['value']['type'], equals('@Instance')); 271 expect(result['associations'][0]['value']['type'], equals('@Instance'));
130 expect(result['associations'][0]['value']['kind'], equals('Int')); 272 expect(result['associations'][0]['value']['kind'], equals('Int'));
131 expect(result['associations'][0]['value']['valueAsString'], equals('3')); 273 expect(result['associations'][0]['value']['valueAsString'], equals('3'));
132 expect(result['associations'][1]['key']['type'], equals('@Instance')); 274 expect(result['associations'][1]['key']['type'], equals('@Instance'));
133 expect(result['associations'][1]['key']['kind'], equals('String')); 275 expect(result['associations'][1]['key']['kind'], equals('String'));
134 expect(result['associations'][1]['key']['valueAsString'], equals('y')); 276 expect(result['associations'][1]['key']['valueAsString'], equals('y'));
135 expect(result['associations'][1]['value']['type'], equals('@Instance')); 277 expect(result['associations'][1]['value']['type'], equals('@Instance'));
136 expect(result['associations'][1]['value']['kind'], equals('Int')); 278 expect(result['associations'][1]['value']['kind'], equals('Int'));
137 expect(result['associations'][1]['value']['valueAsString'], equals('4')); 279 expect(result['associations'][1]['value']['valueAsString'], equals('4'));
138 }, 280 },
139 281
282 // Map suffix.
283 (Isolate isolate) async {
284 // Call eval to get a Dart map.
285 var evalResult = await eval(isolate, '{"x": 3, "y": 4, "z": 5}');
286 var params = {
287 'objectId': evalResult['id'],
288 'offset': 2,
289 'count': 2,
290 };
291 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
292 expect(result['type'], equals('Instance'));
293 expect(result['kind'], equals('Map'));
294 expect(result['_vmType'], equals('LinkedHashMap'));
295 expect(result['id'], startsWith('objects/'));
296 expect(result['valueAsString'], isNull);
297 expect(result['class']['type'], equals('@Class'));
298 expect(result['class']['name'], equals('_InternalLinkedHashMap'));
299 expect(result['size'], isPositive);
300 expect(result['fields'], isEmpty);
301 expect(result['length'], equals(3));
302 expect(result['offset'], equals(2));
303 expect(result['count'], equals(1));
304 expect(result['associations'].length, equals(1));
305 expect(result['associations'][0]['key']['type'], equals('@Instance'));
306 expect(result['associations'][0]['key']['kind'], equals('String'));
307 expect(result['associations'][0]['key']['valueAsString'], equals('z'));
308 expect(result['associations'][0]['value']['type'], equals('@Instance'));
309 expect(result['associations'][0]['value']['kind'], equals('Int'));
310 expect(result['associations'][0]['value']['valueAsString'], equals('5'));
311 },
312
313 // Map with wacky offset
314 (Isolate isolate) async {
315 // Call eval to get a Dart map.
316 var evalResult = await eval(isolate, '{"x": 3, "y": 4, "z": 5}');
317 var params = {
318 'objectId': evalResult['id'],
319 'offset': 100,
320 'count': 2,
321 };
322 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
323 expect(result['type'], equals('Instance'));
324 expect(result['kind'], equals('Map'));
325 expect(result['_vmType'], equals('LinkedHashMap'));
326 expect(result['id'], startsWith('objects/'));
327 expect(result['valueAsString'], isNull);
328 expect(result['class']['type'], equals('@Class'));
329 expect(result['class']['name'], equals('_InternalLinkedHashMap'));
330 expect(result['size'], isPositive);
331 expect(result['fields'], isEmpty);
332 expect(result['length'], equals(3));
333 expect(result['offset'], equals(3));
334 expect(result['count'], equals(0));
335 expect(result['associations'], isEmpty);
336 },
337
338 // Uint8List.
339 (Isolate isolate) async {
340 // Call eval to get a Dart list.
341 var evalResult = await eval(isolate, 'uint8List');
342 var params = {
343 'objectId': evalResult['id'],
344 };
345 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
346 expect(result['type'], equals('Instance'));
347 expect(result['kind'], equals('Uint8List'));
348 expect(result['_vmType'], equals('TypedData'));
349 expect(result['id'], startsWith('objects/'));
350 expect(result['valueAsString'], isNull);
351 expect(result['class']['type'], equals('@Class'));
352 expect(result['class']['name'], equals('_Uint8Array'));
353 expect(result['size'], isPositive);
354 expect(result['fields'], isEmpty);
355 expect(result['length'], equals(3));
356 expect(result['offset'], isNull);
357 expect(result['count'], isNull);
358 expect(result['bytes'], equals('AwIB'));
359 var bytes = decodeBase64(result['bytes']);
360 expect(bytes.buffer.asUint8List().toString(), equals('[3, 2, 1]'));
361 },
362
363 // Uint8List prefix.
364 (Isolate isolate) async {
365 // Call eval to get a Dart list.
366 var evalResult = await eval(isolate, 'uint8List');
367 var params = {
368 'objectId': evalResult['id'],
369 'count' : 2,
370 };
371 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
372 expect(result['type'], equals('Instance'));
373 expect(result['kind'], equals('Uint8List'));
374 expect(result['_vmType'], equals('TypedData'));
375 expect(result['id'], startsWith('objects/'));
376 expect(result['valueAsString'], isNull);
377 expect(result['class']['type'], equals('@Class'));
378 expect(result['class']['name'], equals('_Uint8Array'));
379 expect(result['size'], isPositive);
380 expect(result['fields'], isEmpty);
381 expect(result['length'], equals(3));
382 expect(result['offset'], isNull);
383 expect(result['count'], equals(2));
384 expect(result['bytes'], equals('AwI='));
385 var bytes = decodeBase64(result['bytes']);
386 expect(bytes.buffer.asUint8List().toString(), equals('[3, 2]'));
387 },
388
389 // Uint8List suffix.
390 (Isolate isolate) async {
391 // Call eval to get a Dart list.
392 var evalResult = await eval(isolate, 'uint8List');
393 var params = {
394 'objectId': evalResult['id'],
395 'offset' : 2,
396 'count' : 2,
397 };
398 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
399 expect(result['type'], equals('Instance'));
400 expect(result['kind'], equals('Uint8List'));
401 expect(result['_vmType'], equals('TypedData'));
402 expect(result['id'], startsWith('objects/'));
403 expect(result['valueAsString'], isNull);
404 expect(result['class']['type'], equals('@Class'));
405 expect(result['class']['name'], equals('_Uint8Array'));
406 expect(result['size'], isPositive);
407 expect(result['fields'], isEmpty);
408 expect(result['length'], equals(3));
409 expect(result['offset'], equals(2));
410 expect(result['count'], equals(1));
411 expect(result['bytes'], equals('AQ=='));
412 var bytes = decodeBase64(result['bytes']);
413 expect(bytes.buffer.asUint8List().toString(), equals('[1]'));
414 },
415
416 // Uint8List with wacky offset.
417 (Isolate isolate) async {
418 // Call eval to get a Dart list.
419 var evalResult = await eval(isolate, 'uint8List');
420 var params = {
421 'objectId': evalResult['id'],
422 'offset' : 100,
423 'count' : 2,
424 };
425 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
426 expect(result['type'], equals('Instance'));
427 expect(result['kind'], equals('Uint8List'));
428 expect(result['_vmType'], equals('TypedData'));
429 expect(result['id'], startsWith('objects/'));
430 expect(result['valueAsString'], isNull);
431 expect(result['class']['type'], equals('@Class'));
432 expect(result['class']['name'], equals('_Uint8Array'));
433 expect(result['size'], isPositive);
434 expect(result['fields'], isEmpty);
435 expect(result['length'], equals(3));
436 expect(result['offset'], equals(3));
437 expect(result['count'], equals(0));
438 expect(result['bytes'], equals(''));
439 },
440
441 // Uint64List.
442 (Isolate isolate) async {
443 // Call eval to get a Dart list.
444 var evalResult = await eval(isolate, 'uint64List');
445 var params = {
446 'objectId': evalResult['id'],
447 };
448 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
449 expect(result['type'], equals('Instance'));
450 expect(result['kind'], equals('Uint64List'));
451 expect(result['_vmType'], equals('TypedData'));
452 expect(result['id'], startsWith('objects/'));
453 expect(result['valueAsString'], isNull);
454 expect(result['class']['type'], equals('@Class'));
455 expect(result['class']['name'], equals('_Uint64Array'));
456 expect(result['size'], isPositive);
457 expect(result['fields'], isEmpty);
458 expect(result['length'], equals(3));
459 expect(result['offset'], isNull);
460 expect(result['count'], isNull);
461 expect(result['bytes'], equals('AwAAAAAAAAACAAAAAAAAAAEAAAAAAAAA'));
462 var bytes = decodeBase64(result['bytes']);
463 expect(bytes.buffer.asUint64List().toString(), equals('[3, 2, 1]'));
464 },
465
466 // Uint64List prefix.
467 (Isolate isolate) async {
468 // Call eval to get a Dart list.
469 var evalResult = await eval(isolate, 'uint64List');
470 var params = {
471 'objectId': evalResult['id'],
472 'count' : 2,
473 };
474 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
475 expect(result['type'], equals('Instance'));
476 expect(result['kind'], equals('Uint64List'));
477 expect(result['_vmType'], equals('TypedData'));
478 expect(result['id'], startsWith('objects/'));
479 expect(result['valueAsString'], isNull);
480 expect(result['class']['type'], equals('@Class'));
481 expect(result['class']['name'], equals('_Uint64Array'));
482 expect(result['size'], isPositive);
483 expect(result['fields'], isEmpty);
484 expect(result['length'], equals(3));
485 expect(result['offset'], isNull);
486 expect(result['count'], equals(2));
487 expect(result['bytes'], equals('AwAAAAAAAAACAAAAAAAAAA=='));
488 var bytes = decodeBase64(result['bytes']);
489 expect(bytes.buffer.asUint64List().toString(), equals('[3, 2]'));
490 },
491
492 // Uint64List suffix.
493 (Isolate isolate) async {
494 // Call eval to get a Dart list.
495 var evalResult = await eval(isolate, 'uint64List');
496 var params = {
497 'objectId': evalResult['id'],
498 'offset' : 2,
499 'count' : 2,
500 };
501 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
502 expect(result['type'], equals('Instance'));
503 expect(result['kind'], equals('Uint64List'));
504 expect(result['_vmType'], equals('TypedData'));
505 expect(result['id'], startsWith('objects/'));
506 expect(result['valueAsString'], isNull);
507 expect(result['class']['type'], equals('@Class'));
508 expect(result['class']['name'], equals('_Uint64Array'));
509 expect(result['size'], isPositive);
510 expect(result['fields'], isEmpty);
511 expect(result['length'], equals(3));
512 expect(result['offset'], equals(2));
513 expect(result['count'], equals(1));
514 expect(result['bytes'], equals('AQAAAAAAAAA='));
515 var bytes = decodeBase64(result['bytes']);
516 expect(bytes.buffer.asUint64List().toString(), equals('[1]'));
517 },
518
519 // Uint64List with wacky offset.
520 (Isolate isolate) async {
521 // Call eval to get a Dart list.
522 var evalResult = await eval(isolate, 'uint64List');
523 var params = {
524 'objectId': evalResult['id'],
525 'offset' : 100,
526 'count' : 2,
527 };
528 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
529 expect(result['type'], equals('Instance'));
530 expect(result['kind'], equals('Uint64List'));
531 expect(result['_vmType'], equals('TypedData'));
532 expect(result['id'], startsWith('objects/'));
533 expect(result['valueAsString'], isNull);
534 expect(result['class']['type'], equals('@Class'));
535 expect(result['class']['name'], equals('_Uint64Array'));
536 expect(result['size'], isPositive);
537 expect(result['fields'], isEmpty);
538 expect(result['length'], equals(3));
539 expect(result['offset'], equals(3));
540 expect(result['count'], equals(0));
541 expect(result['bytes'], equals(''));
542 },
543
140 // An expired object. 544 // An expired object.
141 (Isolate isolate) async { 545 (Isolate isolate) async {
142 var params = { 546 var params = {
143 'objectId': 'objects/99999999', 547 'objectId': 'objects/99999999',
144 }; 548 };
145 var result = await isolate.invokeRpcNoUpgrade('getObject', params); 549 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
146 expect(result['type'], equals('Sentinel')); 550 expect(result['type'], equals('Sentinel'));
147 expect(result['kind'], startsWith('Expired')); 551 expect(result['kind'], startsWith('Expired'));
148 expect(result['valueAsString'], equals('<expired>')); 552 expect(result['valueAsString'], equals('<expired>'));
149 expect(result['class'], isNull); 553 expect(result['class'], isNull);
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
451 caughtException = true; 855 caughtException = true;
452 expect(e.code, equals(ServerRpcException.kInvalidParams)); 856 expect(e.code, equals(ServerRpcException.kInvalidParams));
453 expect(e.message, 857 expect(e.message,
454 "getObject: invalid 'objectId' parameter: code/0"); 858 "getObject: invalid 'objectId' parameter: code/0");
455 } 859 }
456 expect(caughtException, isTrue); 860 expect(caughtException, isTrue);
457 }, 861 },
458 ]; 862 ];
459 863
460 main(args) async => runIsolateTests(args, tests, testeeBefore:warmup); 864 main(args) async => runIsolateTests(args, tests, testeeBefore:warmup);
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/json_stream.h » ('j') | runtime/vm/service.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698