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

Unified Diff: runtime/vm/service_test.cc

Issue 199363002: Rework library and class view pages. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: edits Created 6 years, 9 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: runtime/vm/service_test.cc
diff --git a/runtime/vm/service_test.cc b/runtime/vm/service_test.cc
index cad71881fc045b59b31569dad2353fc03db49aa8..3f3d57c92d7fcfdd797c8e2f9f7f3ad3819d1e54 100644
--- a/runtime/vm/service_test.cc
+++ b/runtime/vm/service_test.cc
@@ -497,6 +497,17 @@ TEST_CASE(Service_Objects) {
"\"user_name\":\"int\"},\"preview\":\"222\"}",
handler.msg());
+ // eval returning null works
+ service_msg = Eval(lib,
+ "[port, ['objects', 'int-123', 'eval'], "
+ "['expr'], ['null']]");
+ Service::HandleIsolateMessage(isolate, service_msg);
+ handler.HandleNextMessage();
+ handler.filterMsg("name");
+ EXPECT_STREQ(
+ "{\"type\":\"@Null\",\"id\":\"objects\\/null\",\"preview\":\"null\"}",
+ handler.msg());
+
// object id ring / invalid => expired
service_msg = Eval(lib, "[port, ['objects', '99999999', 'eval'], "
"['expr'], ['this']]");
@@ -526,6 +537,64 @@ TEST_CASE(Service_Objects) {
}
+TEST_CASE(Service_Libraries) {
+ const char* kScript =
+ "var port;\n" // Set to our mock port by C++.
+ "var libVar = 54321;\n"
+ "\n"
+ "main() {\n"
+ "}";
+
+ Isolate* isolate = Isolate::Current();
+ Dart_Handle h_lib = TestCase::LoadTestScript(kScript, NULL);
+ EXPECT_VALID(h_lib);
+ Library& lib = Library::Handle();
+ lib ^= Api::UnwrapHandle(h_lib);
+ EXPECT(!lib.IsNull());
+
+ // Find the current library.
+ intptr_t lib_id = -1;
+ const GrowableObjectArray& libs =
+ GrowableObjectArray::Handle(isolate->object_store()->libraries());
+ for (intptr_t i = 0; i < libs.Length(); i++) {
+ if (libs.At(i) == lib.raw()) {
+ lib_id = i;
+ }
+ }
+ ASSERT(lib_id > 0);
+
+ // Build a mock message handler and wrap it in a dart port.
+ ServiceTestMessageHandler handler;
+ Dart_Port port_id = PortMap::CreatePort(&handler);
+ Dart_Handle port =
+ Api::NewHandle(isolate, DartLibraryCalls::NewSendPort(port_id));
+ EXPECT_VALID(port);
+ EXPECT_VALID(Dart_SetField(h_lib, NewString("port"), port));
+
+ Instance& service_msg = Instance::Handle();
+
+ // Request library.
+ service_msg = EvalF(h_lib,
+ "[port, ['libraries', '%" Pd "'], [], []]", lib_id);
+ Service::HandleIsolateMessage(isolate, service_msg);
+ handler.HandleNextMessage();
+ EXPECT_SUBSTRING("\"type\":\"Library\"", handler.msg());
+ EXPECT_SUBSTRING("\"url\":\"dart:test-lib\"", handler.msg());
+
+ // Evaluate an expression from a library.
+ service_msg = EvalF(h_lib,
+ "[port, ['libraries', '%" Pd "', 'eval'], "
+ "['expr'], ['libVar - 1']]", lib_id);
+ Service::HandleIsolateMessage(isolate, service_msg);
+ handler.HandleNextMessage();
+ handler.filterMsg("name");
+ EXPECT_STREQ(
+ "{\"type\":\"@Smi\",\"id\":\"objects\\/int-54320\","
+ "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\","
+ "\"user_name\":\"int\"},\"preview\":\"54320\"}",
+ handler.msg());
+}
+
TEST_CASE(Service_Classes) {
const char* kScript =
@@ -533,6 +602,7 @@ TEST_CASE(Service_Classes) {
"\n"
"class A {\n"
" var a;\n"
+ " static var cobra = 11235;\n"
" dynamic b() {}\n"
" dynamic c() {\n"
" var d = () { b(); };\n"
@@ -581,11 +651,24 @@ TEST_CASE(Service_Classes) {
service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "'], [], []]", cid);
Service::HandleIsolateMessage(isolate, service_msg);
handler.HandleNextMessage();
-
EXPECT_SUBSTRING("\"type\":\"Class\"", handler.msg());
ExpectSubstringF(handler.msg(),
"\"id\":\"classes\\/%" Pd "\",\"name\":\"A\",", cid);
+ // Evaluate an expression from class A.
Cutch 2014/03/13 18:16:40 Glad that this is being tested.
+ service_msg = EvalF(h_lib,
+ "[port, ['classes', '%" Pd "', 'eval'], "
+ "['expr'], ['cobra + 100000']]", cid);
+ Service::HandleIsolateMessage(isolate, service_msg);
+ handler.HandleNextMessage();
+ handler.filterMsg("name");
+ EXPECT_STREQ(
+ "{\"type\":\"@Smi\",\"id\":\"objects\\/int-111235\","
+ "\"class\":{\"type\":\"@Class\",\"id\":\"classes\\/42\","
+ "\"user_name\":\"int\"},\"preview\":\"111235\"}",
+ handler.msg());
+
+ // Request function 0 from class A.
service_msg = EvalF(h_lib, "[port, ['classes', '%" Pd "', 'functions', '0'],"
"[], []]", cid);
Service::HandleIsolateMessage(isolate, service_msg);
« runtime/bin/vmservice/client/lib/src/elements/function_ref.html ('K') | « runtime/vm/service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698