OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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); |
OLD | NEW |