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_api.h" | 5 #include "include/dart_api.h" |
6 #include "bin/builtin.h" | 6 #include "bin/builtin.h" |
7 #include "platform/assert.h" | 7 #include "platform/assert.h" |
8 #include "platform/json.h" | 8 #include "platform/json.h" |
9 #include "platform/utils.h" | 9 #include "platform/utils.h" |
10 #include "vm/class_finalizer.h" | 10 #include "vm/class_finalizer.h" |
(...skipping 7719 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7730 Dart_Handle result = Dart_Invoke(lib, | 7730 Dart_Handle result = Dart_Invoke(lib, |
7731 NewString("main"), | 7731 NewString("main"), |
7732 0, | 7732 0, |
7733 NULL); | 7733 NULL); |
7734 int64_t value = 0; | 7734 int64_t value = 0; |
7735 result = Dart_IntegerToInt64(result, &value); | 7735 result = Dart_IntegerToInt64(result, &value); |
7736 EXPECT_VALID(result); | 7736 EXPECT_VALID(result); |
7737 EXPECT_EQ(260, value); | 7737 EXPECT_EQ(260, value); |
7738 } | 7738 } |
7739 | 7739 |
| 7740 |
| 7741 TEST_CASE(ExternalStringTrimDoubleParse) { |
| 7742 const char* kScriptChars = |
| 7743 "String str = 'A';\n" |
| 7744 "class A {\n" |
| 7745 " static change_str(String s) native 'A_change_str';\n" |
| 7746 "}\n" |
| 7747 "main() {\n" |
| 7748 " var externalOneByteString = ' 0.2\\xA0 ';\n;" |
| 7749 " A.change_str(externalOneByteString);\n" |
| 7750 " var externalTwoByteString = ' \\u{2029}0.6\\u{2029} ';\n" |
| 7751 " A.change_str(externalTwoByteString);\n" |
| 7752 " var x = double.parse(externalOneByteString);\n" |
| 7753 " var y = double.parse(externalTwoByteString);\n" |
| 7754 " return ((x + y) * 10).toInt();\n" |
| 7755 "}\n"; |
| 7756 Dart_Handle lib = |
| 7757 TestCase::LoadTestScript(kScriptChars, |
| 7758 &ExternalStringDeoptimize_native_lookup); |
| 7759 Dart_Handle result = Dart_Invoke(lib, |
| 7760 NewString("main"), |
| 7761 0, |
| 7762 NULL); |
| 7763 int64_t value = 0; |
| 7764 result = Dart_IntegerToInt64(result, &value); |
| 7765 EXPECT_VALID(result); |
| 7766 EXPECT_EQ(8, value); |
| 7767 } |
| 7768 |
| 7769 |
| 7770 TEST_CASE(ExternalStringDoubleParse) { |
| 7771 const char* kScriptChars = |
| 7772 "String str = 'A';\n" |
| 7773 "class A {\n" |
| 7774 " static change_str(String s) native 'A_change_str';\n" |
| 7775 "}\n" |
| 7776 "main() {\n" |
| 7777 " var externalOneByteString = '0.2';\n;" |
| 7778 " A.change_str(externalOneByteString);\n" |
| 7779 " var externalTwoByteString = '0.6';\n" |
| 7780 " A.change_str(externalTwoByteString);\n" |
| 7781 " var x = double.parse(externalOneByteString);\n" |
| 7782 " var y = double.parse(externalTwoByteString);\n" |
| 7783 " return ((x + y) * 10).toInt();\n" |
| 7784 "}\n"; |
| 7785 Dart_Handle lib = |
| 7786 TestCase::LoadTestScript(kScriptChars, |
| 7787 &ExternalStringDeoptimize_native_lookup); |
| 7788 Dart_Handle result = Dart_Invoke(lib, |
| 7789 NewString("main"), |
| 7790 0, |
| 7791 NULL); |
| 7792 int64_t value = 0; |
| 7793 result = Dart_IntegerToInt64(result, &value); |
| 7794 EXPECT_VALID(result); |
| 7795 EXPECT_EQ(8, value); |
| 7796 } |
| 7797 |
7740 } // namespace dart | 7798 } // namespace dart |
OLD | NEW |