| 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 'dart:typed_data'; |
| 9 import 'dart:convert' show BASE64; | 9 import 'dart:convert' show BASE64; |
| 10 import 'package:observatory/service_io.dart'; | 10 import 'package:observatory/service_io.dart'; |
| 11 import 'package:unittest/unittest.dart'; | 11 import 'package:unittest/unittest.dart'; |
| 12 import 'test_helper.dart'; | 12 import 'test_helper.dart'; |
| 13 | 13 |
| 14 class _DummyClass { | 14 class _DummyClass { |
| 15 static var dummyVar = 11; | 15 static var dummyVar = 11; |
| 16 void dummyFunction() {} | 16 void dummyFunction() { |
| 17 } |
| 17 } | 18 } |
| 18 | 19 |
| 19 class _DummySubClass extends _DummyClass {} | 20 class _DummySubClass extends _DummyClass { |
| 21 } |
| 20 | 22 |
| 21 void warmup() { | 23 void warmup() { |
| 22 // Silence analyzer. | 24 // Silence analyzer. |
| 23 new _DummySubClass(); | 25 new _DummySubClass(); |
| 24 new _DummyClass().dummyFunction(); | 26 new _DummyClass().dummyFunction(); |
| 25 } | 27 } |
| 26 | 28 |
| 27 eval(Isolate isolate, String expression) async { | 29 eval(Isolate isolate, String expression) async { |
| 28 Map params = { | 30 Map params = { |
| 29 'targetId': isolate.rootLibrary.id, | 31 'targetId': isolate.rootLibrary.id, |
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 Uint8List bytes = BASE64.decode(result['bytes']); | 451 Uint8List bytes = BASE64.decode(result['bytes']); |
| 450 expect(bytes.buffer.asUint8List().toString(), equals('[3, 2, 1]')); | 452 expect(bytes.buffer.asUint8List().toString(), equals('[3, 2, 1]')); |
| 451 }, | 453 }, |
| 452 | 454 |
| 453 // Uint8List prefix. | 455 // Uint8List prefix. |
| 454 (Isolate isolate) async { | 456 (Isolate isolate) async { |
| 455 // Call eval to get a Dart list. | 457 // Call eval to get a Dart list. |
| 456 var evalResult = await eval(isolate, 'uint8List'); | 458 var evalResult = await eval(isolate, 'uint8List'); |
| 457 var params = { | 459 var params = { |
| 458 'objectId': evalResult['id'], | 460 'objectId': evalResult['id'], |
| 459 'count': 2, | 461 'count' : 2, |
| 460 }; | 462 }; |
| 461 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 463 var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
| 462 expect(result['type'], equals('Instance')); | 464 expect(result['type'], equals('Instance')); |
| 463 expect(result['kind'], equals('Uint8List')); | 465 expect(result['kind'], equals('Uint8List')); |
| 464 expect(result['_vmType'], equals('TypedData')); | 466 expect(result['_vmType'], equals('TypedData')); |
| 465 expect(result['id'], startsWith('objects/')); | 467 expect(result['id'], startsWith('objects/')); |
| 466 expect(result['valueAsString'], isNull); | 468 expect(result['valueAsString'], isNull); |
| 467 expect(result['class']['type'], equals('@Class')); | 469 expect(result['class']['type'], equals('@Class')); |
| 468 expect(result['class']['name'], equals('_Uint8List')); | 470 expect(result['class']['name'], equals('_Uint8List')); |
| 469 expect(result['size'], isPositive); | 471 expect(result['size'], isPositive); |
| 470 expect(result['fields'], isEmpty); | 472 expect(result['fields'], isEmpty); |
| 471 expect(result['length'], equals(3)); | 473 expect(result['length'], equals(3)); |
| 472 expect(result['offset'], isNull); | 474 expect(result['offset'], isNull); |
| 473 expect(result['count'], equals(2)); | 475 expect(result['count'], equals(2)); |
| 474 expect(result['bytes'], equals('AwI=')); | 476 expect(result['bytes'], equals('AwI=')); |
| 475 Uint8List bytes = BASE64.decode(result['bytes']); | 477 Uint8List bytes = BASE64.decode(result['bytes']); |
| 476 expect(bytes.buffer.asUint8List().toString(), equals('[3, 2]')); | 478 expect(bytes.buffer.asUint8List().toString(), equals('[3, 2]')); |
| 477 }, | 479 }, |
| 478 | 480 |
| 479 // Uint8List suffix. | 481 // Uint8List suffix. |
| 480 (Isolate isolate) async { | 482 (Isolate isolate) async { |
| 481 // Call eval to get a Dart list. | 483 // Call eval to get a Dart list. |
| 482 var evalResult = await eval(isolate, 'uint8List'); | 484 var evalResult = await eval(isolate, 'uint8List'); |
| 483 var params = { | 485 var params = { |
| 484 'objectId': evalResult['id'], | 486 'objectId': evalResult['id'], |
| 485 'offset': 2, | 487 'offset' : 2, |
| 486 'count': 2, | 488 'count' : 2, |
| 487 }; | 489 }; |
| 488 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 490 var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
| 489 expect(result['type'], equals('Instance')); | 491 expect(result['type'], equals('Instance')); |
| 490 expect(result['kind'], equals('Uint8List')); | 492 expect(result['kind'], equals('Uint8List')); |
| 491 expect(result['_vmType'], equals('TypedData')); | 493 expect(result['_vmType'], equals('TypedData')); |
| 492 expect(result['id'], startsWith('objects/')); | 494 expect(result['id'], startsWith('objects/')); |
| 493 expect(result['valueAsString'], isNull); | 495 expect(result['valueAsString'], isNull); |
| 494 expect(result['class']['type'], equals('@Class')); | 496 expect(result['class']['type'], equals('@Class')); |
| 495 expect(result['class']['name'], equals('_Uint8List')); | 497 expect(result['class']['name'], equals('_Uint8List')); |
| 496 expect(result['size'], isPositive); | 498 expect(result['size'], isPositive); |
| 497 expect(result['fields'], isEmpty); | 499 expect(result['fields'], isEmpty); |
| 498 expect(result['length'], equals(3)); | 500 expect(result['length'], equals(3)); |
| 499 expect(result['offset'], equals(2)); | 501 expect(result['offset'], equals(2)); |
| 500 expect(result['count'], equals(1)); | 502 expect(result['count'], equals(1)); |
| 501 expect(result['bytes'], equals('AQ==')); | 503 expect(result['bytes'], equals('AQ==')); |
| 502 Uint8List bytes = BASE64.decode(result['bytes']); | 504 Uint8List bytes = BASE64.decode(result['bytes']); |
| 503 expect(bytes.buffer.asUint8List().toString(), equals('[1]')); | 505 expect(bytes.buffer.asUint8List().toString(), equals('[1]')); |
| 504 }, | 506 }, |
| 505 | 507 |
| 506 // Uint8List with wacky offset. | 508 // Uint8List with wacky offset. |
| 507 (Isolate isolate) async { | 509 (Isolate isolate) async { |
| 508 // Call eval to get a Dart list. | 510 // Call eval to get a Dart list. |
| 509 var evalResult = await eval(isolate, 'uint8List'); | 511 var evalResult = await eval(isolate, 'uint8List'); |
| 510 var params = { | 512 var params = { |
| 511 'objectId': evalResult['id'], | 513 'objectId': evalResult['id'], |
| 512 'offset': 100, | 514 'offset' : 100, |
| 513 'count': 2, | 515 'count' : 2, |
| 514 }; | 516 }; |
| 515 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 517 var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
| 516 expect(result['type'], equals('Instance')); | 518 expect(result['type'], equals('Instance')); |
| 517 expect(result['kind'], equals('Uint8List')); | 519 expect(result['kind'], equals('Uint8List')); |
| 518 expect(result['_vmType'], equals('TypedData')); | 520 expect(result['_vmType'], equals('TypedData')); |
| 519 expect(result['id'], startsWith('objects/')); | 521 expect(result['id'], startsWith('objects/')); |
| 520 expect(result['valueAsString'], isNull); | 522 expect(result['valueAsString'], isNull); |
| 521 expect(result['class']['type'], equals('@Class')); | 523 expect(result['class']['type'], equals('@Class')); |
| 522 expect(result['class']['name'], equals('_Uint8List')); | 524 expect(result['class']['name'], equals('_Uint8List')); |
| 523 expect(result['size'], isPositive); | 525 expect(result['size'], isPositive); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 552 Uint8List bytes = BASE64.decode(result['bytes']); | 554 Uint8List bytes = BASE64.decode(result['bytes']); |
| 553 expect(bytes.buffer.asUint64List().toString(), equals('[3, 2, 1]')); | 555 expect(bytes.buffer.asUint64List().toString(), equals('[3, 2, 1]')); |
| 554 }, | 556 }, |
| 555 | 557 |
| 556 // Uint64List prefix. | 558 // Uint64List prefix. |
| 557 (Isolate isolate) async { | 559 (Isolate isolate) async { |
| 558 // Call eval to get a Dart list. | 560 // Call eval to get a Dart list. |
| 559 var evalResult = await eval(isolate, 'uint64List'); | 561 var evalResult = await eval(isolate, 'uint64List'); |
| 560 var params = { | 562 var params = { |
| 561 'objectId': evalResult['id'], | 563 'objectId': evalResult['id'], |
| 562 'count': 2, | 564 'count' : 2, |
| 563 }; | 565 }; |
| 564 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 566 var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
| 565 expect(result['type'], equals('Instance')); | 567 expect(result['type'], equals('Instance')); |
| 566 expect(result['kind'], equals('Uint64List')); | 568 expect(result['kind'], equals('Uint64List')); |
| 567 expect(result['_vmType'], equals('TypedData')); | 569 expect(result['_vmType'], equals('TypedData')); |
| 568 expect(result['id'], startsWith('objects/')); | 570 expect(result['id'], startsWith('objects/')); |
| 569 expect(result['valueAsString'], isNull); | 571 expect(result['valueAsString'], isNull); |
| 570 expect(result['class']['type'], equals('@Class')); | 572 expect(result['class']['type'], equals('@Class')); |
| 571 expect(result['class']['name'], equals('_Uint64List')); | 573 expect(result['class']['name'], equals('_Uint64List')); |
| 572 expect(result['size'], isPositive); | 574 expect(result['size'], isPositive); |
| 573 expect(result['fields'], isEmpty); | 575 expect(result['fields'], isEmpty); |
| 574 expect(result['length'], equals(3)); | 576 expect(result['length'], equals(3)); |
| 575 expect(result['offset'], isNull); | 577 expect(result['offset'], isNull); |
| 576 expect(result['count'], equals(2)); | 578 expect(result['count'], equals(2)); |
| 577 expect(result['bytes'], equals('AwAAAAAAAAACAAAAAAAAAA==')); | 579 expect(result['bytes'], equals('AwAAAAAAAAACAAAAAAAAAA==')); |
| 578 Uint8List bytes = BASE64.decode(result['bytes']); | 580 Uint8List bytes = BASE64.decode(result['bytes']); |
| 579 expect(bytes.buffer.asUint64List().toString(), equals('[3, 2]')); | 581 expect(bytes.buffer.asUint64List().toString(), equals('[3, 2]')); |
| 580 }, | 582 }, |
| 581 | 583 |
| 582 // Uint64List suffix. | 584 // Uint64List suffix. |
| 583 (Isolate isolate) async { | 585 (Isolate isolate) async { |
| 584 // Call eval to get a Dart list. | 586 // Call eval to get a Dart list. |
| 585 var evalResult = await eval(isolate, 'uint64List'); | 587 var evalResult = await eval(isolate, 'uint64List'); |
| 586 var params = { | 588 var params = { |
| 587 'objectId': evalResult['id'], | 589 'objectId': evalResult['id'], |
| 588 'offset': 2, | 590 'offset' : 2, |
| 589 'count': 2, | 591 'count' : 2, |
| 590 }; | 592 }; |
| 591 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 593 var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
| 592 expect(result['type'], equals('Instance')); | 594 expect(result['type'], equals('Instance')); |
| 593 expect(result['kind'], equals('Uint64List')); | 595 expect(result['kind'], equals('Uint64List')); |
| 594 expect(result['_vmType'], equals('TypedData')); | 596 expect(result['_vmType'], equals('TypedData')); |
| 595 expect(result['id'], startsWith('objects/')); | 597 expect(result['id'], startsWith('objects/')); |
| 596 expect(result['valueAsString'], isNull); | 598 expect(result['valueAsString'], isNull); |
| 597 expect(result['class']['type'], equals('@Class')); | 599 expect(result['class']['type'], equals('@Class')); |
| 598 expect(result['class']['name'], equals('_Uint64List')); | 600 expect(result['class']['name'], equals('_Uint64List')); |
| 599 expect(result['size'], isPositive); | 601 expect(result['size'], isPositive); |
| 600 expect(result['fields'], isEmpty); | 602 expect(result['fields'], isEmpty); |
| 601 expect(result['length'], equals(3)); | 603 expect(result['length'], equals(3)); |
| 602 expect(result['offset'], equals(2)); | 604 expect(result['offset'], equals(2)); |
| 603 expect(result['count'], equals(1)); | 605 expect(result['count'], equals(1)); |
| 604 expect(result['bytes'], equals('AQAAAAAAAAA=')); | 606 expect(result['bytes'], equals('AQAAAAAAAAA=')); |
| 605 Uint8List bytes = BASE64.decode(result['bytes']); | 607 Uint8List bytes = BASE64.decode(result['bytes']); |
| 606 expect(bytes.buffer.asUint64List().toString(), equals('[1]')); | 608 expect(bytes.buffer.asUint64List().toString(), equals('[1]')); |
| 607 }, | 609 }, |
| 608 | 610 |
| 609 // Uint64List with wacky offset. | 611 // Uint64List with wacky offset. |
| 610 (Isolate isolate) async { | 612 (Isolate isolate) async { |
| 611 // Call eval to get a Dart list. | 613 // Call eval to get a Dart list. |
| 612 var evalResult = await eval(isolate, 'uint64List'); | 614 var evalResult = await eval(isolate, 'uint64List'); |
| 613 var params = { | 615 var params = { |
| 614 'objectId': evalResult['id'], | 616 'objectId': evalResult['id'], |
| 615 'offset': 100, | 617 'offset' : 100, |
| 616 'count': 2, | 618 'count' : 2, |
| 617 }; | 619 }; |
| 618 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 620 var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
| 619 expect(result['type'], equals('Instance')); | 621 expect(result['type'], equals('Instance')); |
| 620 expect(result['kind'], equals('Uint64List')); | 622 expect(result['kind'], equals('Uint64List')); |
| 621 expect(result['_vmType'], equals('TypedData')); | 623 expect(result['_vmType'], equals('TypedData')); |
| 622 expect(result['id'], startsWith('objects/')); | 624 expect(result['id'], startsWith('objects/')); |
| 623 expect(result['valueAsString'], isNull); | 625 expect(result['valueAsString'], isNull); |
| 624 expect(result['class']['type'], equals('@Class')); | 626 expect(result['class']['type'], equals('@Class')); |
| 625 expect(result['class']['name'], equals('_Uint64List')); | 627 expect(result['class']['name'], equals('_Uint64List')); |
| 626 expect(result['size'], isPositive); | 628 expect(result['size'], isPositive); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 669 }, | 671 }, |
| 670 | 672 |
| 671 // invalid library. | 673 // invalid library. |
| 672 (Isolate isolate) async { | 674 (Isolate isolate) async { |
| 673 var params = { | 675 var params = { |
| 674 'objectId': 'libraries/9999999', | 676 'objectId': 'libraries/9999999', |
| 675 }; | 677 }; |
| 676 bool caughtException; | 678 bool caughtException; |
| 677 try { | 679 try { |
| 678 await isolate.invokeRpcNoUpgrade('getObject', params); | 680 await isolate.invokeRpcNoUpgrade('getObject', params); |
| 679 expect(false, isTrue, reason: 'Unreachable'); | 681 expect(false, isTrue, reason:'Unreachable'); |
| 680 } on ServerRpcException catch (e) { | 682 } on ServerRpcException catch(e) { |
| 681 caughtException = true; | 683 caughtException = true; |
| 682 expect(e.code, equals(ServerRpcException.kInvalidParams)); | 684 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
| 683 expect(e.message, | 685 expect(e.message, |
| 684 "getObject: invalid 'objectId' parameter: libraries/9999999"); | 686 "getObject: invalid 'objectId' parameter: libraries/9999999"); |
| 685 } | 687 } |
| 686 expect(caughtException, isTrue); | 688 expect(caughtException, isTrue); |
| 687 }, | 689 }, |
| 688 | 690 |
| 689 // script. | 691 // script. |
| 690 (Isolate isolate) async { | 692 (Isolate isolate) async { |
| 691 // Get the library first. | 693 // Get the library first. |
| 692 var params = { | 694 var params = { |
| 693 'objectId': isolate.rootLibrary.id, | 695 'objectId': isolate.rootLibrary.id, |
| 694 }; | 696 }; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 712 }, | 714 }, |
| 713 | 715 |
| 714 // invalid script. | 716 // invalid script. |
| 715 (Isolate isolate) async { | 717 (Isolate isolate) async { |
| 716 var params = { | 718 var params = { |
| 717 'objectId': 'scripts/9999999', | 719 'objectId': 'scripts/9999999', |
| 718 }; | 720 }; |
| 719 bool caughtException; | 721 bool caughtException; |
| 720 try { | 722 try { |
| 721 await isolate.invokeRpcNoUpgrade('getObject', params); | 723 await isolate.invokeRpcNoUpgrade('getObject', params); |
| 722 expect(false, isTrue, reason: 'Unreachable'); | 724 expect(false, isTrue, reason:'Unreachable'); |
| 723 } on ServerRpcException catch (e) { | 725 } on ServerRpcException catch(e) { |
| 724 caughtException = true; | 726 caughtException = true; |
| 725 expect(e.code, equals(ServerRpcException.kInvalidParams)); | 727 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
| 726 expect(e.message, | 728 expect(e.message, |
| 727 "getObject: invalid 'objectId' parameter: scripts/9999999"); | 729 "getObject: invalid 'objectId' parameter: scripts/9999999"); |
| 728 } | 730 } |
| 729 expect(caughtException, isTrue); | 731 expect(caughtException, isTrue); |
| 730 }, | 732 }, |
| 731 | 733 |
| 732 // class | 734 // class |
| 733 (Isolate isolate) async { | 735 (Isolate isolate) async { |
| 734 // Call eval to get a class id. | 736 // Call eval to get a class id. |
| 735 var evalResult = await eval(isolate, 'new _DummyClass()'); | 737 var evalResult = await eval(isolate, 'new _DummyClass()'); |
| 736 var params = { | 738 var params = { |
| 737 'objectId': evalResult['class']['id'], | 739 'objectId': evalResult['class']['id'], |
| (...skipping 21 matching lines...) Expand all Loading... |
| 759 }, | 761 }, |
| 760 | 762 |
| 761 // invalid class. | 763 // invalid class. |
| 762 (Isolate isolate) async { | 764 (Isolate isolate) async { |
| 763 var params = { | 765 var params = { |
| 764 'objectId': 'classes/9999999', | 766 'objectId': 'classes/9999999', |
| 765 }; | 767 }; |
| 766 bool caughtException; | 768 bool caughtException; |
| 767 try { | 769 try { |
| 768 await isolate.invokeRpcNoUpgrade('getObject', params); | 770 await isolate.invokeRpcNoUpgrade('getObject', params); |
| 769 expect(false, isTrue, reason: 'Unreachable'); | 771 expect(false, isTrue, reason:'Unreachable'); |
| 770 } on ServerRpcException catch (e) { | 772 } on ServerRpcException catch(e) { |
| 771 caughtException = true; | 773 caughtException = true; |
| 772 expect(e.code, equals(ServerRpcException.kInvalidParams)); | 774 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
| 773 expect(e.message, | 775 expect(e.message, |
| 774 "getObject: invalid 'objectId' parameter: classes/9999999"); | 776 "getObject: invalid 'objectId' parameter: classes/9999999"); |
| 775 } | 777 } |
| 776 expect(caughtException, isTrue); | 778 expect(caughtException, isTrue); |
| 777 }, | 779 }, |
| 778 | 780 |
| 779 // type. | 781 // type. |
| 780 (Isolate isolate) async { | 782 (Isolate isolate) async { |
| 781 // Call eval to get a class id. | 783 // Call eval to get a class id. |
| 782 var evalResult = await eval(isolate, 'new _DummyClass()'); | 784 var evalResult = await eval(isolate, 'new _DummyClass()'); |
| 783 var id = "${evalResult['class']['id']}/types/0"; | 785 var id = "${evalResult['class']['id']}/types/0"; |
| 784 var params = { | 786 var params = { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 799 // invalid type. | 801 // invalid type. |
| 800 (Isolate isolate) async { | 802 (Isolate isolate) async { |
| 801 var evalResult = await eval(isolate, 'new _DummyClass()'); | 803 var evalResult = await eval(isolate, 'new _DummyClass()'); |
| 802 var id = "${evalResult['class']['id']}/types/9999999"; | 804 var id = "${evalResult['class']['id']}/types/9999999"; |
| 803 var params = { | 805 var params = { |
| 804 'objectId': id, | 806 'objectId': id, |
| 805 }; | 807 }; |
| 806 bool caughtException; | 808 bool caughtException; |
| 807 try { | 809 try { |
| 808 await isolate.invokeRpcNoUpgrade('getObject', params); | 810 await isolate.invokeRpcNoUpgrade('getObject', params); |
| 809 expect(false, isTrue, reason: 'Unreachable'); | 811 expect(false, isTrue, reason:'Unreachable'); |
| 810 } on ServerRpcException catch (e) { | 812 } on ServerRpcException catch(e) { |
| 811 caughtException = true; | 813 caughtException = true; |
| 812 expect(e.code, equals(ServerRpcException.kInvalidParams)); | 814 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
| 813 expect( | 815 expect(e.message, |
| 814 e.message, startsWith("getObject: invalid 'objectId' parameter: ")); | 816 startsWith("getObject: invalid 'objectId' parameter: ")); |
| 815 } | 817 } |
| 816 expect(caughtException, isTrue); | 818 expect(caughtException, isTrue); |
| 817 }, | 819 }, |
| 818 | 820 |
| 819 // function. | 821 // function. |
| 820 (Isolate isolate) async { | 822 (Isolate isolate) async { |
| 821 // Call eval to get a class id. | 823 // Call eval to get a class id. |
| 822 var evalResult = await eval(isolate, 'new _DummyClass()'); | 824 var evalResult = await eval(isolate, 'new _DummyClass()'); |
| 823 var id = "${evalResult['class']['id']}/functions/dummyFunction"; | 825 var id = "${evalResult['class']['id']}/functions/dummyFunction"; |
| 824 var params = { | 826 var params = { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 844 (Isolate isolate) async { | 846 (Isolate isolate) async { |
| 845 // Call eval to get a class id. | 847 // Call eval to get a class id. |
| 846 var evalResult = await eval(isolate, 'new _DummyClass()'); | 848 var evalResult = await eval(isolate, 'new _DummyClass()'); |
| 847 var id = "${evalResult['class']['id']}/functions/invalid"; | 849 var id = "${evalResult['class']['id']}/functions/invalid"; |
| 848 var params = { | 850 var params = { |
| 849 'objectId': id, | 851 'objectId': id, |
| 850 }; | 852 }; |
| 851 bool caughtException; | 853 bool caughtException; |
| 852 try { | 854 try { |
| 853 await isolate.invokeRpcNoUpgrade('getObject', params); | 855 await isolate.invokeRpcNoUpgrade('getObject', params); |
| 854 expect(false, isTrue, reason: 'Unreachable'); | 856 expect(false, isTrue, reason:'Unreachable'); |
| 855 } on ServerRpcException catch (e) { | 857 } on ServerRpcException catch(e) { |
| 856 caughtException = true; | 858 caughtException = true; |
| 857 expect(e.code, equals(ServerRpcException.kInvalidParams)); | 859 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
| 858 expect( | 860 expect(e.message, |
| 859 e.message, startsWith("getObject: invalid 'objectId' parameter: ")); | 861 startsWith("getObject: invalid 'objectId' parameter: ")); |
| 860 } | 862 } |
| 861 expect(caughtException, isTrue); | 863 expect(caughtException, isTrue); |
| 862 }, | 864 }, |
| 863 | 865 |
| 864 // field | 866 // field |
| 865 (Isolate isolate) async { | 867 (Isolate isolate) async { |
| 866 // Call eval to get a class id. | 868 // Call eval to get a class id. |
| 867 var evalResult = await eval(isolate, 'new _DummyClass()'); | 869 var evalResult = await eval(isolate, 'new _DummyClass()'); |
| 868 var id = "${evalResult['class']['id']}/fields/dummyVar"; | 870 var id = "${evalResult['class']['id']}/fields/dummyVar"; |
| 869 var params = { | 871 var params = { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 887 (Isolate isolate) async { | 889 (Isolate isolate) async { |
| 888 // Call eval to get a class id. | 890 // Call eval to get a class id. |
| 889 var evalResult = await eval(isolate, 'new _DummyClass()'); | 891 var evalResult = await eval(isolate, 'new _DummyClass()'); |
| 890 var id = "${evalResult['class']['id']}/fields/mythicalField"; | 892 var id = "${evalResult['class']['id']}/fields/mythicalField"; |
| 891 var params = { | 893 var params = { |
| 892 'objectId': id, | 894 'objectId': id, |
| 893 }; | 895 }; |
| 894 bool caughtException; | 896 bool caughtException; |
| 895 try { | 897 try { |
| 896 await isolate.invokeRpcNoUpgrade('getObject', params); | 898 await isolate.invokeRpcNoUpgrade('getObject', params); |
| 897 expect(false, isTrue, reason: 'Unreachable'); | 899 expect(false, isTrue, reason:'Unreachable'); |
| 898 } on ServerRpcException catch (e) { | 900 } on ServerRpcException catch(e) { |
| 899 caughtException = true; | 901 caughtException = true; |
| 900 expect(e.code, equals(ServerRpcException.kInvalidParams)); | 902 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
| 901 expect( | 903 expect(e.message, |
| 902 e.message, startsWith("getObject: invalid 'objectId' parameter: ")); | 904 startsWith("getObject: invalid 'objectId' parameter: ")); |
| 903 } | 905 } |
| 904 expect(caughtException, isTrue); | 906 expect(caughtException, isTrue); |
| 905 }, | 907 }, |
| 906 | 908 |
| 907 // code. | 909 // code. |
| 908 (Isolate isolate) async { | 910 (Isolate isolate) async { |
| 909 // Call eval to get a class id. | 911 // Call eval to get a class id. |
| 910 var evalResult = await eval(isolate, 'new _DummyClass()'); | 912 var evalResult = await eval(isolate, 'new _DummyClass()'); |
| 911 var funcId = "${evalResult['class']['id']}/functions/dummyFunction"; | 913 var funcId = "${evalResult['class']['id']}/functions/dummyFunction"; |
| 912 var params = { | 914 var params = { |
| 913 'objectId': funcId, | 915 'objectId': funcId, |
| 914 }; | 916 }; |
| 915 var funcResult = await isolate.invokeRpcNoUpgrade('getObject', params); | 917 var funcResult = await isolate.invokeRpcNoUpgrade('getObject', params); |
| 916 params = { | 918 params = { |
| 917 'objectId': funcResult['code']['id'], | 919 'objectId': funcResult['code']['id'], |
| 918 }; | 920 }; |
| 919 var result = await isolate.invokeRpcNoUpgrade('getObject', params); | 921 var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
| 920 expect(result['type'], equals('Code')); | 922 expect(result['type'], equals('Code')); |
| 921 expect(result['name'], equals('_DummyClass.dummyFunction')); | 923 expect(result['name'], equals('_DummyClass.dummyFunction')); |
| 922 expect(result['_vmName'], equals('dummyFunction')); | 924 expect(result['_vmName'], equals('dummyFunction')); |
| 923 expect(result['kind'], equals('Dart')); | 925 expect(result['kind'], equals('Dart')); |
| 924 expect(result['_optimized'], new isInstanceOf<bool>()); | 926 expect(result['_optimized'], new isInstanceOf<bool>()); |
| 925 expect(result['function']['type'], equals('@Function')); | 927 expect(result['function']['type'], equals('@Function')); |
| 926 expect(result['_startAddress'], new isInstanceOf<String>()); | 928 expect(result['_startAddress'], new isInstanceOf<String>()); |
| 927 expect(result['_endAddress'], new isInstanceOf<String>()); | 929 expect(result['_endAddress'], new isInstanceOf<String>()); |
| 928 expect(result['_objectPool'], isNotNull); | 930 expect(result['_objectPool'], isNotNull); |
| 929 expect(result['_disassembly'], isNotNull); | 931 expect(result['_disassembly'], isNotNull); |
| 930 expect(result['_descriptors'], isNotNull); | 932 expect(result['_descriptors'], isNotNull); |
| 931 expect( | 933 expect(result['_inlinedFunctions'], anyOf([isNull, new isInstanceOf<List>()]
)); |
| 932 result['_inlinedFunctions'], anyOf([isNull, new isInstanceOf<List>()])); | 934 expect(result['_inlinedIntervals'], anyOf([isNull, new isInstanceOf<List>()]
)); |
| 933 expect( | |
| 934 result['_inlinedIntervals'], anyOf([isNull, new isInstanceOf<List>()])); | |
| 935 }, | 935 }, |
| 936 | 936 |
| 937 // invalid code. | 937 // invalid code. |
| 938 (Isolate isolate) async { | 938 (Isolate isolate) async { |
| 939 var params = { | 939 var params = { |
| 940 'objectId': 'code/0', | 940 'objectId': 'code/0', |
| 941 }; | 941 }; |
| 942 bool caughtException; | 942 bool caughtException; |
| 943 try { | 943 try { |
| 944 await isolate.invokeRpcNoUpgrade('getObject', params); | 944 await isolate.invokeRpcNoUpgrade('getObject', params); |
| 945 expect(false, isTrue, reason: 'Unreachable'); | 945 expect(false, isTrue, reason:'Unreachable'); |
| 946 } on ServerRpcException catch (e) { | 946 } on ServerRpcException catch(e) { |
| 947 caughtException = true; | 947 caughtException = true; |
| 948 expect(e.code, equals(ServerRpcException.kInvalidParams)); | 948 expect(e.code, equals(ServerRpcException.kInvalidParams)); |
| 949 expect(e.message, "getObject: invalid 'objectId' parameter: code/0"); | 949 expect(e.message, |
| 950 "getObject: invalid 'objectId' parameter: code/0"); |
| 950 } | 951 } |
| 951 expect(caughtException, isTrue); | 952 expect(caughtException, isTrue); |
| 952 }, | 953 }, |
| 953 ]; | 954 ]; |
| 954 | 955 |
| 955 main(args) async => runIsolateTests(args, tests, testeeBefore: warmup); | 956 main(args) async => runIsolateTests(args, tests, testeeBefore:warmup); |
| OLD | NEW |