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 1508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1519 breakpoint_hit_counter++; | 1519 breakpoint_hit_counter++; |
1520 } | 1520 } |
1521 | 1521 |
1522 | 1522 |
1523 TEST_CASE(Debug_EvaluateExpr) { | 1523 TEST_CASE(Debug_EvaluateExpr) { |
1524 const char* kScriptChars = | 1524 const char* kScriptChars = |
1525 "import 'dart:math'; \n" | 1525 "import 'dart:math'; \n" |
1526 "main() { \n" | 1526 "main() { \n" |
1527 " var p = new Point(3, 4); \n" | 1527 " var p = new Point(3, 4); \n" |
1528 " l = [1, 2, 3]; /*BP*/ \n" | 1528 " l = [1, 2, 3]; /*BP*/ \n" |
| 1529 " m = {'\"': 'quote' , \n" |
| 1530 " \"\t\": 'tab' }; \n" |
1529 " return p; \n" | 1531 " return p; \n" |
1530 "} \n" | 1532 "} \n" |
1531 "var _factor = 2; \n" | 1533 "var _factor = 2; \n" |
1532 "var l; \n" | 1534 "var l; \n" |
| 1535 "var m; \n" |
1533 "class Point { \n" | 1536 "class Point { \n" |
1534 " var x, y; \n" | 1537 " var x, y; \n" |
1535 " Point(this.x, this.y); \n" | 1538 " Point(this.x, this.y); \n" |
1536 "} \n"; | 1539 "} \n"; |
1537 | 1540 |
1538 LoadScript(kScriptChars); | 1541 LoadScript(kScriptChars); |
1539 Dart_SetPausedEventHandler(&TestEvaluateHandler); | 1542 Dart_SetPausedEventHandler(&TestEvaluateHandler); |
1540 | 1543 |
1541 | 1544 |
1542 Dart_Handle script_url = NewString(TestCase::url()); | 1545 Dart_Handle script_url = NewString(TestCase::url()); |
1543 intptr_t line_no = 4; | 1546 intptr_t line_no = 4; |
1544 Dart_Handle res = Dart_SetBreakpoint(script_url, line_no); | 1547 Dart_Handle res = Dart_SetBreakpoint(script_url, line_no); |
1545 EXPECT_VALID(res); | 1548 EXPECT_VALID(res); |
1546 | 1549 |
1547 breakpoint_hit = false; | 1550 breakpoint_hit = false; |
1548 Dart_Handle point = Invoke("main"); | 1551 Dart_Handle point = Invoke("main"); |
1549 EXPECT_VALID(point); | 1552 EXPECT_VALID(point); |
1550 EXPECT(breakpoint_hit == true); | 1553 EXPECT(breakpoint_hit == true); |
1551 | 1554 |
1552 Dart_Handle r = | 1555 Dart_Handle r = |
1553 Dart_EvaluateExpr(point, NewString("_factor * sqrt(x*x + y*y)")); | 1556 Dart_EvaluateExpr(point, NewString("_factor * sqrt(x*x + y*y)")); |
1554 EXPECT_VALID(r); | 1557 EXPECT_VALID(r); |
1555 EXPECT(Dart_IsDouble(r)); | 1558 EXPECT(Dart_IsDouble(r)); |
1556 EXPECT_EQ(50.0, ToDouble(r)); | 1559 EXPECT_EQ(50.0, ToDouble(r)); |
1557 | 1560 |
1558 Dart_Handle len = Dart_EvaluateExpr(point, NewString("l.length")); | 1561 Dart_Handle len = Dart_EvaluateExpr(point, NewString("l.length")); |
1559 EXPECT_VALID(len); | 1562 EXPECT_VALID(len); |
1560 EXPECT(Dart_IsNumber(len)); | 1563 EXPECT(Dart_IsNumber(len)); |
1561 EXPECT_EQ(3, ToInt64(len)); | 1564 EXPECT_EQ(3, ToInt64(len)); |
| 1565 |
| 1566 Dart_Handle point_class = Dart_GetClass(script_lib, NewString("Point")); |
| 1567 EXPECT_VALID(point_class); |
| 1568 Dart_Handle elem = Dart_EvaluateExpr(point_class, NewString("m['\"']")); |
| 1569 EXPECT_VALID(elem); |
| 1570 EXPECT(Dart_IsString(elem)); |
| 1571 EXPECT_STREQ("quote", ToCString(elem)); |
| 1572 |
| 1573 elem = Dart_EvaluateExpr(point_class, NewString("m[\"\\t\"]")); |
| 1574 EXPECT_VALID(elem); |
| 1575 EXPECT(Dart_IsString(elem)); |
| 1576 EXPECT_STREQ("tab", ToCString(elem)); |
1562 } | 1577 } |
1563 | 1578 |
1564 | 1579 |
1565 TEST_CASE(Debug_GetSupertype) { | 1580 TEST_CASE(Debug_GetSupertype) { |
1566 const char* kScriptChars = | 1581 const char* kScriptChars = |
1567 "class Test {\n" | 1582 "class Test {\n" |
1568 "}\n" | 1583 "}\n" |
1569 "class Test1 extends Test {\n" | 1584 "class Test1 extends Test {\n" |
1570 "}\n" | 1585 "}\n" |
1571 "class Test2<T> {\n" | 1586 "class Test2<T> {\n" |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1701 | 1716 |
1702 Dart_Handle list_type = Dart_InstanceGetType(list_access_test_obj); | 1717 Dart_Handle list_type = Dart_InstanceGetType(list_access_test_obj); |
1703 Dart_Handle super_type = Dart_GetSupertype(list_type); | 1718 Dart_Handle super_type = Dart_GetSupertype(list_type); |
1704 EXPECT(!Dart_IsError(super_type)); | 1719 EXPECT(!Dart_IsError(super_type)); |
1705 super_type = Dart_GetSupertype(super_type); | 1720 super_type = Dart_GetSupertype(super_type); |
1706 EXPECT(!Dart_IsError(super_type)); | 1721 EXPECT(!Dart_IsError(super_type)); |
1707 EXPECT(super_type == Dart_Null()); | 1722 EXPECT(super_type == Dart_Null()); |
1708 } | 1723 } |
1709 | 1724 |
1710 } // namespace dart | 1725 } // namespace dart |
OLD | NEW |