Index: runtime/observatory/tests/service/get_object_rpc_test.dart |
diff --git a/runtime/observatory/tests/service/get_object_rpc_test.dart b/runtime/observatory/tests/service/get_object_rpc_test.dart |
index 6bfa71fdeff2c77f8f3e5e692570500ed89a57de..2fc74f497555ea6edfec58230fcacee9e230a7d4 100644 |
--- a/runtime/observatory/tests/service/get_object_rpc_test.dart |
+++ b/runtime/observatory/tests/service/get_object_rpc_test.dart |
@@ -86,6 +86,99 @@ var tests = [ |
expect(result['fields'], isEmpty); |
}, |
+ // A string |
+ (Isolate isolate) async { |
+ // Call eval to get a Dart list. |
+ var evalResult = await eval(isolate, '"Chattanooga"'); |
+ var params = { |
+ 'objectId': evalResult['id'], |
+ }; |
+ var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
+ expect(result['type'], equals('Instance')); |
+ expect(result['kind'], equals('String')); |
+ expect(result['_vmType'], equals('String')); |
+ expect(result['id'], startsWith('objects/')); |
+ expect(result['valueAsString'], equals('Chattanooga')); |
+ expect(result['class']['type'], equals('@Class')); |
+ expect(result['class']['name'], equals('_OneByteString')); |
+ expect(result['size'], isPositive); |
+ expect(result['fields'], isEmpty); |
+ expect(result['length'], equals(11)); |
+ expect(result['offset'], isNull); |
+ expect(result['count'], isNull); |
+ }, |
+ |
+ // String prefix. |
+ (Isolate isolate) async { |
+ // Call eval to get a Dart list. |
+ var evalResult = await eval(isolate, '"Chattanooga"'); |
+ var params = { |
+ 'objectId': evalResult['id'], |
+ 'count': 4, |
+ }; |
+ var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
+ expect(result['type'], equals('Instance')); |
+ expect(result['kind'], equals('String')); |
+ expect(result['_vmType'], equals('String')); |
+ expect(result['id'], startsWith('objects/')); |
+ expect(result['valueAsString'], equals('Chat')); |
+ expect(result['class']['type'], equals('@Class')); |
+ expect(result['class']['name'], equals('_OneByteString')); |
+ expect(result['size'], isPositive); |
+ expect(result['fields'], isEmpty); |
+ expect(result['length'], equals(11)); |
+ expect(result['offset'], isNull); |
+ expect(result['count'], equals(4)); |
+ }, |
+ |
+ // String subrange. |
+ (Isolate isolate) async { |
+ // Call eval to get a Dart list. |
+ var evalResult = await eval(isolate, '"Chattanooga"'); |
+ var params = { |
+ 'objectId': evalResult['id'], |
+ 'offset': 4, |
+ 'count': 6, |
+ }; |
+ var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
+ expect(result['type'], equals('Instance')); |
+ expect(result['kind'], equals('String')); |
+ expect(result['_vmType'], equals('String')); |
+ expect(result['id'], startsWith('objects/')); |
+ expect(result['valueAsString'], equals('tanoog')); |
+ expect(result['class']['type'], equals('@Class')); |
+ expect(result['class']['name'], equals('_OneByteString')); |
+ expect(result['size'], isPositive); |
+ expect(result['fields'], isEmpty); |
+ expect(result['length'], equals(11)); |
+ expect(result['offset'], equals(4)); |
+ expect(result['count'], equals(6)); |
+ }, |
+ |
+ // String with wacky offset. |
+ (Isolate isolate) async { |
+ // Call eval to get a Dart list. |
+ var evalResult = await eval(isolate, '"Chattanooga"'); |
+ var params = { |
+ 'objectId': evalResult['id'], |
+ 'offset': 100, |
+ 'count': 2, |
+ }; |
+ var result = await isolate.invokeRpcNoUpgrade('getObject', params); |
+ expect(result['type'], equals('Instance')); |
+ expect(result['kind'], equals('String')); |
+ expect(result['_vmType'], equals('String')); |
+ expect(result['id'], startsWith('objects/')); |
+ expect(result['valueAsString'], equals('')); |
+ expect(result['class']['type'], equals('@Class')); |
+ expect(result['class']['name'], equals('_OneByteString')); |
+ expect(result['size'], isPositive); |
+ expect(result['fields'], isEmpty); |
+ expect(result['length'], equals(11)); |
+ expect(result['offset'], equals(11)); |
+ expect(result['count'], equals(0)); |
+ }, |
+ |
// A built-in List. |
(Isolate isolate) async { |
// Call eval to get a Dart list. |