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

Unified Diff: runtime/vm/dart_api_impl_test.cc

Issue 2059883003: DevFS initial implementation (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 6 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 fcc4e79cd8cc88cc39f412f13ed1490c827bd007..915646d14570dcd403747122a22a310df7a99914 100644
--- a/runtime/vm/dart_api_impl_test.cc
+++ b/runtime/vm/dart_api_impl_test.cc
@@ -14,6 +14,7 @@
#include "vm/class_finalizer.h"
#include "vm/dart_api_impl.h"
#include "vm/dart_api_state.h"
+#include "vm/dev_fs.h"
#include "vm/lockers.h"
#include "vm/timeline.h"
#include "vm/unit_test.h"
@@ -10085,6 +10086,123 @@ TEST_CASE(Dart_LoadLibraryPatch_Error3) {
EXPECT(Dart_IsError(result));
}
+
+TEST_CASE(DevFS_UriTest) {
+ EXPECT(!Dart_IsDevFSUri(NewString("/")));
+ EXPECT(!Dart_IsDevFSUri(NewString("file:///")));
+ EXPECT(!Dart_IsDevFSUri(NewString("dart:///")));
+ EXPECT(Dart_IsDevFSUri(NewString("dart-devfs://")));
+ EXPECT(Dart_IsDevFSUri(NewString("dart-devfs:")));
+}
+
+
+static void PopulateDevFS(const char* fs_name_c) {
+ JSONStream js;
+ DevFS::Init();
+ const String& fs_name = String::Handle(String::New(fs_name_c));
+ DevFS::CreateFileSystem(&js, fs_name);
+
+ const String& filename0 = String::Handle(String::New("/foobar.txt"));
+ const String& filename1 = String::Handle(String::New("/packages/foobar.txt"));
+ const String& filename2 = String::Handle(String::New("/f/o/o/bar.txt"));
+
+ const String& payload0 = String::Handle(String::New("payload0"));
+ const String& payload1 = String::Handle(String::New("payload_1"));
+ const String& payload2 = String::Handle(String::New("payload__2"));
+
+ DevFS::WriteFile(&js, fs_name, filename0, payload0);
+ DevFS::WriteFile(&js, fs_name, filename1, payload1);
+ DevFS::WriteFile(&js, fs_name, filename2, payload2);
+}
+
+
+static bool StringsEqual(Dart_Handle a, const char* b) {
+ const char* a_c = NULL;
+ Dart_Handle result = Dart_StringToCString(a, &a_c);
+ if (Dart_IsError(result)) {
+ return false;
+ }
+ return strcmp(a_c, b) == 0;
+}
+
+
+static bool TypedDataEqualsString(Dart_Handle a, const char* b) {
+ Dart_TypedData_Type type;
+ void* data = NULL;
+ intptr_t len = 0;
+ Dart_Handle result = Dart_TypedDataAcquireData(a,
+ &type,
+ &data,
+ &len);
+ if (Dart_IsError(result)) {
+ return false;
+ }
+
+ intptr_t b_len = strlen(b);
+
+ bool success = strncmp(reinterpret_cast<char*>(data), b, b_len) == 0;
+
+ result = Dart_TypedDataReleaseData(a);
+ EXPECT_VALID(result);
+
+ return success;
+}
+
+
+TEST_CASE(DevFS_ReadFileTest) {
+ DevFS::Init();
+ PopulateDevFS("test");
+
+ Dart_Handle uri0 = NewString("dart-devfs://test/foobar.txt");
+ Dart_Handle uri1 = NewString("dart-devfs://test/packages/foobar.txt");
+ Dart_Handle uri2 = NewString("dart-devfs://test/f/o/o/bar.txt");
+
+ Dart_Handle bad_uri0 = NewString("dart-devfs:///foobar.txt");
+ Dart_Handle bad_uri1 = NewString("dart-devfs://test1/foobar.txt");
+ Dart_Handle bad_uri2 = NewString("dart-devfs://test/foobar2.txt");
+
+ Dart_Handle result;
+
+ result = Dart_DevFSReadFileAsUTF8String(uri0);
+ EXPECT_VALID(result);
+ EXPECT(Dart_IsString(result));
+ EXPECT(StringsEqual(result, "payload0"));
+
+ result = Dart_DevFSReadFileAsUTF8String(uri1);
+ EXPECT_VALID(result);
+ EXPECT(Dart_IsString(result));
+ EXPECT(StringsEqual(result, "payload_1"));
+
+ result = Dart_DevFSReadFileAsUTF8String(uri2);
+ EXPECT_VALID(result);
+ EXPECT(Dart_IsString(result));
+ EXPECT(StringsEqual(result, "payload__2"));
+
+ result = Dart_DevFSReadFile(uri0);
+ EXPECT_VALID(result);
+ EXPECT(Dart_IsTypedData(result));
+ EXPECT(TypedDataEqualsString(result, "payload0"));
+
+ result = Dart_DevFSReadFile(uri1);
+ EXPECT_VALID(result);
+ EXPECT(Dart_IsTypedData(result));
+ EXPECT(TypedDataEqualsString(result, "payload_1"));
+
+ result = Dart_DevFSReadFile(uri2);
+ EXPECT_VALID(result);
+ EXPECT(Dart_IsTypedData(result));
+ EXPECT(TypedDataEqualsString(result, "payload__2"));
+
+ result = Dart_DevFSReadFileAsUTF8String(bad_uri0);
+ EXPECT(Dart_IsError(result));
+
+ result = Dart_DevFSReadFileAsUTF8String(bad_uri1);
+ EXPECT(Dart_IsError(result));
+
+ result = Dart_DevFSReadFileAsUTF8String(bad_uri2);
+ EXPECT(Dart_IsError(result));
+}
+
#endif // !PRODUCT
} // namespace dart

Powered by Google App Engine
This is Rietveld 408576698