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

Side by Side Diff: vm/debugger_api_impl_test.cc

Issue 11275008: - Represent strings internally in UTF-16 format, this makes it (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
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_StringAsCString(str, &c_str);
53 return c_str; 53 return c_str;
54 } 54 }
55 55
56 56
57 static char const* BreakpointInfo(Dart_StackTrace trace) { 57 static char const* BreakpointInfo(Dart_StackTrace trace) {
58 static char info_str[128]; 58 static char info_str[128];
59 Dart_ActivationFrame frame; 59 Dart_ActivationFrame frame;
60 Dart_Handle res = Dart_GetActivationFrame(trace, 0, &frame); 60 Dart_Handle res = Dart_GetActivationFrame(trace, 0, &frame);
61 EXPECT_VALID(res); 61 EXPECT_VALID(res);
62 Dart_Handle func_name; 62 Dart_Handle func_name;
(...skipping 28 matching lines...) Expand all
91 91
92 92
93 static void PrintObject(Dart_Handle obj, bool expand) { 93 static void PrintObject(Dart_Handle obj, bool expand) {
94 Dart_Handle obj_class = Dart_GetObjClass(obj); 94 Dart_Handle obj_class = Dart_GetObjClass(obj);
95 EXPECT_VALID(obj_class); 95 EXPECT_VALID(obj_class);
96 EXPECT(!Dart_IsNull(obj_class)); 96 EXPECT(!Dart_IsNull(obj_class));
97 Dart_Handle class_name = Dart_ToString(obj_class); 97 Dart_Handle class_name = Dart_ToString(obj_class);
98 EXPECT_VALID(class_name); 98 EXPECT_VALID(class_name);
99 EXPECT(Dart_IsString(class_name)); 99 EXPECT(Dart_IsString(class_name));
100 char const* class_name_str; 100 char const* class_name_str;
101 Dart_StringToCString(class_name, &class_name_str); 101 Dart_StringAsCString(class_name, &class_name_str);
102 Dart_Handle fields = Dart_GetInstanceFields(obj); 102 Dart_Handle fields = Dart_GetInstanceFields(obj);
103 EXPECT_VALID(fields); 103 EXPECT_VALID(fields);
104 EXPECT(Dart_IsList(fields)); 104 EXPECT(Dart_IsList(fields));
105 OS::Print("object of type '%s'", class_name_str); 105 OS::Print("object of type '%s'", class_name_str);
106 PrintObjectList(fields, "field", false); 106 PrintObjectList(fields, "field", false);
107 Dart_Handle statics = Dart_GetStaticFields(obj_class); 107 Dart_Handle statics = Dart_GetStaticFields(obj_class);
108 EXPECT_VALID(obj_class); 108 EXPECT_VALID(obj_class);
109 PrintObjectList(statics, "static field", false); 109 PrintObjectList(statics, "static field", false);
110 } 110 }
111 111
(...skipping 17 matching lines...) Expand all
129 } 129 }
130 130
131 131
132 static void PrintActivationFrame(Dart_ActivationFrame frame) { 132 static void PrintActivationFrame(Dart_ActivationFrame frame) {
133 Dart_Handle func_name; 133 Dart_Handle func_name;
134 Dart_Handle res; 134 Dart_Handle res;
135 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL); 135 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
136 EXPECT_VALID(res); 136 EXPECT_VALID(res);
137 EXPECT(Dart_IsString(func_name)); 137 EXPECT(Dart_IsString(func_name));
138 const char* func_name_chars; 138 const char* func_name_chars;
139 Dart_StringToCString(func_name, &func_name_chars); 139 Dart_StringAsCString(func_name, &func_name_chars);
140 OS::Print(" function %s\n", func_name_chars); 140 OS::Print(" function %s\n", func_name_chars);
141 Dart_Handle locals = Dart_GetLocalVariables(frame); 141 Dart_Handle locals = Dart_GetLocalVariables(frame);
142 EXPECT_VALID(locals); 142 EXPECT_VALID(locals);
143 intptr_t list_length = 0; 143 intptr_t list_length = 0;
144 Dart_Handle ret = Dart_ListLength(locals, &list_length); 144 Dart_Handle ret = Dart_ListLength(locals, &list_length);
145 EXPECT_VALID(ret); 145 EXPECT_VALID(ret);
146 for (int i = 0; i + 1 < list_length; i += 2) { 146 for (int i = 0; i + 1 < list_length; i += 2) {
147 Dart_Handle name_handle = Dart_ListGetAt(locals, i); 147 Dart_Handle name_handle = Dart_ListGetAt(locals, i);
148 EXPECT_VALID(name_handle); 148 EXPECT_VALID(name_handle);
149 EXPECT(Dart_IsString(name_handle)); 149 EXPECT(Dart_IsString(name_handle));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 195
196 static void VerifyStackFrame(Dart_ActivationFrame frame, 196 static void VerifyStackFrame(Dart_ActivationFrame frame,
197 const char* expected_name, 197 const char* expected_name,
198 Dart_Handle expected_locals) { 198 Dart_Handle expected_locals) {
199 Dart_Handle func_name; 199 Dart_Handle func_name;
200 Dart_Handle res; 200 Dart_Handle res;
201 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL); 201 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
202 EXPECT_VALID(res); 202 EXPECT_VALID(res);
203 EXPECT(Dart_IsString(func_name)); 203 EXPECT(Dart_IsString(func_name));
204 const char* func_name_chars; 204 const char* func_name_chars;
205 Dart_StringToCString(func_name, &func_name_chars); 205 Dart_StringAsCString(func_name, &func_name_chars);
206 if (expected_name != NULL) { 206 if (expected_name != NULL) {
207 EXPECT_STREQ(func_name_chars, expected_name); 207 EXPECT_STREQ(func_name_chars, expected_name);
208 } 208 }
209 209
210 if (!Dart_IsNull(expected_locals)) { 210 if (!Dart_IsNull(expected_locals)) {
211 Dart_Handle locals = Dart_GetLocalVariables(frame); 211 Dart_Handle locals = Dart_GetLocalVariables(frame);
212 EXPECT_VALID(locals); 212 EXPECT_VALID(locals);
213 VerifyListEquals(expected_locals, locals); 213 VerifyListEquals(expected_locals, locals);
214 } 214 }
215 } 215 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 EXPECT_EQ(expected_trace_length, trace_len); 248 EXPECT_EQ(expected_trace_length, trace_len);
249 for (int i = 0; i < trace_len; i++) { 249 for (int i = 0; i < trace_len; i++) {
250 Dart_ActivationFrame frame; 250 Dart_ActivationFrame frame;
251 res = Dart_GetActivationFrame(trace, i, &frame); 251 res = Dart_GetActivationFrame(trace, i, &frame);
252 EXPECT_VALID(res); 252 EXPECT_VALID(res);
253 Dart_Handle func_name; 253 Dart_Handle func_name;
254 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL); 254 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
255 EXPECT_VALID(res); 255 EXPECT_VALID(res);
256 EXPECT(Dart_IsString(func_name)); 256 EXPECT(Dart_IsString(func_name));
257 const char* name_chars; 257 const char* name_chars;
258 Dart_StringToCString(func_name, &name_chars); 258 Dart_StringAsCString(func_name, &name_chars);
259 EXPECT_STREQ(expected_trace[i], name_chars); 259 EXPECT_STREQ(expected_trace[i], name_chars);
260 if (verbose) OS::Print(" >> %d: %s\n", i, name_chars); 260 if (verbose) OS::Print(" >> %d: %s\n", i, name_chars);
261 } 261 }
262 } 262 }
263 263
264 264
265 TEST_CASE(Debug_Breakpoint) { 265 TEST_CASE(Debug_Breakpoint) {
266 const char* kScriptChars = 266 const char* kScriptChars =
267 "void moo(s) { } \n" 267 "void moo(s) { } \n"
268 "class A { \n" 268 "class A { \n"
(...skipping 26 matching lines...) Expand all
295 EXPECT_VALID(res); 295 EXPECT_VALID(res);
296 EXPECT(breakpoint_hit_counter < expected_bpts_length); 296 EXPECT(breakpoint_hit_counter < expected_bpts_length);
297 Dart_ActivationFrame frame; 297 Dart_ActivationFrame frame;
298 res = Dart_GetActivationFrame(trace, 0, &frame); 298 res = Dart_GetActivationFrame(trace, 0, &frame);
299 EXPECT_VALID(res); 299 EXPECT_VALID(res);
300 Dart_Handle func_name; 300 Dart_Handle func_name;
301 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL); 301 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
302 EXPECT_VALID(res); 302 EXPECT_VALID(res);
303 EXPECT(Dart_IsString(func_name)); 303 EXPECT(Dart_IsString(func_name));
304 const char* name_chars; 304 const char* name_chars;
305 Dart_StringToCString(func_name, &name_chars); 305 Dart_StringAsCString(func_name, &name_chars);
306 if (breakpoint_hit_counter < expected_bpts_length) { 306 if (breakpoint_hit_counter < expected_bpts_length) {
307 EXPECT_STREQ(expected_bpts[breakpoint_hit_counter], name_chars); 307 EXPECT_STREQ(expected_bpts[breakpoint_hit_counter], name_chars);
308 } 308 }
309 if (verbose) { 309 if (verbose) {
310 OS::Print(" >> bpt nr %d: %s\n", breakpoint_hit_counter, name_chars); 310 OS::Print(" >> bpt nr %d: %s\n", breakpoint_hit_counter, name_chars);
311 } 311 }
312 breakpoint_hit = true; 312 breakpoint_hit = true;
313 breakpoint_hit_counter++; 313 breakpoint_hit_counter++;
314 Dart_SetStepOut(); 314 Dart_SetStepOut();
315 } 315 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 EXPECT_VALID(res); 371 EXPECT_VALID(res);
372 EXPECT(breakpoint_hit_counter < expected_bpts_length); 372 EXPECT(breakpoint_hit_counter < expected_bpts_length);
373 Dart_ActivationFrame frame; 373 Dart_ActivationFrame frame;
374 res = Dart_GetActivationFrame(trace, 0, &frame); 374 res = Dart_GetActivationFrame(trace, 0, &frame);
375 EXPECT_VALID(res); 375 EXPECT_VALID(res);
376 Dart_Handle func_name; 376 Dart_Handle func_name;
377 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL); 377 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
378 EXPECT_VALID(res); 378 EXPECT_VALID(res);
379 EXPECT(Dart_IsString(func_name)); 379 EXPECT(Dart_IsString(func_name));
380 const char* name_chars; 380 const char* name_chars;
381 Dart_StringToCString(func_name, &name_chars); 381 Dart_StringAsCString(func_name, &name_chars);
382 if (breakpoint_hit_counter < expected_bpts_length) { 382 if (breakpoint_hit_counter < expected_bpts_length) {
383 EXPECT_STREQ(expected_bpts[breakpoint_hit_counter], name_chars); 383 EXPECT_STREQ(expected_bpts[breakpoint_hit_counter], name_chars);
384 } 384 }
385 if (verbose) { 385 if (verbose) {
386 OS::Print(" >> bpt nr %d: %s\n", breakpoint_hit_counter, name_chars); 386 OS::Print(" >> bpt nr %d: %s\n", breakpoint_hit_counter, name_chars);
387 } 387 }
388 breakpoint_hit = true; 388 breakpoint_hit = true;
389 breakpoint_hit_counter++; 389 breakpoint_hit_counter++;
390 Dart_SetStepInto(); 390 Dart_SetStepInto();
391 } 391 }
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 EXPECT_VALID(res); 526 EXPECT_VALID(res);
527 EXPECT(breakpoint_hit_counter < expected_bpts_length); 527 EXPECT(breakpoint_hit_counter < expected_bpts_length);
528 Dart_ActivationFrame frame; 528 Dart_ActivationFrame frame;
529 res = Dart_GetActivationFrame(trace, 0, &frame); 529 res = Dart_GetActivationFrame(trace, 0, &frame);
530 EXPECT_VALID(res); 530 EXPECT_VALID(res);
531 Dart_Handle func_name; 531 Dart_Handle func_name;
532 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL); 532 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
533 EXPECT_VALID(res); 533 EXPECT_VALID(res);
534 EXPECT(Dart_IsString(func_name)); 534 EXPECT(Dart_IsString(func_name));
535 const char* name_chars; 535 const char* name_chars;
536 Dart_StringToCString(func_name, &name_chars); 536 Dart_StringAsCString(func_name, &name_chars);
537 if (verbose) { 537 if (verbose) {
538 OS::Print(" >> bpt nr %d: %s\n", breakpoint_hit_counter, name_chars); 538 OS::Print(" >> bpt nr %d: %s\n", breakpoint_hit_counter, name_chars);
539 } 539 }
540 if (breakpoint_hit_counter < expected_bpts_length) { 540 if (breakpoint_hit_counter < expected_bpts_length) {
541 EXPECT_STREQ(expected_bpts[breakpoint_hit_counter], name_chars); 541 EXPECT_STREQ(expected_bpts[breakpoint_hit_counter], name_chars);
542 } 542 }
543 breakpoint_hit = true; 543 breakpoint_hit = true;
544 breakpoint_hit_counter++; 544 breakpoint_hit_counter++;
545 Dart_SetStepOver(); 545 Dart_SetStepOver();
546 } 546 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 EXPECT_EQ(expected_trace_length, trace_len); 585 EXPECT_EQ(expected_trace_length, trace_len);
586 for (int i = 0; i < trace_len; i++) { 586 for (int i = 0; i < trace_len; i++) {
587 Dart_ActivationFrame frame; 587 Dart_ActivationFrame frame;
588 res = Dart_GetActivationFrame(trace, i, &frame); 588 res = Dart_GetActivationFrame(trace, i, &frame);
589 EXPECT_VALID(res); 589 EXPECT_VALID(res);
590 Dart_Handle func_name; 590 Dart_Handle func_name;
591 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL); 591 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
592 EXPECT_VALID(res); 592 EXPECT_VALID(res);
593 EXPECT(Dart_IsString(func_name)); 593 EXPECT(Dart_IsString(func_name));
594 const char* name_chars; 594 const char* name_chars;
595 Dart_StringToCString(func_name, &name_chars); 595 Dart_StringAsCString(func_name, &name_chars);
596 EXPECT_STREQ(expected_trace[i], name_chars); 596 EXPECT_STREQ(expected_trace[i], name_chars);
597 if (verbose) OS::Print(" >> %d: %s\n", i, name_chars); 597 if (verbose) OS::Print(" >> %d: %s\n", i, name_chars);
598 } 598 }
599 } 599 }
600 600
601 601
602 TEST_CASE(Debug_ClosureBreakpoint) { 602 TEST_CASE(Debug_ClosureBreakpoint) {
603 const char* kScriptChars = 603 const char* kScriptChars =
604 "callback(s) { \n" 604 "callback(s) { \n"
605 " return 111; \n" 605 " return 111; \n"
(...skipping 19 matching lines...) Expand all
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 16 matching lines...) Expand all
687 EXPECT_EQ(expected_trace_length, trace_len); 687 EXPECT_EQ(expected_trace_length, trace_len);
688 for (int i = 0; i < trace_len; i++) { 688 for (int i = 0; i < trace_len; i++) {
689 Dart_ActivationFrame frame; 689 Dart_ActivationFrame frame;
690 res = Dart_GetActivationFrame(trace, i, &frame); 690 res = Dart_GetActivationFrame(trace, i, &frame);
691 EXPECT_VALID(res); 691 EXPECT_VALID(res);
692 Dart_Handle func_name; 692 Dart_Handle func_name;
693 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL); 693 res = Dart_ActivationFrameInfo(frame, &func_name, NULL, NULL, NULL);
694 EXPECT_VALID(res); 694 EXPECT_VALID(res);
695 EXPECT(Dart_IsString(func_name)); 695 EXPECT(Dart_IsString(func_name));
696 const char* name_chars; 696 const char* name_chars;
697 Dart_StringToCString(func_name, &name_chars); 697 Dart_StringAsCString(func_name, &name_chars);
698 EXPECT_STREQ(expected_trace[i], name_chars); 698 EXPECT_STREQ(expected_trace[i], name_chars);
699 if (verbose) OS::Print(" >> %d: %s\n", i, name_chars); 699 if (verbose) OS::Print(" >> %d: %s\n", i, name_chars);
700 } 700 }
701 // Remove the breakpoint after we've hit it twice 701 // Remove the breakpoint after we've hit it twice
702 if (breakpoint_hit_counter == 2) { 702 if (breakpoint_hit_counter == 2) {
703 if (verbose) OS::Print("uninstalling breakpoint\n"); 703 if (verbose) OS::Print("uninstalling breakpoint\n");
704 Dart_Handle res = Dart_RemoveBreakpoint(bp_id_to_be_deleted); 704 Dart_Handle res = Dart_RemoveBreakpoint(bp_id_to_be_deleted);
705 EXPECT_VALID(res); 705 EXPECT_VALID(res);
706 } 706 }
707 } 707 }
708 708
709 709
710 TEST_CASE(Debug_DeleteBreakpoint) { 710 TEST_CASE(Debug_DeleteBreakpoint) {
711 const char* kScriptChars = 711 const char* kScriptChars =
712 "moo(s) { } \n" 712 "moo(s) { } \n"
713 " \n" 713 " \n"
714 "foo() { \n" 714 "foo() { \n"
715 " moo('good news'); \n" 715 " moo('good news'); \n"
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 14 matching lines...) Expand all
779 EXPECT_VALID(retval); 779 EXPECT_VALID(retval);
780 int num_fields = list_length / 2; 780 int num_fields = list_length / 2;
781 OS::Print("Class A has %d fields:\n", num_fields); 781 OS::Print("Class A has %d fields:\n", num_fields);
782 ASSERT(expected_num_fields == num_fields); 782 ASSERT(expected_num_fields == num_fields);
783 783
784 for (int i = 0; i + 1 < list_length; i += 2) { 784 for (int i = 0; i + 1 < list_length; i += 2) {
785 Dart_Handle name_handle = Dart_ListGetAt(fields, i); 785 Dart_Handle name_handle = Dart_ListGetAt(fields, i);
786 EXPECT_VALID(name_handle); 786 EXPECT_VALID(name_handle);
787 EXPECT(Dart_IsString(name_handle)); 787 EXPECT(Dart_IsString(name_handle));
788 char const* name; 788 char const* name;
789 Dart_StringToCString(name_handle, &name); 789 Dart_StringAsCString(name_handle, &name);
790 EXPECT_STREQ(expected[expected_idx].field_name, name); 790 EXPECT_STREQ(expected[expected_idx].field_name, name);
791 Dart_Handle value_handle = Dart_ListGetAt(fields, i + 1); 791 Dart_Handle value_handle = Dart_ListGetAt(fields, i + 1);
792 EXPECT_VALID(value_handle); 792 EXPECT_VALID(value_handle);
793 value_handle = Dart_ToString(value_handle); 793 value_handle = Dart_ToString(value_handle);
794 EXPECT_VALID(value_handle); 794 EXPECT_VALID(value_handle);
795 EXPECT(Dart_IsString(value_handle)); 795 EXPECT(Dart_IsString(value_handle));
796 char const* value; 796 char const* value;
797 Dart_StringToCString(value_handle, &value); 797 Dart_StringAsCString(value_handle, &value);
798 EXPECT_STREQ(expected[expected_idx].field_value, value); 798 EXPECT_STREQ(expected[expected_idx].field_value, value);
799 OS::Print(" %s: %s\n", name, value); 799 OS::Print(" %s: %s\n", name, value);
800 expected_idx++; 800 expected_idx++;
801 } 801 }
802 } 802 }
803 803
804 804
805 TEST_CASE(Debug_InspectStaticField) { 805 TEST_CASE(Debug_InspectStaticField) {
806 const char* kScriptChars = 806 const char* kScriptChars =
807 " class A { \n" 807 " class A { \n"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
859 Dart_Handle retval = Dart_ListLength(fields, &list_length); 859 Dart_Handle retval = Dart_ListLength(fields, &list_length);
860 EXPECT_VALID(retval); 860 EXPECT_VALID(retval);
861 int num_fields = list_length / 2; 861 int num_fields = list_length / 2;
862 EXPECT_EQ(kNumObjectFields, num_fields); 862 EXPECT_EQ(kNumObjectFields, num_fields);
863 OS::Print("Object has %d fields:\n", num_fields); 863 OS::Print("Object has %d fields:\n", num_fields);
864 for (int i = 0; i + 1 < list_length; i += 2) { 864 for (int i = 0; i + 1 < list_length; i += 2) {
865 Dart_Handle name_handle = Dart_ListGetAt(fields, i); 865 Dart_Handle name_handle = Dart_ListGetAt(fields, i);
866 EXPECT_VALID(name_handle); 866 EXPECT_VALID(name_handle);
867 EXPECT(Dart_IsString(name_handle)); 867 EXPECT(Dart_IsString(name_handle));
868 char const* name; 868 char const* name;
869 Dart_StringToCString(name_handle, &name); 869 Dart_StringAsCString(name_handle, &name);
870 Dart_Handle value_handle = Dart_ListGetAt(fields, i + 1); 870 Dart_Handle value_handle = Dart_ListGetAt(fields, i + 1);
871 EXPECT_VALID(value_handle); 871 EXPECT_VALID(value_handle);
872 value_handle = Dart_ToString(value_handle); 872 value_handle = Dart_ToString(value_handle);
873 EXPECT_VALID(value_handle); 873 EXPECT_VALID(value_handle);
874 EXPECT(Dart_IsString(value_handle)); 874 EXPECT(Dart_IsString(value_handle));
875 char const* value; 875 char const* value;
876 Dart_StringToCString(value_handle, &value); 876 Dart_StringAsCString(value_handle, &value);
877 OS::Print(" %s: %s\n", name, value); 877 OS::Print(" %s: %s\n", name, value);
878 } 878 }
879 879
880 // Check that an integer value returns an empty list of fields. 880 // Check that an integer value returns an empty list of fields.
881 Dart_Handle triple_six = Invoke("get_int"); 881 Dart_Handle triple_six = Invoke("get_int");
882 EXPECT_VALID(triple_six); 882 EXPECT_VALID(triple_six);
883 EXPECT(Dart_IsInteger(triple_six)); 883 EXPECT(Dart_IsInteger(triple_six));
884 int64_t int_value = 0; 884 int64_t int_value = 0;
885 Dart_IntegerToInt64(triple_six, &int_value); 885 Dart_IntegerToInt64(triple_six, &int_value);
886 EXPECT_EQ(666, int_value); 886 EXPECT_EQ(666, int_value);
(...skipping 11 matching lines...) Expand all
898 EXPECT_VALID(fields); 898 EXPECT_VALID(fields);
899 EXPECT(Dart_IsList(fields)); 899 EXPECT(Dart_IsList(fields));
900 list_length = 0; 900 list_length = 0;
901 retval = Dart_ListLength(fields, &list_length); 901 retval = Dart_ListLength(fields, &list_length);
902 EXPECT_VALID(retval); 902 EXPECT_VALID(retval);
903 EXPECT_EQ(2, list_length); 903 EXPECT_EQ(2, list_length);
904 Dart_Handle name_handle = Dart_ListGetAt(fields, 0); 904 Dart_Handle name_handle = Dart_ListGetAt(fields, 0);
905 EXPECT_VALID(name_handle); 905 EXPECT_VALID(name_handle);
906 EXPECT(Dart_IsString(name_handle)); 906 EXPECT(Dart_IsString(name_handle));
907 char const* name; 907 char const* name;
908 Dart_StringToCString(name_handle, &name); 908 Dart_StringAsCString(name_handle, &name);
909 EXPECT_STREQ("bla", name); 909 EXPECT_STREQ("bla", name);
910 Dart_Handle value_handle = Dart_ListGetAt(fields, 1); 910 Dart_Handle value_handle = Dart_ListGetAt(fields, 1);
911 EXPECT_VALID(value_handle); 911 EXPECT_VALID(value_handle);
912 value_handle = Dart_ToString(value_handle); 912 value_handle = Dart_ToString(value_handle);
913 EXPECT_VALID(value_handle); 913 EXPECT_VALID(value_handle);
914 EXPECT(Dart_IsString(value_handle)); 914 EXPECT(Dart_IsString(value_handle));
915 char const* value; 915 char const* value;
916 Dart_StringToCString(value_handle, &value); 916 Dart_StringAsCString(value_handle, &value);
917 EXPECT_STREQ("blah blah", value); 917 EXPECT_STREQ("blah blah", value);
918 918
919 // Check static field of B's superclass. 919 // Check static field of B's superclass.
920 Dart_Handle class_A = Dart_GetSuperclass(class_B); 920 Dart_Handle class_A = Dart_GetSuperclass(class_B);
921 EXPECT_VALID(class_A); 921 EXPECT_VALID(class_A);
922 EXPECT(!Dart_IsNull(class_A)); 922 EXPECT(!Dart_IsNull(class_A));
923 fields = Dart_GetStaticFields(class_A); 923 fields = Dart_GetStaticFields(class_A);
924 EXPECT_VALID(fields); 924 EXPECT_VALID(fields);
925 EXPECT(Dart_IsList(fields)); 925 EXPECT(Dart_IsList(fields));
926 list_length = 0; 926 list_length = 0;
927 retval = Dart_ListLength(fields, &list_length); 927 retval = Dart_ListLength(fields, &list_length);
928 EXPECT_VALID(retval); 928 EXPECT_VALID(retval);
929 EXPECT_EQ(4, list_length); 929 EXPECT_EQ(4, list_length);
930 // Static field "bla" should have value "yada yada yada". 930 // Static field "bla" should have value "yada yada yada".
931 name_handle = Dart_ListGetAt(fields, 0); 931 name_handle = Dart_ListGetAt(fields, 0);
932 EXPECT_VALID(name_handle); 932 EXPECT_VALID(name_handle);
933 EXPECT(Dart_IsString(name_handle)); 933 EXPECT(Dart_IsString(name_handle));
934 Dart_StringToCString(name_handle, &name); 934 Dart_StringAsCString(name_handle, &name);
935 EXPECT_STREQ("bla", name); 935 EXPECT_STREQ("bla", name);
936 value_handle = Dart_ListGetAt(fields, 1); 936 value_handle = Dart_ListGetAt(fields, 1);
937 EXPECT_VALID(value_handle); 937 EXPECT_VALID(value_handle);
938 value_handle = Dart_ToString(value_handle); 938 value_handle = Dart_ToString(value_handle);
939 EXPECT_VALID(value_handle); 939 EXPECT_VALID(value_handle);
940 EXPECT(Dart_IsString(value_handle)); 940 EXPECT(Dart_IsString(value_handle));
941 Dart_StringToCString(value_handle, &value); 941 Dart_StringAsCString(value_handle, &value);
942 EXPECT_STREQ("yada yada yada", value); 942 EXPECT_STREQ("yada yada yada", value);
943 // The static field "error" should result in a compile error. 943 // The static field "error" should result in a compile error.
944 name_handle = Dart_ListGetAt(fields, 2); 944 name_handle = Dart_ListGetAt(fields, 2);
945 EXPECT_VALID(name_handle); 945 EXPECT_VALID(name_handle);
946 EXPECT(Dart_IsString(name_handle)); 946 EXPECT(Dart_IsString(name_handle));
947 Dart_StringToCString(name_handle, &name); 947 Dart_StringAsCString(name_handle, &name);
948 EXPECT_STREQ("error", name); 948 EXPECT_STREQ("error", name);
949 value_handle = Dart_ListGetAt(fields, 3); 949 value_handle = Dart_ListGetAt(fields, 3);
950 EXPECT(Dart_IsError(value_handle)); 950 EXPECT(Dart_IsError(value_handle));
951 } 951 }
952 952
953 953
954 TEST_CASE(Debug_LookupSourceLine) { 954 TEST_CASE(Debug_LookupSourceLine) {
955 const char* kScriptChars = 955 const char* kScriptChars =
956 /*1*/ "class A { \n" 956 /*1*/ "class A { \n"
957 /*2*/ " static void foo() { \n" 957 /*2*/ " static void foo() { \n"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
992 992
993 Dart_Handle libs = Dart_GetLibraryURLs(); 993 Dart_Handle libs = Dart_GetLibraryURLs();
994 EXPECT(Dart_IsList(libs)); 994 EXPECT(Dart_IsList(libs));
995 intptr_t num_libs; 995 intptr_t num_libs;
996 Dart_ListLength(libs, &num_libs); 996 Dart_ListLength(libs, &num_libs);
997 EXPECT(num_libs > 0); 997 EXPECT(num_libs > 0);
998 for (int i = 0; i < num_libs; i++) { 998 for (int i = 0; i < num_libs; i++) {
999 Dart_Handle lib_url = Dart_ListGetAt(libs, i); 999 Dart_Handle lib_url = Dart_ListGetAt(libs, i);
1000 EXPECT(Dart_IsString(lib_url)); 1000 EXPECT(Dart_IsString(lib_url));
1001 char const* chars; 1001 char const* chars;
1002 Dart_StringToCString(lib_url, &chars); 1002 Dart_StringAsCString(lib_url, &chars);
1003 OS::Print("Lib %d: %s\n", i, chars); 1003 OS::Print("Lib %d: %s\n", i, chars);
1004 1004
1005 Dart_Handle scripts = Dart_GetScriptURLs(lib_url); 1005 Dart_Handle scripts = Dart_GetScriptURLs(lib_url);
1006 EXPECT(Dart_IsList(scripts)); 1006 EXPECT(Dart_IsList(scripts));
1007 intptr_t num_scripts; 1007 intptr_t num_scripts;
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_StringAsCString(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_StringAsCString(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_StringAsCString(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_StringAsCString(list_as_string, &list_cstr));
1053 EXPECT_SUBSTRING(TestCase::url(), list_cstr); 1053 EXPECT_SUBSTRING(TestCase::url(), list_cstr);
1054 } 1054 }
1055 1055
1056 1056
1057 static Dart_IsolateId test_isolate_id = ILLEGAL_ISOLATE_ID; 1057 static Dart_IsolateId test_isolate_id = ILLEGAL_ISOLATE_ID;
1058 static int verify_callback = 0; 1058 static int verify_callback = 0;
1059 static void TestIsolateID(Dart_IsolateId isolate_id, Dart_IsolateEvent kind) { 1059 static void TestIsolateID(Dart_IsolateId isolate_id, Dart_IsolateEvent kind) {
1060 if (kind == kCreated) { 1060 if (kind == kCreated) {
1061 EXPECT(test_isolate_id == ILLEGAL_ISOLATE_ID); 1061 EXPECT(test_isolate_id == ILLEGAL_ISOLATE_ID);
1062 test_isolate_id = isolate_id; 1062 test_isolate_id = isolate_id;
(...skipping 157 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