| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 | 4 | 
| 5 #include "include/dart_debugger_api.h" | 5 #include "include/dart_debugger_api.h" | 
| 6 #include "platform/assert.h" | 6 #include "platform/assert.h" | 
| 7 #include "vm/dart_api_impl.h" | 7 #include "vm/dart_api_impl.h" | 
| 8 #include "vm/thread.h" | 8 #include "vm/thread.h" | 
| 9 #include "vm/unit_test.h" | 9 #include "vm/unit_test.h" | 
| 10 | 10 | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
| 22 static void LoadScript(const char* source) { | 22 static void LoadScript(const char* source) { | 
| 23   script_lib = TestCase::LoadTestScript(source, NULL); | 23   script_lib = TestCase::LoadTestScript(source, NULL); | 
| 24   EXPECT_VALID(script_lib); | 24   EXPECT_VALID(script_lib); | 
| 25 } | 25 } | 
| 26 | 26 | 
| 27 | 27 | 
| 28 static void SetBreakpointAtEntry(const char* cname, const char* fname) { | 28 static void SetBreakpointAtEntry(const char* cname, const char* fname) { | 
| 29   ASSERT(script_lib != NULL); | 29   ASSERT(script_lib != NULL); | 
| 30   ASSERT(!Dart_IsError(script_lib)); | 30   ASSERT(!Dart_IsError(script_lib)); | 
| 31   ASSERT(Dart_IsLibrary(script_lib)); | 31   ASSERT(Dart_IsLibrary(script_lib)); | 
| 32   Dart_Breakpoint bpt; |  | 
| 33   Dart_Handle res = Dart_SetBreakpointAtEntry(script_lib, | 32   Dart_Handle res = Dart_SetBreakpointAtEntry(script_lib, | 
| 34                         NewString(cname), | 33                         NewString(cname), | 
| 35                         NewString(fname), | 34                         NewString(fname)); | 
| 36                         &bpt); | 35   EXPECT(Dart_IsInteger(res)); | 
| 37   EXPECT_TRUE(res); |  | 
| 38 } | 36 } | 
| 39 | 37 | 
| 40 | 38 | 
| 41 static Dart_Handle Invoke(const char* func_name) { | 39 static Dart_Handle Invoke(const char* func_name) { | 
| 42   ASSERT(script_lib != NULL); | 40   ASSERT(script_lib != NULL); | 
| 43   ASSERT(!Dart_IsError(script_lib)); | 41   ASSERT(!Dart_IsError(script_lib)); | 
| 44   ASSERT(Dart_IsLibrary(script_lib)); | 42   ASSERT(Dart_IsLibrary(script_lib)); | 
| 45   return Dart_Invoke(script_lib, NewString(func_name), 0, NULL); | 43   return Dart_Invoke(script_lib, NewString(func_name), 0, NULL); | 
| 46 } | 44 } | 
| 47 | 45 | 
| (...skipping 943 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 991   // locates it at the token position of the keyword 'class'. | 989   // locates it at the token position of the keyword 'class'. | 
| 992   func = test_lib.LookupFunctionInSource(script_url, 1); | 990   func = test_lib.LookupFunctionInSource(script_url, 1); | 
| 993   EXPECT(!func.IsNull()); | 991   EXPECT(!func.IsNull()); | 
| 994   EXPECT_STREQ("A.", String::Handle(func.name()).ToCString()); | 992   EXPECT_STREQ("A.", String::Handle(func.name()).ToCString()); | 
| 995 | 993 | 
| 996   func = test_lib.LookupFunctionInSource(script_url, 6); | 994   func = test_lib.LookupFunctionInSource(script_url, 6); | 
| 997   EXPECT(func.IsNull()); | 995   EXPECT(func.IsNull()); | 
| 998   func = test_lib.LookupFunctionInSource(script_url, 10); | 996   func = test_lib.LookupFunctionInSource(script_url, 10); | 
| 999   EXPECT(func.IsNull()); | 997   EXPECT(func.IsNull()); | 
| 1000 | 998 | 
| 1001   Dart_Handle libs = Dart_GetLibraryURLs(); | 999   Dart_Handle libs = Dart_GetLibraryIds(); | 
| 1002   EXPECT(Dart_IsList(libs)); | 1000   EXPECT(Dart_IsList(libs)); | 
| 1003   intptr_t num_libs; | 1001   intptr_t num_libs; | 
| 1004   Dart_ListLength(libs, &num_libs); | 1002   Dart_ListLength(libs, &num_libs); | 
| 1005   EXPECT(num_libs > 0); | 1003   EXPECT(num_libs > 0); | 
| 1006   for (int i = 0; i < num_libs; i++) { | 1004   for (int i = 0; i < num_libs; i++) { | 
| 1007     Dart_Handle lib_url = Dart_ListGetAt(libs, i); | 1005     Dart_Handle lib_id = Dart_ListGetAt(libs, i); | 
| 1008     EXPECT(Dart_IsString(lib_url)); | 1006     EXPECT(Dart_IsInteger(lib_id)); | 
|  | 1007     int64_t id = 0; | 
|  | 1008     Dart_IntegerToInt64(lib_id, &id); | 
|  | 1009     Dart_Handle lib_url = Dart_GetLibraryURL(id); | 
| 1009     char const* chars; | 1010     char const* chars; | 
| 1010     Dart_StringToCString(lib_url, &chars); | 1011     Dart_StringToCString(lib_url, &chars); | 
| 1011     OS::Print("Lib %d: %s\n", i, chars); | 1012     OS::Print("Lib %d: %s\n", i, chars); | 
| 1012 | 1013 | 
| 1013     Dart_Handle scripts = Dart_GetScriptURLs(lib_url); | 1014     Dart_Handle scripts = Dart_GetScriptURLs(lib_url); | 
| 1014     EXPECT(Dart_IsList(scripts)); | 1015     EXPECT(Dart_IsList(scripts)); | 
| 1015     intptr_t num_scripts; | 1016     intptr_t num_scripts; | 
| 1016     Dart_ListLength(scripts, &num_scripts); | 1017     Dart_ListLength(scripts, &num_scripts); | 
| 1017     EXPECT(num_scripts >= 0); | 1018     EXPECT(num_scripts >= 0); | 
| 1018     for (int i = 0; i < num_scripts; i++) { | 1019     for (int i = 0; i < num_scripts; i++) { | 
| 1019       Dart_Handle script_url = Dart_ListGetAt(scripts, i); | 1020       Dart_Handle script_url = Dart_ListGetAt(scripts, i); | 
| 1020       char const* chars; | 1021       char const* chars; | 
| 1021       Dart_StringToCString(script_url, &chars); | 1022       Dart_StringToCString(script_url, &chars); | 
| 1022       OS::Print("  script %d: '%s'\n", i + 1, chars); | 1023       OS::Print("  script %d: '%s'\n", i + 1, chars); | 
| 1023     } | 1024     } | 
| 1024   } | 1025   } | 
| 1025 | 1026 | 
| 1026   Dart_Handle lib_url = NewString(TestCase::url()); | 1027   Dart_Handle lib_url = NewString(TestCase::url()); | 
| 1027   Dart_Handle source = Dart_ScriptGetSource((num_libs - 1), lib_url); | 1028   Dart_Handle source = Dart_ScriptGetSource((num_libs - 1), lib_url); | 
| 1028   EXPECT(Dart_IsString(source)); | 1029   EXPECT(Dart_IsString(source)); | 
| 1029   char const* source_chars; | 1030   char const* source_chars; | 
| 1030   Dart_StringToCString(source, &source_chars); | 1031   Dart_StringToCString(source, &source_chars); | 
| 1031   OS::Print("\n=== source: ===\n%s", source_chars); | 1032   OS::Print("\n=== source: ===\n%s", source_chars); | 
| 1032   EXPECT_STREQ(kScriptChars, source_chars); | 1033   EXPECT_STREQ(kScriptChars, source_chars); | 
| 1033 } | 1034 } | 
| 1034 | 1035 | 
| 1035 | 1036 | 
| 1036 TEST_CASE(GetLibraryURLs) { |  | 
| 1037   const char* kScriptChars = |  | 
| 1038       "main() {" |  | 
| 1039       "  return 12345;" |  | 
| 1040       "}"; |  | 
| 1041 |  | 
| 1042   Dart_Handle lib_list = Dart_GetLibraryURLs(); |  | 
| 1043   EXPECT_VALID(lib_list); |  | 
| 1044   EXPECT(Dart_IsList(lib_list)); |  | 
| 1045   Dart_Handle list_as_string = Dart_ToString(lib_list); |  | 
| 1046   const char* list_cstr = ""; |  | 
| 1047   EXPECT_VALID(Dart_StringToCString(list_as_string, &list_cstr)); |  | 
| 1048   EXPECT_NOTSUBSTRING(TestCase::url(), list_cstr); |  | 
| 1049 |  | 
| 1050   // Load a script. |  | 
| 1051   Dart_Handle url = NewString(TestCase::url()); |  | 
| 1052   Dart_Handle source = NewString(kScriptChars); |  | 
| 1053   EXPECT_VALID(Dart_LoadScript(url, source, 0, 0)); |  | 
| 1054 |  | 
| 1055   lib_list = Dart_GetLibraryURLs(); |  | 
| 1056   EXPECT_VALID(lib_list); |  | 
| 1057   EXPECT(Dart_IsList(lib_list)); |  | 
| 1058   list_as_string = Dart_ToString(lib_list); |  | 
| 1059   list_cstr = ""; |  | 
| 1060   EXPECT_VALID(Dart_StringToCString(list_as_string, &list_cstr)); |  | 
| 1061   EXPECT_SUBSTRING(TestCase::url(), list_cstr); |  | 
| 1062 } |  | 
| 1063 |  | 
| 1064 |  | 
| 1065 static Dart_IsolateId test_isolate_id = ILLEGAL_ISOLATE_ID; | 1037 static Dart_IsolateId test_isolate_id = ILLEGAL_ISOLATE_ID; | 
| 1066 static int verify_callback = 0; | 1038 static int verify_callback = 0; | 
| 1067 static void TestIsolateID(Dart_IsolateId isolate_id, Dart_IsolateEvent kind) { | 1039 static void TestIsolateID(Dart_IsolateId isolate_id, Dart_IsolateEvent kind) { | 
| 1068   if (kind == kCreated) { | 1040   if (kind == kCreated) { | 
| 1069     EXPECT(test_isolate_id == ILLEGAL_ISOLATE_ID); | 1041     EXPECT(test_isolate_id == ILLEGAL_ISOLATE_ID); | 
| 1070     test_isolate_id = isolate_id; | 1042     test_isolate_id = isolate_id; | 
| 1071     Dart_Isolate isolate = Dart_GetIsolate(isolate_id); | 1043     Dart_Isolate isolate = Dart_GetIsolate(isolate_id); | 
| 1072     EXPECT(isolate == Dart_CurrentIsolate()); | 1044     EXPECT(isolate == Dart_CurrentIsolate()); | 
| 1073     verify_callback |= 0x1;  // Register create callback. | 1045     verify_callback |= 0x1;  // Register create callback. | 
| 1074   } else if (kind == kInterrupted) { | 1046   } else if (kind == kInterrupted) { | 
| (...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1545 | 1517 | 
| 1546   Dart_Handle retval = Invoke("main"); | 1518   Dart_Handle retval = Invoke("main"); | 
| 1547   EXPECT(Dart_IsError(retval)); | 1519   EXPECT(Dart_IsError(retval)); | 
| 1548   EXPECT(Dart_IsUnhandledExceptionError(retval)); | 1520   EXPECT(Dart_IsUnhandledExceptionError(retval)); | 
| 1549   EXPECT_EQ(1, breakpoint_hit_counter); | 1521   EXPECT_EQ(1, breakpoint_hit_counter); | 
| 1550 } | 1522 } | 
| 1551 | 1523 | 
| 1552 #endif  // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 1524 #endif  // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 
| 1553 | 1525 | 
| 1554 }  // namespace dart | 1526 }  // namespace dart | 
| OLD | NEW | 
|---|