| Index: runtime/vm/dart_api_impl_test.cc
|
| ===================================================================
|
| --- runtime/vm/dart_api_impl_test.cc (revision 8116)
|
| +++ runtime/vm/dart_api_impl_test.cc (working copy)
|
| @@ -2157,6 +2157,13 @@
|
| }
|
|
|
|
|
| +TEST_CASE(DebugName) {
|
| + Dart_Handle debug_name = Dart_DebugName();
|
| + EXPECT_VALID(debug_name);
|
| + EXPECT(Dart_IsString(debug_name));
|
| +}
|
| +
|
| +
|
| static void MyMessageNotifyCallback(Dart_Isolate dest_isolate) {
|
| }
|
|
|
| @@ -2698,7 +2705,10 @@
|
| const int kNativeFld2 = 2;
|
| const int kNativeFld3 = 3;
|
| const int kNativeFld4 = 4;
|
| + int field_count = 0;
|
| intptr_t field_value = 0;
|
| + EXPECT_VALID(Dart_GetNativeInstanceFieldCount(retobj, &field_count));
|
| + EXPECT_EQ(4, field_count);
|
| result = Dart_GetNativeInstanceField(retobj, kNativeFld4, &field_value);
|
| EXPECT(Dart_IsError(result));
|
| result = Dart_GetNativeInstanceField(retobj, kNativeFld0, &field_value);
|
| @@ -2775,6 +2785,18 @@
|
|
|
| // Now access and set various instance fields of the returned object.
|
| TestNativeFields(retobj);
|
| +
|
| + // Test that accessing an error handle propagates the error.
|
| + Dart_Handle error = Api::NewError("myerror");
|
| + intptr_t field_value = 0;
|
| +
|
| + result = Dart_GetNativeInstanceField(error, 0, &field_value);
|
| + EXPECT(Dart_IsError(result));
|
| + EXPECT_STREQ("myerror", Dart_GetError(result));
|
| +
|
| + result = Dart_SetNativeInstanceField(error, 0, 1);
|
| + EXPECT(Dart_IsError(result));
|
| + EXPECT_STREQ("myerror", Dart_GetError(result));
|
| }
|
|
|
|
|
| @@ -3300,33 +3322,45 @@
|
| "test(arg) => 'hello $arg';\n";
|
|
|
| Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
|
| + Dart_Handle func_name = Dart_NewString("test");
|
| Dart_Handle args[1];
|
| const char* str;
|
|
|
| // Make sure that valid args yield valid results.
|
| args[0] = Dart_NewString("!!!");
|
| - Dart_Handle result = Dart_Invoke(lib, Dart_NewString("test"), 1, args);
|
| + Dart_Handle result = Dart_Invoke(lib, func_name, 1, args);
|
| EXPECT_VALID(result);
|
| result = Dart_StringToCString(result, &str);
|
| EXPECT_STREQ("hello !!!", str);
|
|
|
| // Make sure that null is legal.
|
| args[0] = Dart_Null();
|
| - result = Dart_Invoke(lib, Dart_NewString("test"), 1, args);
|
| + result = Dart_Invoke(lib, func_name, 1, args);
|
| EXPECT_VALID(result);
|
| result = Dart_StringToCString(result, &str);
|
| EXPECT_STREQ("hello null", str);
|
|
|
| - // Pass a non-instance handle.
|
| + // Pass an error handle as the target. The error is propagated.
|
| + result = Dart_Invoke(Api::NewError("myerror"),
|
| + func_name, 1, args);
|
| + EXPECT(Dart_IsError(result));
|
| + EXPECT_STREQ("myerror", Dart_GetError(result));
|
| +
|
| + // Pass an error handle as the function name. The error is propagated.
|
| + result = Dart_Invoke(lib, Api::NewError("myerror"), 1, args);
|
| + EXPECT(Dart_IsError(result));
|
| + EXPECT_STREQ("myerror", Dart_GetError(result));
|
| +
|
| + // Pass a non-instance handle as a parameter..
|
| args[0] = lib;
|
| - result = Dart_Invoke(lib, Dart_NewString("test"), 1, args);
|
| + result = Dart_Invoke(lib, func_name, 1, args);
|
| EXPECT(Dart_IsError(result));
|
| EXPECT_STREQ("Dart_Invoke expects argument 0 to be an instance of Object.",
|
| Dart_GetError(result));
|
|
|
| - // Pass an error handle. The error is contagious.
|
| + // Pass an error handle as a parameter. The error is propagated.
|
| args[0] = Api::NewError("myerror");
|
| - result = Dart_Invoke(lib, Dart_NewString("test"), 1, args);
|
| + result = Dart_Invoke(lib, func_name, 1, args);
|
| EXPECT(Dart_IsError(result));
|
| EXPECT_STREQ("myerror", Dart_GetError(result));
|
| }
|
| @@ -3750,6 +3784,31 @@
|
| }
|
|
|
|
|
| +TEST_CASE(RootLibrary) {
|
| + const char* kScriptChars =
|
| + "main() {"
|
| + " return 12345;"
|
| + "}";
|
| +
|
| + Dart_Handle root_lib = Dart_RootLibrary();
|
| + EXPECT_VALID(root_lib);
|
| + EXPECT(Dart_IsNull(root_lib));
|
| +
|
| + // Load a script.
|
| + Dart_Handle url = Dart_NewString(TestCase::url());
|
| + Dart_Handle source = Dart_NewString(kScriptChars);
|
| + EXPECT_VALID(Dart_LoadScript(url, source));
|
| +
|
| + root_lib = Dart_RootLibrary();
|
| + Dart_Handle lib_name = Dart_LibraryName(root_lib);
|
| + EXPECT_VALID(lib_name);
|
| + EXPECT(!Dart_IsNull(root_lib));
|
| + const char* name_cstr = "";
|
| + EXPECT_VALID(Dart_StringToCString(lib_name, &name_cstr));
|
| + EXPECT_STREQ(TestCase::url(), name_cstr);
|
| +}
|
| +
|
| +
|
| static const char* var_mapping[] = {
|
| "GOOGLE3", ".",
|
| "ABC", "lala",
|
| @@ -3919,6 +3978,39 @@
|
| }
|
|
|
|
|
| +TEST_CASE(LibraryName) {
|
| + const char* kLibrary1Chars =
|
| + "#library('library1_name');";
|
| + Dart_Handle url = Dart_NewString("library1_url");
|
| + Dart_Handle source = Dart_NewString(kLibrary1Chars);
|
| + Dart_Handle lib = Dart_LoadLibrary(url, source);
|
| + Dart_Handle error = Dart_Error("incoming error");
|
| + EXPECT_VALID(lib);
|
| +
|
| + Dart_Handle result = Dart_LibraryName(Dart_Null());
|
| + EXPECT(Dart_IsError(result));
|
| + EXPECT_STREQ("Dart_LibraryName expects argument 'library' to be non-null.",
|
| + Dart_GetError(result));
|
| +
|
| + result = Dart_LibraryName(Dart_True());
|
| + EXPECT(Dart_IsError(result));
|
| + EXPECT_STREQ(
|
| + "Dart_LibraryName expects argument 'library' to be of type Library.",
|
| + Dart_GetError(result));
|
| +
|
| + result = Dart_LibraryName(error);
|
| + EXPECT(Dart_IsError(result));
|
| + EXPECT_STREQ("incoming error", Dart_GetError(result));
|
| +
|
| + result = Dart_LibraryName(lib);
|
| + EXPECT_VALID(result);
|
| + EXPECT(Dart_IsString(result));
|
| + const char* cstr = NULL;
|
| + EXPECT_VALID(Dart_StringToCString(result, &cstr));
|
| + EXPECT_STREQ("library1_name", cstr);
|
| +}
|
| +
|
| +
|
| TEST_CASE(LibraryUrl) {
|
| const char* kLibrary1Chars =
|
| "#library('library1_name');";
|
|
|