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

Side by Side Diff: runtime/vm/debugger_api_impl_test.cc

Issue 11318018: - Represent strings internally in UTF-16 format, this makes it (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 1 month 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 | Annotate | Revision Log
OLDNEW
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 13 matching lines...) Expand all
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; 32 Dart_Breakpoint bpt;
33 Dart_Handle res = Dart_SetBreakpointAtEntry(script_lib, 33 Dart_Handle res = Dart_SetBreakpointAtEntry(script_lib,
34 Dart_NewString(cname), 34 NewString(cname),
35 Dart_NewString(fname), 35 NewString(fname),
36 &bpt); 36 &bpt);
37 EXPECT_VALID(res); 37 EXPECT_VALID(res);
38 } 38 }
39 39
40 40
41 static Dart_Handle Invoke(const char* func_name) { 41 static Dart_Handle Invoke(const char* func_name) {
42 ASSERT(script_lib != NULL); 42 ASSERT(script_lib != NULL);
43 ASSERT(!Dart_IsError(script_lib)); 43 ASSERT(!Dart_IsError(script_lib));
44 ASSERT(Dart_IsLibrary(script_lib)); 44 ASSERT(Dart_IsLibrary(script_lib));
45 return Dart_Invoke(script_lib, Dart_NewString(func_name), 0, NULL); 45 return Dart_Invoke(script_lib, NewString(func_name), 0, NULL);
46 } 46 }
47 47
48 48
49 static char const* ToCString(Dart_Handle str) { 49 static char const* ToCString(Dart_Handle str) {
50 EXPECT(Dart_IsString(str)); 50 EXPECT(Dart_IsString(str));
51 char const* c_str = NULL; 51 char const* c_str = NULL;
52 Dart_StringToCString(str, &c_str); 52 Dart_StringToCString(str, &c_str);
53 return c_str; 53 return c_str;
54 } 54 }
55 55
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 EXPECT_EQ(442, int_value); 625 EXPECT_EQ(442, int_value);
626 EXPECT_EQ(2, breakpoint_hit_counter); 626 EXPECT_EQ(2, breakpoint_hit_counter);
627 } 627 }
628 628
629 629
630 static void ExprClosureBreakpointHandler(Dart_IsolateId isolate_id, 630 static void ExprClosureBreakpointHandler(Dart_IsolateId isolate_id,
631 Dart_Breakpoint bpt, 631 Dart_Breakpoint bpt,
632 Dart_StackTrace trace) { 632 Dart_StackTrace trace) {
633 static const char* expected_trace[] = {"add", "main"}; 633 static const char* expected_trace[] = {"add", "main"};
634 Dart_Handle add_locals = Dart_NewList(4); 634 Dart_Handle add_locals = Dart_NewList(4);
635 Dart_ListSetAt(add_locals, 0, Dart_NewString("a")); 635 Dart_ListSetAt(add_locals, 0, NewString("a"));
636 Dart_ListSetAt(add_locals, 1, Dart_NewInteger(10)); 636 Dart_ListSetAt(add_locals, 1, Dart_NewInteger(10));
637 Dart_ListSetAt(add_locals, 2, Dart_NewString("b")); 637 Dart_ListSetAt(add_locals, 2, NewString("b"));
638 Dart_ListSetAt(add_locals, 3, Dart_NewInteger(20)); 638 Dart_ListSetAt(add_locals, 3, Dart_NewInteger(20));
639 Dart_Handle expected_locals[] = {add_locals, Dart_Null()}; 639 Dart_Handle expected_locals[] = {add_locals, Dart_Null()};
640 breakpoint_hit_counter++; 640 breakpoint_hit_counter++;
641 PrintStackTrace(trace); 641 PrintStackTrace(trace);
642 VerifyStackTrace(trace, expected_trace, expected_locals, 2); 642 VerifyStackTrace(trace, expected_trace, expected_locals, 2);
643 } 643 }
644 644
645 645
646 TEST_CASE(Debug_ExprClosureBreakpoint) { 646 TEST_CASE(Debug_ExprClosureBreakpoint) {
647 const char* kScriptChars = 647 const char* kScriptChars =
648 "var c; \n" 648 "var c; \n"
649 " \n" 649 " \n"
650 "main() { \n" 650 "main() { \n"
651 " c = add(a, b) { \n" 651 " c = add(a, b) { \n"
652 " return a + b; \n" 652 " return a + b; \n"
653 " }; \n" 653 " }; \n"
654 " return c(10, 20); \n" 654 " return c(10, 20); \n"
655 "} \n"; 655 "} \n";
656 656
657 LoadScript(kScriptChars); 657 LoadScript(kScriptChars);
658 Dart_SetBreakpointHandler(&ExprClosureBreakpointHandler); 658 Dart_SetBreakpointHandler(&ExprClosureBreakpointHandler);
659 659
660 Dart_Handle script_url = Dart_NewString(TestCase::url()); 660 Dart_Handle script_url = NewString(TestCase::url());
661 intptr_t line_no = 5; // In closure 'add'. 661 intptr_t line_no = 5; // In closure 'add'.
662 Dart_Handle res = Dart_SetBreakpoint(script_url, line_no); 662 Dart_Handle res = Dart_SetBreakpoint(script_url, line_no);
663 EXPECT_VALID(res); 663 EXPECT_VALID(res);
664 EXPECT(Dart_IsInteger(res)); 664 EXPECT(Dart_IsInteger(res));
665 665
666 breakpoint_hit_counter = 0; 666 breakpoint_hit_counter = 0;
667 Dart_Handle retval = Invoke("main"); 667 Dart_Handle retval = Invoke("main");
668 EXPECT_VALID(retval); 668 EXPECT_VALID(retval);
669 int64_t int_value = 0; 669 int64_t int_value = 0;
670 Dart_IntegerToInt64(retval, &int_value); 670 Dart_IntegerToInt64(retval, &int_value);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 "} \n" 716 "} \n"
717 " \n" 717 " \n"
718 "void main() { \n" 718 "void main() { \n"
719 " foo(); \n" 719 " foo(); \n"
720 " foo(); \n" 720 " foo(); \n"
721 " foo(); \n" 721 " foo(); \n"
722 "} \n"; 722 "} \n";
723 723
724 LoadScript(kScriptChars); 724 LoadScript(kScriptChars);
725 725
726 Dart_Handle script_url = Dart_NewString(TestCase::url()); 726 Dart_Handle script_url = NewString(TestCase::url());
727 intptr_t line_no = 4; // In function 'foo'. 727 intptr_t line_no = 4; // In function 'foo'.
728 728
729 Dart_SetBreakpointHandler(&DeleteBreakpointHandler); 729 Dart_SetBreakpointHandler(&DeleteBreakpointHandler);
730 730
731 Dart_Handle res = Dart_SetBreakpoint(script_url, line_no); 731 Dart_Handle res = Dart_SetBreakpoint(script_url, line_no);
732 EXPECT_VALID(res); 732 EXPECT_VALID(res);
733 EXPECT(Dart_IsInteger(res)); 733 EXPECT(Dart_IsInteger(res));
734 int64_t bp_id = 0; 734 int64_t bp_id = 0;
735 Dart_IntegerToInt64(res, &bp_id); 735 Dart_IntegerToInt64(res, &bp_id);
736 736
737 // Function main() calls foo() 3 times. On the second iteration, the 737 // Function main() calls foo() 3 times. On the second iteration, the
738 // breakpoint is removed by the handler, so we expect the breakpoint 738 // breakpoint is removed by the handler, so we expect the breakpoint
739 // to fire twice only. 739 // to fire twice only.
740 bp_id_to_be_deleted = bp_id; 740 bp_id_to_be_deleted = bp_id;
741 breakpoint_hit_counter = 0; 741 breakpoint_hit_counter = 0;
742 Dart_Handle retval = Invoke("main"); 742 Dart_Handle retval = Invoke("main");
743 EXPECT_VALID(retval); 743 EXPECT_VALID(retval);
744 EXPECT_EQ(2, breakpoint_hit_counter); 744 EXPECT_EQ(2, breakpoint_hit_counter);
745 } 745 }
746 746
747 747
748 static void InspectStaticFieldHandler(Dart_IsolateId isolate_id, 748 static void InspectStaticFieldHandler(Dart_IsolateId isolate_id,
749 Dart_Breakpoint bpt, 749 Dart_Breakpoint bpt,
750 Dart_StackTrace trace) { 750 Dart_StackTrace trace) {
751 ASSERT(script_lib != NULL); 751 ASSERT(script_lib != NULL);
752 ASSERT(!Dart_IsError(script_lib)); 752 ASSERT(!Dart_IsError(script_lib));
753 ASSERT(Dart_IsLibrary(script_lib)); 753 ASSERT(Dart_IsLibrary(script_lib));
754 Dart_Handle class_A = Dart_GetClass(script_lib, Dart_NewString("A")); 754 Dart_Handle class_A = Dart_GetClass(script_lib, NewString("A"));
755 EXPECT_VALID(class_A); 755 EXPECT_VALID(class_A);
756 756
757 const int expected_num_fields = 2; 757 const int expected_num_fields = 2;
758 struct { 758 struct {
759 const char* field_name; 759 const char* field_name;
760 const char* field_value; 760 const char* field_value;
761 } expected[] = { 761 } expected[] = {
762 // Expected values at first breakpoint. 762 // Expected values at first breakpoint.
763 { "bla", "yada yada yada"}, 763 { "bla", "yada yada yada"},
764 { "u", "null" }, 764 { "u", "null" },
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
1008 Dart_ListLength(scripts, &num_scripts); 1008 Dart_ListLength(scripts, &num_scripts);
1009 EXPECT(num_scripts >= 0); 1009 EXPECT(num_scripts >= 0);
1010 for (int i = 0; i < num_scripts; i++) { 1010 for (int i = 0; i < num_scripts; i++) {
1011 Dart_Handle script_url = Dart_ListGetAt(scripts, i); 1011 Dart_Handle script_url = Dart_ListGetAt(scripts, i);
1012 char const* chars; 1012 char const* chars;
1013 Dart_StringToCString(script_url, &chars); 1013 Dart_StringToCString(script_url, &chars);
1014 OS::Print(" script %d: '%s'\n", i + 1, chars); 1014 OS::Print(" script %d: '%s'\n", i + 1, chars);
1015 } 1015 }
1016 } 1016 }
1017 1017
1018 Dart_Handle lib_url = Dart_NewString(TestCase::url()); 1018 Dart_Handle lib_url = NewString(TestCase::url());
1019 Dart_Handle source = Dart_GetScriptSource(lib_url, lib_url); 1019 Dart_Handle source = Dart_GetScriptSource(lib_url, lib_url);
1020 EXPECT(Dart_IsString(source)); 1020 EXPECT(Dart_IsString(source));
1021 char const* source_chars; 1021 char const* source_chars;
1022 Dart_StringToCString(source, &source_chars); 1022 Dart_StringToCString(source, &source_chars);
1023 OS::Print("\n=== source: ===\n%s", source_chars); 1023 OS::Print("\n=== source: ===\n%s", source_chars);
1024 EXPECT_STREQ(kScriptChars, source_chars); 1024 EXPECT_STREQ(kScriptChars, source_chars);
1025 } 1025 }
1026 1026
1027 1027
1028 TEST_CASE(GetLibraryURLs) { 1028 TEST_CASE(GetLibraryURLs) {
1029 const char* kScriptChars = 1029 const char* kScriptChars =
1030 "main() {" 1030 "main() {"
1031 " return 12345;" 1031 " return 12345;"
1032 "}"; 1032 "}";
1033 1033
1034 Dart_Handle lib_list = Dart_GetLibraryURLs(); 1034 Dart_Handle lib_list = Dart_GetLibraryURLs();
1035 EXPECT_VALID(lib_list); 1035 EXPECT_VALID(lib_list);
1036 EXPECT(Dart_IsList(lib_list)); 1036 EXPECT(Dart_IsList(lib_list));
1037 Dart_Handle list_as_string = Dart_ToString(lib_list); 1037 Dart_Handle list_as_string = Dart_ToString(lib_list);
1038 const char* list_cstr = ""; 1038 const char* list_cstr = "";
1039 EXPECT_VALID(Dart_StringToCString(list_as_string, &list_cstr)); 1039 EXPECT_VALID(Dart_StringToCString(list_as_string, &list_cstr));
1040 EXPECT_NOTSUBSTRING(TestCase::url(), list_cstr); 1040 EXPECT_NOTSUBSTRING(TestCase::url(), list_cstr);
1041 1041
1042 // Load a script. 1042 // Load a script.
1043 Dart_Handle url = Dart_NewString(TestCase::url()); 1043 Dart_Handle url = NewString(TestCase::url());
1044 Dart_Handle source = Dart_NewString(kScriptChars); 1044 Dart_Handle source = NewString(kScriptChars);
1045 EXPECT_VALID(Dart_LoadScript(url, source)); 1045 EXPECT_VALID(Dart_LoadScript(url, source));
1046 1046
1047 lib_list = Dart_GetLibraryURLs(); 1047 lib_list = Dart_GetLibraryURLs();
1048 EXPECT_VALID(lib_list); 1048 EXPECT_VALID(lib_list);
1049 EXPECT(Dart_IsList(lib_list)); 1049 EXPECT(Dart_IsList(lib_list));
1050 list_as_string = Dart_ToString(lib_list); 1050 list_as_string = Dart_ToString(lib_list);
1051 list_cstr = ""; 1051 list_cstr = "";
1052 EXPECT_VALID(Dart_StringToCString(list_as_string, &list_cstr)); 1052 EXPECT_VALID(Dart_StringToCString(list_as_string, &list_cstr));
1053 EXPECT_SUBSTRING(TestCase::url(), list_cstr); 1053 EXPECT_SUBSTRING(TestCase::url(), list_cstr);
1054 } 1054 }
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
1220 while (interrupt_isolate_id != ILLEGAL_ISOLATE_ID) { 1220 while (interrupt_isolate_id != ILLEGAL_ISOLATE_ID) {
1221 ml.Wait(); 1221 ml.Wait();
1222 } 1222 }
1223 } 1223 }
1224 EXPECT(interrupt_isolate_id == ILLEGAL_ISOLATE_ID); 1224 EXPECT(interrupt_isolate_id == ILLEGAL_ISOLATE_ID);
1225 } 1225 }
1226 1226
1227 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). 1227 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64).
1228 1228
1229 } // namespace dart 1229 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698