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

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

Issue 2948273002: Correctly set root_library based on the application script URI instead of looking for the library t… (Closed)
Patch Set: Integrate cl from Siggi for front end change to not require a 'main' method when using the memory f… Created 3 years, 5 months 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
« no previous file with comments | « runtime/vm/dart_api_impl.cc ('k') | runtime/vm/unit_test.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "vm/dart_api_impl.h" 5 #include "vm/dart_api_impl.h"
6 #include "bin/builtin.h" 6 #include "bin/builtin.h"
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "include/dart_mirrors_api.h" 8 #include "include/dart_mirrors_api.h"
9 #include "include/dart_native_api.h" 9 #include "include/dart_native_api.h"
10 #include "include/dart_tools_api.h" 10 #include "include/dart_tools_api.h"
11 #include "platform/assert.h" 11 #include "platform/assert.h"
12 #include "platform/text_buffer.h" 12 #include "platform/text_buffer.h"
13 #include "platform/utils.h" 13 #include "platform/utils.h"
14 #include "vm/class_finalizer.h" 14 #include "vm/class_finalizer.h"
15 #include "vm/compiler.h" 15 #include "vm/compiler.h"
16 #include "vm/dart_api_state.h" 16 #include "vm/dart_api_state.h"
17 #include "vm/lockers.h" 17 #include "vm/lockers.h"
18 #include "vm/timeline.h" 18 #include "vm/timeline.h"
19 #include "vm/unit_test.h" 19 #include "vm/unit_test.h"
20 #include "vm/verifier.h" 20 #include "vm/verifier.h"
21 21
22 namespace dart { 22 namespace dart {
23 23
24 DECLARE_FLAG(bool, verify_acquired_data); 24 DECLARE_FLAG(bool, verify_acquired_data);
25 DECLARE_FLAG(bool, ignore_patch_signature_mismatch); 25 DECLARE_FLAG(bool, ignore_patch_signature_mismatch);
26 DECLARE_FLAG(bool, support_externalizable_strings); 26 DECLARE_FLAG(bool, support_externalizable_strings);
27 DECLARE_FLAG(bool, use_dart_frontend);
27 28
28 #ifndef PRODUCT 29 #ifndef PRODUCT
29 30
30 TEST_CASE(ErrorHandleBasics) { 31 TEST_CASE(ErrorHandleBasics) {
31 const char* kScriptChars = 32 const char* kScriptChars =
32 "void testMain() {\n" 33 "void testMain() {\n"
33 " throw new Exception(\"bad news\");\n" 34 " throw new Exception(\"bad news\");\n"
34 "}\n"; 35 "}\n";
35 36
36 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL); 37 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 93
93 Dart_ActivationFrame frame; 94 Dart_ActivationFrame frame;
94 result = Dart_GetActivationFrame(stacktrace, 0, &frame); 95 result = Dart_GetActivationFrame(stacktrace, 0, &frame);
95 EXPECT_VALID(result); 96 EXPECT_VALID(result);
96 result = Dart_ActivationFrameInfo(frame, &function_name, &script_url, 97 result = Dart_ActivationFrameInfo(frame, &function_name, &script_url,
97 &line_number, &column_number); 98 &line_number, &column_number);
98 EXPECT_VALID(result); 99 EXPECT_VALID(result);
99 Dart_StringToCString(function_name, &cstr); 100 Dart_StringToCString(function_name, &cstr);
100 EXPECT_STREQ("bar", cstr); 101 EXPECT_STREQ("bar", cstr);
101 Dart_StringToCString(script_url, &cstr); 102 Dart_StringToCString(script_url, &cstr);
102 EXPECT_STREQ("test-lib", cstr); 103 EXPECT_SUBSTRING("test-lib", cstr);
103 EXPECT_EQ(1, line_number); 104 EXPECT_EQ(1, line_number);
104 EXPECT_EQ(10, column_number); 105 EXPECT_EQ(10, column_number);
105 106
106 result = Dart_GetActivationFrame(stacktrace, 1, &frame); 107 result = Dart_GetActivationFrame(stacktrace, 1, &frame);
107 EXPECT_VALID(result); 108 EXPECT_VALID(result);
108 result = Dart_ActivationFrameInfo(frame, &function_name, &script_url, 109 result = Dart_ActivationFrameInfo(frame, &function_name, &script_url,
109 &line_number, &column_number); 110 &line_number, &column_number);
110 EXPECT_VALID(result); 111 EXPECT_VALID(result);
111 Dart_StringToCString(function_name, &cstr); 112 Dart_StringToCString(function_name, &cstr);
112 EXPECT_STREQ("foo", cstr); 113 EXPECT_STREQ("foo", cstr);
113 Dart_StringToCString(script_url, &cstr); 114 Dart_StringToCString(script_url, &cstr);
114 EXPECT_STREQ("test-lib", cstr); 115 EXPECT_SUBSTRING("test-lib", cstr);
115 EXPECT_EQ(2, line_number); 116 EXPECT_EQ(2, line_number);
116 EXPECT_EQ(10, column_number); 117 EXPECT_EQ(10, column_number);
117 118
118 result = Dart_GetActivationFrame(stacktrace, 2, &frame); 119 result = Dart_GetActivationFrame(stacktrace, 2, &frame);
119 EXPECT_VALID(result); 120 EXPECT_VALID(result);
120 result = Dart_ActivationFrameInfo(frame, &function_name, &script_url, 121 result = Dart_ActivationFrameInfo(frame, &function_name, &script_url,
121 &line_number, &column_number); 122 &line_number, &column_number);
122 EXPECT_VALID(result); 123 EXPECT_VALID(result);
123 Dart_StringToCString(function_name, &cstr); 124 Dart_StringToCString(function_name, &cstr);
124 EXPECT_STREQ("testMain", cstr); 125 EXPECT_STREQ("testMain", cstr);
125 Dart_StringToCString(script_url, &cstr); 126 Dart_StringToCString(script_url, &cstr);
126 EXPECT_STREQ("test-lib", cstr); 127 EXPECT_SUBSTRING("test-lib", cstr);
127 EXPECT_EQ(3, line_number); 128 EXPECT_EQ(3, line_number);
128 EXPECT_EQ(15, column_number); 129 EXPECT_EQ(15, column_number);
129 130
130 // Out-of-bounds frames. 131 // Out-of-bounds frames.
131 result = Dart_GetActivationFrame(stacktrace, frame_count, &frame); 132 result = Dart_GetActivationFrame(stacktrace, frame_count, &frame);
132 EXPECT(Dart_IsError(result)); 133 EXPECT(Dart_IsError(result));
133 result = Dart_GetActivationFrame(stacktrace, -1, &frame); 134 result = Dart_GetActivationFrame(stacktrace, -1, &frame);
134 EXPECT(Dart_IsError(result)); 135 EXPECT(Dart_IsError(result));
135 } 136 }
136 137
(...skipping 28 matching lines...) Expand all
165 // Top frame at positioned at throw. 166 // Top frame at positioned at throw.
166 Dart_ActivationFrame frame; 167 Dart_ActivationFrame frame;
167 result = Dart_GetActivationFrame(stacktrace, 0, &frame); 168 result = Dart_GetActivationFrame(stacktrace, 0, &frame);
168 EXPECT_VALID(result); 169 EXPECT_VALID(result);
169 result = Dart_ActivationFrameInfo(frame, &function_name, &script_url, 170 result = Dart_ActivationFrameInfo(frame, &function_name, &script_url,
170 &line_number, &column_number); 171 &line_number, &column_number);
171 EXPECT_VALID(result); 172 EXPECT_VALID(result);
172 Dart_StringToCString(function_name, &cstr); 173 Dart_StringToCString(function_name, &cstr);
173 EXPECT_STREQ("foo", cstr); 174 EXPECT_STREQ("foo", cstr);
174 Dart_StringToCString(script_url, &cstr); 175 Dart_StringToCString(script_url, &cstr);
175 EXPECT_STREQ("test-lib", cstr); 176 EXPECT_SUBSTRING("test-lib", cstr);
176 EXPECT_EQ(1, line_number); 177 EXPECT_EQ(1, line_number);
177 EXPECT_EQ(20, column_number); 178 EXPECT_EQ(20, column_number);
178 179
179 // Middle frames positioned at the recursive call. 180 // Middle frames positioned at the recursive call.
180 for (intptr_t frame_index = 1; frame_index < (frame_count - 1); 181 for (intptr_t frame_index = 1; frame_index < (frame_count - 1);
181 frame_index++) { 182 frame_index++) {
182 result = Dart_GetActivationFrame(stacktrace, frame_index, &frame); 183 result = Dart_GetActivationFrame(stacktrace, frame_index, &frame);
183 EXPECT_VALID(result); 184 EXPECT_VALID(result);
184 result = Dart_ActivationFrameInfo(frame, &function_name, &script_url, 185 result = Dart_ActivationFrameInfo(frame, &function_name, &script_url,
185 &line_number, &column_number); 186 &line_number, &column_number);
186 EXPECT_VALID(result); 187 EXPECT_VALID(result);
187 Dart_StringToCString(function_name, &cstr); 188 Dart_StringToCString(function_name, &cstr);
188 EXPECT_STREQ("foo", cstr); 189 EXPECT_STREQ("foo", cstr);
189 Dart_StringToCString(script_url, &cstr); 190 Dart_StringToCString(script_url, &cstr);
190 EXPECT_STREQ("test-lib", cstr); 191 EXPECT_SUBSTRING("test-lib", cstr);
191 EXPECT_EQ(1, line_number); 192 EXPECT_EQ(1, line_number);
192 EXPECT_EQ(40, column_number); 193 EXPECT_EQ(40, column_number);
193 } 194 }
194 195
195 // Bottom frame positioned at testMain(). 196 // Bottom frame positioned at testMain().
196 result = Dart_GetActivationFrame(stacktrace, frame_count - 1, &frame); 197 result = Dart_GetActivationFrame(stacktrace, frame_count - 1, &frame);
197 EXPECT_VALID(result); 198 EXPECT_VALID(result);
198 result = Dart_ActivationFrameInfo(frame, &function_name, &script_url, 199 result = Dart_ActivationFrameInfo(frame, &function_name, &script_url,
199 &line_number, &column_number); 200 &line_number, &column_number);
200 EXPECT_VALID(result); 201 EXPECT_VALID(result);
201 Dart_StringToCString(function_name, &cstr); 202 Dart_StringToCString(function_name, &cstr);
202 EXPECT_STREQ("testMain", cstr); 203 EXPECT_STREQ("testMain", cstr);
203 Dart_StringToCString(script_url, &cstr); 204 Dart_StringToCString(script_url, &cstr);
204 EXPECT_STREQ("test-lib", cstr); 205 EXPECT_SUBSTRING("test-lib", cstr);
205 EXPECT_EQ(2, line_number); 206 EXPECT_EQ(2, line_number);
206 EXPECT_EQ(15, column_number); 207 EXPECT_EQ(15, column_number);
207 208
208 // Out-of-bounds frames. 209 // Out-of-bounds frames.
209 result = Dart_GetActivationFrame(stacktrace, frame_count, &frame); 210 result = Dart_GetActivationFrame(stacktrace, frame_count, &frame);
210 EXPECT(Dart_IsError(result)); 211 EXPECT(Dart_IsError(result));
211 result = Dart_GetActivationFrame(stacktrace, -1, &frame); 212 result = Dart_GetActivationFrame(stacktrace, -1, &frame);
212 EXPECT(Dart_IsError(result)); 213 EXPECT(Dart_IsError(result));
213 } 214 }
214 215
(...skipping 3158 matching lines...) Expand 10 before | Expand all | Expand 10 after
3373 Dart_Isolate isolate = 3374 Dart_Isolate isolate =
3374 Dart_CreateIsolate(NULL, NULL, bin::core_isolate_snapshot_data, 3375 Dart_CreateIsolate(NULL, NULL, bin::core_isolate_snapshot_data,
3375 bin::core_isolate_snapshot_instructions, NULL, 3376 bin::core_isolate_snapshot_instructions, NULL,
3376 reinterpret_cast<void*>(mydata), &err); 3377 reinterpret_cast<void*>(mydata), &err);
3377 EXPECT(isolate != NULL); 3378 EXPECT(isolate != NULL);
3378 EXPECT_EQ(mydata, reinterpret_cast<intptr_t>(Dart_CurrentIsolateData())); 3379 EXPECT_EQ(mydata, reinterpret_cast<intptr_t>(Dart_CurrentIsolateData()));
3379 EXPECT_EQ(mydata, reinterpret_cast<intptr_t>(Dart_IsolateData(isolate))); 3380 EXPECT_EQ(mydata, reinterpret_cast<intptr_t>(Dart_IsolateData(isolate)));
3380 Dart_ShutdownIsolate(); 3381 Dart_ShutdownIsolate();
3381 } 3382 }
3382 3383
3384 static Dart_Handle LoadScript(const char* url_str, const char* source) {
3385 Dart_Handle url = NewString(url_str);
3386 Dart_Handle result;
3387 Dart_Handle script;
3388 if (!FLAG_use_dart_frontend) {
3389 result = Dart_SetLibraryTagHandler(TestCase::library_handler);
3390 EXPECT_VALID(result);
3391 script = NewString(source);
3392 } else {
3393 void* kernel_pgm = NULL;
3394 char* error =
3395 TestCase::CompileTestScriptWithDFE(url_str, source, &kernel_pgm);
3396 if (error != NULL) {
3397 return Dart_NewApiError(error);
3398 }
3399 script = reinterpret_cast<Dart_Handle>(kernel_pgm);
3400 }
3401 return Dart_LoadScript(url, Dart_Null(), script, 0, 0);
3402 }
3403
3383 VM_UNIT_TEST_CASE(IsolateSetCheckedMode) { 3404 VM_UNIT_TEST_CASE(IsolateSetCheckedMode) {
3384 const char* kScriptChars = 3405 const char* kScriptChars =
3385 "int bad1() {\n" 3406 "int bad1() {\n"
3386 " int foo = 'string';\n" 3407 " int foo = 'string';\n"
3387 " return foo;\n" 3408 " return foo;\n"
3388 "}\n" 3409 "}\n"
3389 "\n" 3410 "\n"
3390 "int good1() {\n" 3411 "int good1() {\n"
3391 " int five = 5;\n" 3412 " int five = 5;\n"
3392 " return five;" 3413 " return five;"
(...skipping 11 matching lines...) Expand all
3404 Dart_Isolate isolate = Dart_CreateIsolate( 3425 Dart_Isolate isolate = Dart_CreateIsolate(
3405 NULL, NULL, bin::core_isolate_snapshot_data, 3426 NULL, NULL, bin::core_isolate_snapshot_data,
3406 bin::core_isolate_snapshot_instructions, &api_flags, NULL, &err); 3427 bin::core_isolate_snapshot_instructions, &api_flags, NULL, &err);
3407 if (isolate == NULL) { 3428 if (isolate == NULL) {
3408 OS::Print("Creation of isolate failed '%s'\n", err); 3429 OS::Print("Creation of isolate failed '%s'\n", err);
3409 free(err); 3430 free(err);
3410 } 3431 }
3411 EXPECT(isolate != NULL); 3432 EXPECT(isolate != NULL);
3412 3433
3413 { 3434 {
3435 Dart_Handle result;
3414 Dart_EnterScope(); 3436 Dart_EnterScope();
3415 Dart_Handle url = NewString(TestCase::url()); 3437 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
3416 Dart_Handle source = NewString(kScriptChars);
3417 Dart_Handle result = Dart_SetLibraryTagHandler(TestCase::library_handler);
3418 EXPECT_VALID(result);
3419 Dart_Handle lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0);
3420 EXPECT_VALID(lib); 3438 EXPECT_VALID(lib);
3421 result = Dart_FinalizeLoading(false); 3439 result = Dart_FinalizeLoading(false);
3422 EXPECT_VALID(result); 3440 EXPECT_VALID(result);
3423 result = Dart_Invoke(lib, NewString("bad1"), 0, NULL); 3441 result = Dart_Invoke(lib, NewString("bad1"), 0, NULL);
3424 EXPECT_ERROR(result, 3442 EXPECT_ERROR(result,
3425 "Unhandled exception:\n" 3443 "Unhandled exception:\n"
3426 "type 'String' is not a subtype of type 'int' of 'foo'"); 3444 "type 'String' is not a subtype of type 'int' of 'foo'");
3427 3445
3428 result = Dart_Invoke(lib, NewString("good1"), 0, NULL); 3446 result = Dart_Invoke(lib, NewString("good1"), 0, NULL);
3429 EXPECT_VALID(result); 3447 EXPECT_VALID(result);
(...skipping 2218 matching lines...) Expand 10 before | Expand all | Expand 10 after
5648 result = Dart_LoadScript(url, Dart_True(), source, 0, 0); 5666 result = Dart_LoadScript(url, Dart_True(), source, 0, 0);
5649 EXPECT(Dart_IsError(result)); 5667 EXPECT(Dart_IsError(result));
5650 EXPECT_STREQ( 5668 EXPECT_STREQ(
5651 "Dart_LoadScript expects argument 'resolved_url' to be of type String.", 5669 "Dart_LoadScript expects argument 'resolved_url' to be of type String.",
5652 Dart_GetError(result)); 5670 Dart_GetError(result));
5653 5671
5654 result = Dart_LoadScript(url, error, source, 0, 0); 5672 result = Dart_LoadScript(url, error, source, 0, 0);
5655 EXPECT(Dart_IsError(result)); 5673 EXPECT(Dart_IsError(result));
5656 EXPECT_STREQ("incoming error", Dart_GetError(result)); 5674 EXPECT_STREQ("incoming error", Dart_GetError(result));
5657 5675
5658 result = Dart_LoadScript(url, Dart_Null(), Dart_Null(), 0, 0); 5676 if (!FLAG_use_dart_frontend) {
5659 EXPECT(Dart_IsError(result)); 5677 result = Dart_LoadScript(url, Dart_Null(), Dart_Null(), 0, 0);
5660 EXPECT_STREQ("Dart_LoadScript expects argument 'source' to be non-null.", 5678 EXPECT(Dart_IsError(result));
5661 Dart_GetError(result)); 5679 EXPECT_STREQ("Dart_LoadScript expects argument 'source' to be non-null.",
5680 Dart_GetError(result));
5662 5681
5663 result = Dart_LoadScript(url, Dart_Null(), Dart_True(), 0, 0); 5682 result = Dart_LoadScript(url, Dart_Null(), Dart_True(), 0, 0);
5664 EXPECT(Dart_IsError(result)); 5683 EXPECT(Dart_IsError(result));
5665 EXPECT_STREQ( 5684 EXPECT_STREQ(
5666 "Dart_LoadScript expects argument 'source' to be of type String.", 5685 "Dart_LoadScript expects argument 'source' to be of type String.",
5667 Dart_GetError(result)); 5686 Dart_GetError(result));
5668 5687
5669 result = Dart_LoadScript(url, Dart_Null(), error, 0, 0); 5688 result = Dart_LoadScript(url, Dart_Null(), error, 0, 0);
5670 EXPECT(Dart_IsError(result)); 5689 EXPECT(Dart_IsError(result));
5671 EXPECT_STREQ("incoming error", Dart_GetError(result)); 5690 EXPECT_STREQ("incoming error", Dart_GetError(result));
5691 }
5672 5692
5673 // Load a script successfully. 5693 // Load a script successfully.
5674 result = Dart_LoadScript(url, Dart_Null(), source, 0, 0); 5694 result = TestCase::LoadTestScript(kScriptChars, NULL);
5675 EXPECT_VALID(result); 5695 EXPECT_VALID(result);
5676 Dart_FinalizeLoading(false); 5696 Dart_FinalizeLoading(false);
5677 5697
5678 result = Dart_Invoke(result, NewString("main"), 0, NULL); 5698 result = Dart_Invoke(result, NewString("main"), 0, NULL);
5679 EXPECT_VALID(result); 5699 EXPECT_VALID(result);
5680 EXPECT(Dart_IsInteger(result)); 5700 EXPECT(Dart_IsInteger(result));
5681 int64_t value = 0; 5701 int64_t value = 0;
5682 EXPECT_VALID(Dart_IntegerToInt64(result, &value)); 5702 EXPECT_VALID(Dart_IntegerToInt64(result, &value));
5683 EXPECT_EQ(12345, value); 5703 EXPECT_EQ(12345, value);
5684 5704
5685 // Further calls to LoadScript are errors. 5705 // Further calls to LoadScript are errors.
5686 result = Dart_LoadScript(url, Dart_Null(), source, 0, 0); 5706 result = Dart_LoadScript(url, Dart_Null(), source, 0, 0);
5687 EXPECT(Dart_IsError(result)); 5707 EXPECT(Dart_IsError(result));
5688 EXPECT_STREQ( 5708 EXPECT_SUBSTRING("Dart_LoadScript: A script has already been loaded from",
5689 "Dart_LoadScript: " 5709 Dart_GetError(result));
5690 "A script has already been loaded from 'test-lib'.",
5691 Dart_GetError(result));
5692 } 5710 }
5693 5711
5694 TEST_CASE(RootLibrary) { 5712 TEST_CASE(RootLibrary) {
5695 const char* kScriptChars = 5713 const char* kScriptChars =
5696 "library testlib;" 5714 "library testlib;"
5697 "main() {" 5715 "main() {"
5698 " return 12345;" 5716 " return 12345;"
5699 "}"; 5717 "}";
5700 5718
5701 Dart_Handle root_lib = Dart_RootLibrary(); 5719 Dart_Handle root_lib = Dart_RootLibrary();
5702 EXPECT_VALID(root_lib); 5720 EXPECT_VALID(root_lib);
5703 EXPECT(Dart_IsNull(root_lib)); 5721 EXPECT(Dart_IsNull(root_lib));
5704 5722
5705 // Load a script. 5723 // Load a script.
5706 Dart_Handle url = NewString(TestCase::url()); 5724 EXPECT_VALID(LoadScript(TestCase::url(), kScriptChars));
5707 Dart_Handle source = NewString(kScriptChars);
5708 EXPECT_VALID(Dart_LoadScript(url, Dart_Null(), source, 0, 0));
5709 5725
5710 root_lib = Dart_RootLibrary(); 5726 root_lib = Dart_RootLibrary();
5711 Dart_Handle lib_name = Dart_LibraryName(root_lib); 5727 Dart_Handle lib_name = Dart_LibraryName(root_lib);
5712 EXPECT_VALID(lib_name); 5728 EXPECT_VALID(lib_name);
5713 EXPECT(!Dart_IsNull(root_lib)); 5729 EXPECT(!Dart_IsNull(root_lib));
5714 const char* name_cstr = ""; 5730 const char* name_cstr = "";
5715 EXPECT_VALID(Dart_StringToCString(lib_name, &name_cstr)); 5731 EXPECT_VALID(Dart_StringToCString(lib_name, &name_cstr));
5716 EXPECT_STREQ("testlib", name_cstr); 5732 EXPECT_STREQ("testlib", name_cstr);
5717 5733
5718 Dart_Handle lib_uri = Dart_LibraryUrl(root_lib); 5734 Dart_Handle lib_uri = Dart_LibraryUrl(root_lib);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
5777 default: 5793 default:
5778 EXPECT(false); 5794 EXPECT(false);
5779 return Api::NewError("invalid callback"); 5795 return Api::NewError("invalid callback");
5780 } 5796 }
5781 index += 1; 5797 index += 1;
5782 return Api::Success(); 5798 return Api::Success();
5783 } 5799 }
5784 5800
5785 TEST_CASE(LoadScript_CompileError) { 5801 TEST_CASE(LoadScript_CompileError) {
5786 const char* kScriptChars = ")"; 5802 const char* kScriptChars = ")";
5787 Dart_Handle url = NewString(TestCase::url());
5788 Dart_Handle source = NewString(kScriptChars);
5789 Dart_Handle result = Dart_SetLibraryTagHandler(import_library_handler); 5803 Dart_Handle result = Dart_SetLibraryTagHandler(import_library_handler);
5790 EXPECT_VALID(result); 5804 EXPECT_VALID(result);
5791 result = Dart_LoadScript(url, Dart_Null(), source, 0, 0); 5805 result = LoadScript(TestCase::url(), kScriptChars);
5792 EXPECT(Dart_IsError(result)); 5806 EXPECT(Dart_IsError(result));
5793 EXPECT(strstr(Dart_GetError(result), "unexpected token ')'")); 5807 if (!FLAG_use_dart_frontend) {
5808 EXPECT(strstr(Dart_GetError(result), "unexpected token ')'"));
5809 }
5794 } 5810 }
5795 5811
5796 TEST_CASE(LookupLibrary) { 5812 TEST_CASE(LookupLibrary) {
5797 const char* kScriptChars = 5813 const char* kScriptChars =
5798 "import 'library1_dart';" 5814 "import 'library1_dart';"
5799 "main() {}"; 5815 "main() {}";
5800 const char* kLibrary1Chars = 5816 const char* kLibrary1Chars =
5801 "library library1_dart;" 5817 "library library1_dart;"
5802 "import 'library2_dart';"; 5818 "import 'library2_dart';";
5803 5819
(...skipping 915 matching lines...) Expand 10 before | Expand all | Expand 10 after
6719 const char* kScriptChars = 6735 const char* kScriptChars =
6720 "class Test {" 6736 "class Test {"
6721 " static foo() native \"SomeNativeFunction\";\n" 6737 " static foo() native \"SomeNativeFunction\";\n"
6722 " static bar() native \"SomeNativeFunction2\";\n" 6738 " static bar() native \"SomeNativeFunction2\";\n"
6723 " static baz() native \"SomeNativeFunction3\";\n" 6739 " static baz() native \"SomeNativeFunction3\";\n"
6724 "}"; 6740 "}";
6725 Dart_Handle error = Dart_NewApiError("incoming error"); 6741 Dart_Handle error = Dart_NewApiError("incoming error");
6726 Dart_Handle result; 6742 Dart_Handle result;
6727 6743
6728 // Load a test script. 6744 // Load a test script.
6729 Dart_Handle url = NewString(TestCase::url()); 6745 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
6730 Dart_Handle source = NewString(kScriptChars);
6731 result = Dart_SetLibraryTagHandler(library_handler);
6732 EXPECT_VALID(result);
6733 Dart_Handle lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0);
6734 EXPECT_VALID(lib); 6746 EXPECT_VALID(lib);
6735 result = Dart_FinalizeLoading(false); 6747 result = Dart_FinalizeLoading(false);
6736 EXPECT_VALID(result); 6748 EXPECT_VALID(result);
6737 EXPECT(Dart_IsLibrary(lib)); 6749 EXPECT(Dart_IsLibrary(lib));
6738 Dart_Handle type = Dart_GetType(lib, NewString("Test"), 0, NULL); 6750 Dart_Handle type = Dart_GetType(lib, NewString("Test"), 0, NULL);
6739 EXPECT_VALID(type); 6751 EXPECT_VALID(type);
6740 6752
6741 result = Dart_SetNativeResolver(Dart_Null(), &MyNativeResolver1, NULL); 6753 result = Dart_SetNativeResolver(Dart_Null(), &MyNativeResolver1, NULL);
6742 EXPECT(Dart_IsError(result)); 6754 EXPECT(Dart_IsError(result));
6743 EXPECT_STREQ( 6755 EXPECT_STREQ(
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
7217 } 7229 }
7218 7230
7219 static Dart_Isolate RunLoopTestCallback(const char* script_name, 7231 static Dart_Isolate RunLoopTestCallback(const char* script_name,
7220 const char* main, 7232 const char* main,
7221 const char* package_root, 7233 const char* package_root,
7222 const char* package_config, 7234 const char* package_config,
7223 Dart_IsolateFlags* flags, 7235 Dart_IsolateFlags* flags,
7224 void* data, 7236 void* data,
7225 char** error) { 7237 char** error) {
7226 const char* kScriptChars = 7238 const char* kScriptChars =
7227 "import 'builtin';\n"
7228 "import 'dart:isolate';\n" 7239 "import 'dart:isolate';\n"
7229 "void main(shouldThrowException) {\n" 7240 "void main(shouldThrowException) {\n"
7230 " var rp = new RawReceivePort();\n" 7241 " var rp = new RawReceivePort();\n"
7231 " rp.handler = (msg) {\n" 7242 " rp.handler = (msg) {\n"
7232 " rp.close();\n" 7243 " rp.close();\n"
7233 " if (shouldThrowException) {\n" 7244 " if (shouldThrowException) {\n"
7234 " throw new Exception('ExceptionFromTimer');\n" 7245 " throw new Exception('ExceptionFromTimer');\n"
7235 " }\n" 7246 " }\n"
7236 " };\n" 7247 " };\n"
7237 " rp.sendPort.send(1);\n" 7248 " rp.sendPort.send(1);\n"
7238 "}\n"; 7249 "}\n";
7239 7250
7240 if (Dart_CurrentIsolate() != NULL) { 7251 if (Dart_CurrentIsolate() != NULL) {
7241 Dart_ExitIsolate(); 7252 Dart_ExitIsolate();
7242 } 7253 }
7243 Dart_Isolate isolate = TestCase::CreateTestIsolate(script_name); 7254 Dart_Isolate isolate = TestCase::CreateTestIsolate(script_name);
7244 ASSERT(isolate != NULL); 7255 ASSERT(isolate != NULL);
7245 if (Dart_IsServiceIsolate(isolate)) { 7256 if (Dart_IsServiceIsolate(isolate)) {
7246 return isolate; 7257 return isolate;
7247 } 7258 }
7248 Dart_EnterScope(); 7259 Dart_EnterScope();
7249 Dart_Handle url = NewString(TestCase::url()); 7260 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
7250 Dart_Handle source = NewString(kScriptChars);
7251 Dart_Handle result = Dart_SetLibraryTagHandler(TestCase::library_handler);
7252 EXPECT_VALID(result);
7253 Dart_Handle lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0);
7254 EXPECT_VALID(lib); 7261 EXPECT_VALID(lib);
7255 result = Dart_FinalizeLoading(false); 7262 Dart_Handle result = Dart_FinalizeLoading(false);
7256 EXPECT_VALID(result); 7263 EXPECT_VALID(result);
7257 Dart_ExitScope(); 7264 Dart_ExitScope();
7258 Dart_ExitIsolate(); 7265 Dart_ExitIsolate();
7259 bool retval = Dart_IsolateMakeRunnable(isolate); 7266 bool retval = Dart_IsolateMakeRunnable(isolate);
7260 EXPECT(retval); 7267 EXPECT(retval);
7261 return isolate; 7268 return isolate;
7262 } 7269 }
7263 7270
7264 // Common code for RunLoop_Success/RunLoop_Failure. 7271 // Common code for RunLoop_Success/RunLoop_Failure.
7265 static void RunLoopTest(bool throw_exception) { 7272 static void RunLoopTest(bool throw_exception) {
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
7619 " Expect.equals(3, obj.bar42(1, 1));\n" 7626 " Expect.equals(3, obj.bar42(1, 1));\n"
7620 " Expect.equals(6, obj.foo4(2, 2, 2));\n" 7627 " Expect.equals(6, obj.foo4(2, 2, 2));\n"
7621 " Expect.equals(6, obj.bar43(2, 2, 2));\n" 7628 " Expect.equals(6, obj.bar43(2, 2, 2));\n"
7622 "\n" 7629 "\n"
7623 " return 0;\n" 7630 " return 0;\n"
7624 "}\n"; 7631 "}\n";
7625 7632
7626 Dart_Handle result; 7633 Dart_Handle result;
7627 7634
7628 // Load a test script. 7635 // Load a test script.
7629 Dart_Handle url = NewString(TestCase::url()); 7636 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
7630 Dart_Handle source = NewString(kScriptChars);
7631 result = Dart_SetLibraryTagHandler(library_handler);
7632 EXPECT_VALID(result);
7633 Dart_Handle lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0);
7634 EXPECT_VALID(lib); 7637 EXPECT_VALID(lib);
7635 EXPECT(Dart_IsLibrary(lib)); 7638 EXPECT(Dart_IsLibrary(lib));
7636 result = Dart_SetNativeResolver(lib, &MyNativeClosureResolver, NULL); 7639 result = Dart_SetNativeResolver(lib, &MyNativeClosureResolver, NULL);
7637 EXPECT_VALID(result); 7640 EXPECT_VALID(result);
7638 result = Dart_FinalizeLoading(false); 7641 result = Dart_FinalizeLoading(false);
7639 EXPECT_VALID(result); 7642 EXPECT_VALID(result);
7640 7643
7641 result = Dart_Invoke(lib, NewString("testMain"), 0, NULL); 7644 result = Dart_Invoke(lib, NewString("testMain"), 0, NULL);
7642 EXPECT_VALID(result); 7645 EXPECT_VALID(result);
7643 EXPECT(Dart_IsInteger(result)); 7646 EXPECT(Dart_IsInteger(result));
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
7763 " Expect.equals(3, obj.bar42(1, 1));\n" 7766 " Expect.equals(3, obj.bar42(1, 1));\n"
7764 " Expect.equals(6, Test.foo4(2, 2, 2));\n" 7767 " Expect.equals(6, Test.foo4(2, 2, 2));\n"
7765 " Expect.equals(6, obj.bar43(2, 2, 2));\n" 7768 " Expect.equals(6, obj.bar43(2, 2, 2));\n"
7766 "\n" 7769 "\n"
7767 " return 0;\n" 7770 " return 0;\n"
7768 "}\n"; 7771 "}\n";
7769 7772
7770 Dart_Handle result; 7773 Dart_Handle result;
7771 7774
7772 // Load a test script. 7775 // Load a test script.
7773 Dart_Handle url = NewString(TestCase::url()); 7776 Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
7774 Dart_Handle source = NewString(kScriptChars);
7775 result = Dart_SetLibraryTagHandler(library_handler);
7776 EXPECT_VALID(result);
7777 Dart_Handle lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0);
7778 EXPECT_VALID(lib); 7777 EXPECT_VALID(lib);
7779 EXPECT(Dart_IsLibrary(lib)); 7778 EXPECT(Dart_IsLibrary(lib));
7780 result = Dart_SetNativeResolver(lib, &MyStaticNativeClosureResolver, NULL); 7779 result = Dart_SetNativeResolver(lib, &MyStaticNativeClosureResolver, NULL);
7781 EXPECT_VALID(result); 7780 EXPECT_VALID(result);
7782 result = Dart_FinalizeLoading(false); 7781 result = Dart_FinalizeLoading(false);
7783 EXPECT_VALID(result); 7782 EXPECT_VALID(result);
7784 7783
7785 result = Dart_Invoke(lib, NewString("testMain"), 0, NULL); 7784 result = Dart_Invoke(lib, NewString("testMain"), 0, NULL);
7786 EXPECT_VALID(result); 7785 EXPECT_VALID(result);
7787 EXPECT(Dart_IsInteger(result)); 7786 EXPECT(Dart_IsInteger(result));
(...skipping 1835 matching lines...) Expand 10 before | Expand all | Expand 10 after
9623 EXPECT_VALID(result); 9622 EXPECT_VALID(result);
9624 result = Dart_FinalizeLoading(false); 9623 result = Dart_FinalizeLoading(false);
9625 EXPECT_VALID(result); 9624 EXPECT_VALID(result);
9626 result = Dart_Invoke(lib, NewString("foozoo"), 0, NULL); 9625 result = Dart_Invoke(lib, NewString("foozoo"), 0, NULL);
9627 EXPECT(Dart_IsError(result)); 9626 EXPECT(Dart_IsError(result));
9628 } 9627 }
9629 9628
9630 #endif // !PRODUCT 9629 #endif // !PRODUCT
9631 9630
9632 } // namespace dart 9631 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/dart_api_impl.cc ('k') | runtime/vm/unit_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698