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

Unified Diff: runtime/vm/dart_api_impl_test.cc

Issue 10867032: Beginning support for library prefixes in the dart API. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Cut down to what I actually need at this point. Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: runtime/vm/dart_api_impl_test.cc
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
index 309c0f96c3a437191e071fafe463ee86b859ceef..7a9640ccd754f8623b8b7cadf64a93aef937a71b 100644
--- a/runtime/vm/dart_api_impl_test.cc
+++ b/runtime/vm/dart_api_impl_test.cc
@@ -2608,8 +2608,9 @@ TEST_CASE(FieldAccess) {
Dart_Handle url = Dart_NewString("library_url");
Dart_Handle source = Dart_NewString(kImportedScriptChars);
Dart_Handle imported_lib = Dart_LoadLibrary(url, source);
+ Dart_Handle prefix = Dart_NewString("");
EXPECT_VALID(imported_lib);
- Dart_Handle result = Dart_LibraryImportLibrary(lib, imported_lib);
+ Dart_Handle result = Dart_LibraryImportLibrary(lib, imported_lib, prefix);
EXPECT_VALID(result);
result = Dart_Invoke(imported_lib, Dart_NewString("test2"), 0, NULL);
EXPECT_VALID(result);
@@ -3696,10 +3697,11 @@ TEST_CASE(Invoke_CrossLibrary) {
url = Dart_NewString("library2_url");
source = Dart_NewString(kLibrary2Chars);
Dart_Handle lib2 = Dart_LoadLibrary(url, source);
+ Dart_Handle prefix = Dart_NewString("");
EXPECT_VALID(lib2);
// Import lib2 from lib1
- Dart_Handle result = Dart_LibraryImportLibrary(lib1, lib2);
+ Dart_Handle result = Dart_LibraryImportLibrary(lib1, lib2, prefix);
EXPECT_VALID(result);
// We can invoke both private and non-private local functions.
@@ -5243,45 +5245,76 @@ TEST_CASE(LibraryImportLibrary) {
url = Dart_NewString("library2_url");
source = Dart_NewString(kLibrary2Chars);
Dart_Handle lib2 = Dart_LoadLibrary(url, source);
+ Dart_Handle prefix = Dart_NewString("");
EXPECT_VALID(lib2);
- result = Dart_LibraryImportLibrary(Dart_Null(), lib2);
+ result = Dart_LibraryImportLibrary(Dart_Null(), lib2, prefix);
EXPECT(Dart_IsError(result));
EXPECT_STREQ(
"Dart_LibraryImportLibrary expects argument 'library' to be non-null.",
Dart_GetError(result));
- result = Dart_LibraryImportLibrary(Dart_True(), lib2);
+ result = Dart_LibraryImportLibrary(Dart_True(), lib2, prefix);
EXPECT(Dart_IsError(result));
EXPECT_STREQ("Dart_LibraryImportLibrary expects argument 'library' to be of "
"type Library.",
Dart_GetError(result));
- result = Dart_LibraryImportLibrary(error, lib2);
+ result = Dart_LibraryImportLibrary(error, lib2, prefix);
EXPECT(Dart_IsError(result));
EXPECT_STREQ("incoming error", Dart_GetError(result));
- result = Dart_LibraryImportLibrary(lib1, Dart_Null());
+ result = Dart_LibraryImportLibrary(lib1, Dart_Null(), prefix);
EXPECT(Dart_IsError(result));
EXPECT_STREQ(
"Dart_LibraryImportLibrary expects argument 'import' to be non-null.",
Dart_GetError(result));
- result = Dart_LibraryImportLibrary(lib1, Dart_True());
+ result = Dart_LibraryImportLibrary(lib1, Dart_True(), prefix);
EXPECT(Dart_IsError(result));
EXPECT_STREQ("Dart_LibraryImportLibrary expects argument 'import' to be of "
"type Library.",
Dart_GetError(result));
- result = Dart_LibraryImportLibrary(lib1, error);
+ result = Dart_LibraryImportLibrary(lib1, error, prefix);
EXPECT(Dart_IsError(result));
EXPECT_STREQ("incoming error", Dart_GetError(result));
- result = Dart_LibraryImportLibrary(lib1, lib2);
+ result = Dart_LibraryImportLibrary(lib1, lib2, prefix);
EXPECT_VALID(result);
}
+TEST_CASE(ImportLibraryWithPrefix) {
+ const char* kLibrary1Chars =
+ "#library('library1_name');"
+ "int foo() => 42;";
+ Dart_Handle url1 = Dart_NewString("library1_url");
+ Dart_Handle source1 = Dart_NewString(kLibrary1Chars);
+ Dart_Handle lib1 = Dart_LoadLibrary(url1, source1);
+ EXPECT_VALID(lib1);
+ EXPECT(Dart_IsLibrary(lib1));
+
+ const char* kLibrary2Chars =
+ "#library('library2_name');";
+ Dart_Handle url2 = Dart_NewString("library2_url");
+ Dart_Handle source2 = Dart_NewString(kLibrary2Chars);
+ Dart_Handle lib2 = Dart_LoadLibrary(url2, source2);
+ EXPECT_VALID(lib2);
+ EXPECT(Dart_IsLibrary(lib2));
+
+ Dart_Handle prefix = Dart_NewString("bar");
+ Dart_Handle result = Dart_LibraryImportLibrary(lib2, lib1, prefix);
+ EXPECT_VALID(result);
+
+ // Lib1 is imported under a library prefix and therefore 'foo' should
+ // not be found directly in lib2.
+ Dart_Handle method_name = Dart_NewString("foo");
+ result = Dart_Invoke(lib2, method_name, 0, NULL);
+ EXPECT_ERROR(result, "Dart_Invoke: did not find top-level function 'foo'");
+}
+
+
TEST_CASE(LoadLibrary) {
const char* kLibrary1Chars =

Powered by Google App Engine
This is Rietveld 408576698