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

Unified Diff: runtime/vm/debugger_api_impl_test.cc

Issue 18238003: Add Dart_GetSupertype to the dart debugger API so that the dartium (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 6 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
« no previous file with comments | « runtime/vm/debugger_api_impl.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/debugger_api_impl_test.cc
===================================================================
--- runtime/vm/debugger_api_impl_test.cc (revision 24634)
+++ runtime/vm/debugger_api_impl_test.cc (working copy)
@@ -1447,4 +1447,94 @@
EXPECT_EQ(1, breakpoint_hit_counter);
}
+
+TEST_CASE(Debug_GetSupertype) {
+ const char* kScriptChars =
+ "class Test {\n"
+ "}\n"
+ "class Test1 extends Test {\n"
+ "}\n"
+ "class Test2<T> {\n"
+ "}\n"
+ "class Test3 extends Test2<int> {\n"
+ "}\n"
+ "class Test4<A, B> extends Test2<A> {\n"
+ "}\n"
+ "class Test5<A, B, C> extends Test4<A, B> {\n"
+ "}\n"
+ "int main() {\n"
+ "}\n";
+
+ Isolate* isolate = Isolate::Current();
+ LoadScript(kScriptChars);
+ ASSERT(script_lib != NULL);
+ ASSERT(Dart_IsLibrary(script_lib));
+ Dart_Handle core_lib = Dart_LookupLibrary(NewString("dart:core"));
+
+ Dart_Handle Test_name = Dart_NewStringFromCString("Test");
+ Dart_Handle Test1_name = Dart_NewStringFromCString("Test1");
+ Dart_Handle Test2_name = Dart_NewStringFromCString("Test2");
+ Dart_Handle Test3_name = Dart_NewStringFromCString("Test3");
+ Dart_Handle Test4_name = Dart_NewStringFromCString("Test4");
+ Dart_Handle Test5_name = Dart_NewStringFromCString("Test5");
+ Dart_Handle object_name = Dart_NewStringFromCString("Object");
+ Dart_Handle int_name = Dart_NewStringFromCString("int");
+
+ Dart_Handle object_type = Dart_GetType(core_lib, object_name, 0, NULL);
+ Dart_Handle int_type = Dart_GetType(core_lib, int_name, 0, NULL);
+ EXPECT_VALID(int_type);
+ Dart_Handle Test_type = Dart_GetType(script_lib, Test_name, 0, NULL);
+ Dart_Handle Test1_type = Dart_GetType(script_lib, Test1_name, 0, NULL);
+ Dart_Handle type_args = Dart_NewList(1);
+ Dart_ListSetAt(type_args, 0, int_type);
+ Dart_Handle Test2_int_type = Dart_GetType(script_lib,
+ Test2_name,
+ 1,
+ &type_args);
+ Dart_Handle Test3_type = Dart_GetType(script_lib, Test3_name, 0, NULL);
+ type_args = Dart_NewList(2);
+ Dart_ListSetAt(type_args, 0, int_type);
+ Dart_ListSetAt(type_args, 1, int_type);
+ Dart_Handle Test4_int_type = Dart_GetType(script_lib,
+ Test4_name,
+ 2,
+ &type_args);
+ type_args = Dart_NewList(3);
+ Dart_ListSetAt(type_args, 0, int_type);
+ Dart_ListSetAt(type_args, 1, int_type);
+ Dart_ListSetAt(type_args, 2, int_type);
+ Dart_Handle Test5_int_type = Dart_GetType(script_lib,
+ Test5_name,
+ 3,
+ &type_args);
+ {
+ Dart_Handle super_type = Dart_GetSupertype(object_type);
+ EXPECT(super_type == Dart_Null());
+ }
+ {
+ Dart_Handle super_type = Dart_GetSupertype(Test1_type);
+ const Type& expected_type = Api::UnwrapTypeHandle(isolate, Test_type);
+ const Type& actual_type = Api::UnwrapTypeHandle(isolate, super_type);
+ EXPECT(expected_type.raw() == actual_type.raw());
+ }
+ {
+ Dart_Handle super_type = Dart_GetSupertype(Test3_type);
+ const Type& expected_type = Api::UnwrapTypeHandle(isolate, Test2_int_type);
+ const Type& actual_type = Api::UnwrapTypeHandle(isolate, super_type);
+ EXPECT(expected_type.raw() == actual_type.raw());
+ }
+ {
+ Dart_Handle super_type = Dart_GetSupertype(Test4_int_type);
+ const Type& expected_type = Api::UnwrapTypeHandle(isolate, Test2_int_type);
+ const Type& actual_type = Api::UnwrapTypeHandle(isolate, super_type);
+ EXPECT(expected_type.raw() == actual_type.raw());
+ }
+ {
+ Dart_Handle super_type = Dart_GetSupertype(Test5_int_type);
+ const Type& expected_type = Api::UnwrapTypeHandle(isolate, Test4_int_type);
+ const Type& actual_type = Api::UnwrapTypeHandle(isolate, super_type);
+ EXPECT(expected_type.raw() == actual_type.raw());
+ }
+}
+
} // namespace dart
« no previous file with comments | « runtime/vm/debugger_api_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698