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

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

Issue 1653183002: getObject now supports specifying offset,count for strings. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 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/service.md » ('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 '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';
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 expect(result['kind'], equals('Int')); 79 expect(result['kind'], equals('Int'));
80 expect(result['_vmType'], equals('Smi')); 80 expect(result['_vmType'], equals('Smi'));
81 expect(result['id'], equals('objects/int-123')); 81 expect(result['id'], equals('objects/int-123'));
82 expect(result['valueAsString'], equals('123')); 82 expect(result['valueAsString'], equals('123'));
83 expect(result['class']['type'], equals('@Class')); 83 expect(result['class']['type'], equals('@Class'));
84 expect(result['class']['name'], equals('_Smi')); 84 expect(result['class']['name'], equals('_Smi'));
85 expect(result['size'], isZero); 85 expect(result['size'], isZero);
86 expect(result['fields'], isEmpty); 86 expect(result['fields'], isEmpty);
87 }, 87 },
88 88
89 // A string
90 (Isolate isolate) async {
91 // Call eval to get a Dart list.
92 var evalResult = await eval(isolate, '"Chattanooga"');
93 var params = {
94 'objectId': evalResult['id'],
95 };
96 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
97 expect(result['type'], equals('Instance'));
98 expect(result['kind'], equals('String'));
99 expect(result['_vmType'], equals('String'));
100 expect(result['id'], startsWith('objects/'));
101 expect(result['valueAsString'], equals('Chattanooga'));
102 expect(result['class']['type'], equals('@Class'));
103 expect(result['class']['name'], equals('_OneByteString'));
104 expect(result['size'], isPositive);
105 expect(result['fields'], isEmpty);
106 expect(result['length'], equals(11));
107 expect(result['offset'], isNull);
108 expect(result['count'], isNull);
109 },
110
111 // String prefix.
112 (Isolate isolate) async {
113 // Call eval to get a Dart list.
114 var evalResult = await eval(isolate, '"Chattanooga"');
115 var params = {
116 'objectId': evalResult['id'],
117 'count': 4,
118 };
119 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
120 expect(result['type'], equals('Instance'));
121 expect(result['kind'], equals('String'));
122 expect(result['_vmType'], equals('String'));
123 expect(result['id'], startsWith('objects/'));
124 expect(result['valueAsString'], equals('Chat'));
125 expect(result['class']['type'], equals('@Class'));
126 expect(result['class']['name'], equals('_OneByteString'));
127 expect(result['size'], isPositive);
128 expect(result['fields'], isEmpty);
129 expect(result['length'], equals(11));
130 expect(result['offset'], isNull);
131 expect(result['count'], equals(4));
132 },
133
134 // String subrange.
135 (Isolate isolate) async {
136 // Call eval to get a Dart list.
137 var evalResult = await eval(isolate, '"Chattanooga"');
138 var params = {
139 'objectId': evalResult['id'],
140 'offset': 4,
141 'count': 6,
142 };
143 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
144 expect(result['type'], equals('Instance'));
145 expect(result['kind'], equals('String'));
146 expect(result['_vmType'], equals('String'));
147 expect(result['id'], startsWith('objects/'));
148 expect(result['valueAsString'], equals('tanoog'));
149 expect(result['class']['type'], equals('@Class'));
150 expect(result['class']['name'], equals('_OneByteString'));
151 expect(result['size'], isPositive);
152 expect(result['fields'], isEmpty);
153 expect(result['length'], equals(11));
154 expect(result['offset'], equals(4));
155 expect(result['count'], equals(6));
156 },
157
158 // String with wacky offset.
159 (Isolate isolate) async {
160 // Call eval to get a Dart list.
161 var evalResult = await eval(isolate, '"Chattanooga"');
162 var params = {
163 'objectId': evalResult['id'],
164 'offset': 100,
165 'count': 2,
166 };
167 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
168 expect(result['type'], equals('Instance'));
169 expect(result['kind'], equals('String'));
170 expect(result['_vmType'], equals('String'));
171 expect(result['id'], startsWith('objects/'));
172 expect(result['valueAsString'], equals(''));
173 expect(result['class']['type'], equals('@Class'));
174 expect(result['class']['name'], equals('_OneByteString'));
175 expect(result['size'], isPositive);
176 expect(result['fields'], isEmpty);
177 expect(result['length'], equals(11));
178 expect(result['offset'], equals(11));
179 expect(result['count'], equals(0));
180 },
181
89 // A built-in List. 182 // A built-in List.
90 (Isolate isolate) async { 183 (Isolate isolate) async {
91 // Call eval to get a Dart list. 184 // Call eval to get a Dart list.
92 var evalResult = await eval(isolate, '[3, 2, 1]'); 185 var evalResult = await eval(isolate, '[3, 2, 1]');
93 var params = { 186 var params = {
94 'objectId': evalResult['id'], 187 'objectId': evalResult['id'],
95 }; 188 };
96 var result = await isolate.invokeRpcNoUpgrade('getObject', params); 189 var result = await isolate.invokeRpcNoUpgrade('getObject', params);
97 expect(result['type'], equals('Instance')); 190 expect(result['type'], equals('Instance'));
98 expect(result['kind'], equals('List')); 191 expect(result['kind'], equals('List'));
(...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 caughtException = true; 947 caughtException = true;
855 expect(e.code, equals(ServerRpcException.kInvalidParams)); 948 expect(e.code, equals(ServerRpcException.kInvalidParams));
856 expect(e.message, 949 expect(e.message,
857 "getObject: invalid 'objectId' parameter: code/0"); 950 "getObject: invalid 'objectId' parameter: code/0");
858 } 951 }
859 expect(caughtException, isTrue); 952 expect(caughtException, isTrue);
860 }, 953 },
861 ]; 954 ];
862 955
863 main(args) async => runIsolateTests(args, tests, testeeBefore:warmup); 956 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/service.md » ('J')

Powered by Google App Engine
This is Rietveld 408576698