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

Unified Diff: tests/standalone/vmservice/test_helper.dart

Issue 24075002: Expose field data, use class id, and merge all collections into "objects" (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: tests/standalone/vmservice/test_helper.dart
diff --git a/tests/standalone/vmservice/test_helper.dart b/tests/standalone/vmservice/test_helper.dart
index 325ecb1e2fd7e578af9735ed98d5cc0949a1abb8..a67254bc5ec1d5b3e037f4dcf5ff344629f98d83 100644
--- a/tests/standalone/vmservice/test_helper.dart
+++ b/tests/standalone/vmservice/test_helper.dart
@@ -25,21 +25,21 @@ abstract class VmServiceRequestHelper {
.fold(new BytesBuilder(), (b, d) => b..add(d))
.then((builder) {
print('** GET: $uri');
- _requestCompleted(builder.takeBytes(), response);
+ return _requestCompleted(builder.takeBytes(), response);
});
}).catchError((error) {
onRequestFailed(error);
});
}
- void _requestCompleted(List<int> data, HttpClientResponse response) {
+ Future _requestCompleted(List<int> data, HttpClientResponse response) {
Expect.equals(200, response.statusCode, 'Invalid HTTP Status Code');
var replyAsString;
try {
replyAsString = UTF8.decode(data);
} catch (e) {
onRequestFailed(e);
- return;
+ return null;
}
print('** Response: $replyAsString');
var reply;
@@ -47,28 +47,30 @@ abstract class VmServiceRequestHelper {
reply = JSON.decode(replyAsString);
} catch (e) {
onRequestFailed(e);
- return;
+ return null;
}
if (reply is! Map) {
onRequestFailed('Reply was not a map: $reply');
- return;
+ return null;
}
if (reply['type'] == null) {
onRequestFailed('Reply does not contain a type key: $reply');
- return;
+ return null;
}
+ var r;
try {
- onRequestCompleted(reply);
+ r = onRequestCompleted(reply);
} catch (e) {
- onRequestFailed('Test callback failed: $e');
+ r = onRequestFailed('Test callback failed: $e');
}
+ return r;
}
- void onRequestFailed(dynamic error) {
+ Future onRequestFailed(dynamic error) {
Expect.fail('Failed to make request: $error');
}
- void onRequestCompleted(Map response);
+ Future onRequestCompleted(Map response);
}
class TestLauncher {
@@ -179,3 +181,76 @@ class IsolateListTester {
Expect.isTrue(exists, 'No isolate with id: $id');
}
}
+
+class ClassTableHelper {
+ final Map classTable;
+
+ ClassTableHelper(this.classTable) {
+ Expect.equals('ClassList', classTable['type'], 'Not a ClassTable.');
+ }
+
+ bool classExists(String user_name) {
+ List members = classTable['members'];
+ for (var i = 0; i < members.length; i++) {
+ Map klass = members[i];
+ if (klass['user_name'] == user_name) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ int classId(String user_name) {
+ List members = classTable['members'];
+ for (var i = 0; i < members.length; i++) {
+ Map klass = members[i];
+ if (klass['user_name'] == user_name) {
+ return klass['id'];
+ }
+ }
+ return -1;
+ }
+}
+
+class FieldRequestHelper extends VmServiceRequestHelper {
+ FieldRequestHelper(port, isolate_id, field_id) :
+ super('http://127.0.0.1:$port/isolates/$isolate_id/objects/$field_id');
+ Map field;
+ onRequestCompleted(Map reply) {
+ Expect.equals('Field', reply['type']);
+ field = reply;
+ return this;
+ }
+}
+
+class ClassFieldRequestHelper extends VmServiceRequestHelper {
+ final List<String> fieldNames;
+ int port_;
+ int isolate_id_;
+ ClassFieldRequestHelper(port, isolate_id, class_id, this.fieldNames) :
+ super('http://127.0.0.1:$port/isolates/$isolate_id/classes/$class_id') {
+ port_ = port;
+ isolate_id_ = isolate_id;
+ }
+ final Map<String, Map> fields = new Map<String, Map>();
+
+ onRequestCompleted(Map reply) {
+ Expect.equals('Class', reply['type']);
+ List<Map> class_fields = reply['fields'];
+ List<Future> requests = new List<Future>();
+ fieldNames.forEach((fn) {
+ class_fields.forEach((f) {
+ if (f['user_name'] == fn) {
+ var request = new FieldRequestHelper(port_, isolate_id_, f['id']);
+ requests.add(request.makeRequest());
+ }
+ });
+ });
+ return Future.wait(requests).then((a) {
+ a.forEach((FieldRequestHelper field) {
+ fields[field.field['user_name']] = field.field;
+ });
+ return this;
+ });
+ }
+}
« no previous file with comments | « tests/standalone/vmservice/isolate_library_test.dart ('k') | tests/standalone/vmservice/unknown_isolate_command_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698