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

Unified Diff: chrome/browser/chromeos/drive/resource_metadata_unittest.cc

Issue 23606018: drive: Move some of FileSystemTest tests to lower layers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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
« no previous file with comments | « chrome/browser/chromeos/drive/file_system_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/drive/resource_metadata_unittest.cc
diff --git a/chrome/browser/chromeos/drive/resource_metadata_unittest.cc b/chrome/browser/chromeos/drive/resource_metadata_unittest.cc
index 6c851409992545b72370c9abd00ab12b0742c037..e0facf6428311a7adf3de558ed787c473b228c7d 100644
--- a/chrome/browser/chromeos/drive/resource_metadata_unittest.cc
+++ b/chrome/browser/chromeos/drive/resource_metadata_unittest.cc
@@ -41,24 +41,35 @@ std::vector<std::string> GetSortedBaseNames(
return base_names;
}
-// Creates a ResourceEntry for a directory.
-ResourceEntry CreateDirectoryEntry(const std::string& title,
- const std::string& parent_local_id) {
+// Creates a ResourceEntry for a directory with explicitly set resource_id.
+ResourceEntry CreateDirectoryEntryWithResourceId(
+ const std::string& title,
+ const std::string& resource_id,
+ const std::string& parent_local_id) {
ResourceEntry entry;
entry.set_title(title);
- entry.set_resource_id("id:" + title);
+ entry.set_resource_id(resource_id);
entry.set_parent_local_id(parent_local_id);
entry.mutable_file_info()->set_is_directory(true);
entry.mutable_directory_specific_info()->set_changestamp(kTestChangestamp);
return entry;
}
-// Creates a ResourceEntry for a file.
-ResourceEntry CreateFileEntry(const std::string& title,
- const std::string& parent_local_id) {
+// Creates a ResourceEntry for a directory.
+ResourceEntry CreateDirectoryEntry(const std::string& title,
+ const std::string& parent_local_id) {
+ return CreateDirectoryEntryWithResourceId(
+ title, "id:" + title, parent_local_id);
+}
+
+// Creates a ResourceEntry for a file with explicitly set resource_id.
+ResourceEntry CreateFileEntryWithResourceId(
+ const std::string& title,
+ const std::string& resource_id,
+ const std::string& parent_local_id) {
ResourceEntry entry;
entry.set_title(title);
- entry.set_resource_id("id:" + title);
+ entry.set_resource_id(resource_id);
entry.set_parent_local_id(parent_local_id);
entry.mutable_file_info()->set_is_directory(false);
entry.mutable_file_info()->set_size(1024);
@@ -66,6 +77,12 @@ ResourceEntry CreateFileEntry(const std::string& title,
return entry;
}
+// Creates a ResourceEntry for a file.
+ResourceEntry CreateFileEntry(const std::string& title,
+ const std::string& parent_local_id) {
+ return CreateFileEntryWithResourceId(title, "id:" + title, parent_local_id);
+}
+
// Creates the following files/directories
// drive/root/dir1/
// drive/root/dir2/
@@ -651,5 +668,99 @@ TEST_F(ResourceMetadataTest, Iterate) {
EXPECT_EQ(6, directory_count);
}
+TEST_F(ResourceMetadataTest, DuplicatedNames) {
+ ResourceEntry entry;
+
+ // When multiple entries with the same title are added in a single directory,
+ // their base_names are de-duped.
+ // - drive/root/foo
+ // - drive/root/foo (1)
+ std::string dir_id_0;
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(
+ CreateDirectoryEntryWithResourceId(
+ "foo", "foo0", kTestRootResourceId), &dir_id_0));
+ std::string dir_id_1;
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(
+ CreateDirectoryEntryWithResourceId(
+ "foo", "foo1", kTestRootResourceId), &dir_id_1));
+
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->GetResourceEntryById(
+ dir_id_0, &entry));
+ EXPECT_EQ("foo", entry.base_name());
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->GetResourceEntryById(
+ dir_id_1, &entry));
+ EXPECT_EQ("foo (1)", entry.base_name());
+
+ // - drive/root/foo/bar.txt
+ // - drive/root/foo/bar (1).txt
+ // - drive/root/foo/bar (2).txt
+ std::string file_id_0;
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(
+ CreateFileEntryWithResourceId(
+ "bar.txt", "bar0", dir_id_0), &file_id_0));
+ std::string file_id_1;
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(
+ CreateFileEntryWithResourceId(
+ "bar.txt", "bar1", dir_id_0), &file_id_1));
+ std::string file_id_2;
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(
+ CreateFileEntryWithResourceId(
+ "bar.txt", "bar2", dir_id_0), &file_id_2));
+
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->GetResourceEntryById(
+ file_id_0, &entry));
+ EXPECT_EQ("bar.txt", entry.base_name());
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->GetResourceEntryById(
+ file_id_1, &entry));
+ EXPECT_EQ("bar (1).txt", entry.base_name());
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->GetResourceEntryById(
+ file_id_2, &entry));
+ EXPECT_EQ("bar (2).txt", entry.base_name());
+
+ // Same name but different parent. No renaming.
+ // - drive/root/foo (1)/bar.txt
+ std::string file_id_3;
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(
+ CreateFileEntryWithResourceId(
+ "bar.txt", "bar3", dir_id_1), &file_id_3));
+
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->GetResourceEntryById(
+ file_id_3, &entry));
+ EXPECT_EQ("bar.txt", entry.base_name());
+
+ // Checks that the entries can be looked up by the de-duped paths.
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->GetResourceEntryByPath(
+ base::FilePath::FromUTF8Unsafe("drive/root/foo/bar (2).txt"), &entry));
+ EXPECT_EQ("bar2", entry.resource_id());
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->GetResourceEntryByPath(
+ base::FilePath::FromUTF8Unsafe("drive/root/foo (1)/bar.txt"), &entry));
+ EXPECT_EQ("bar3", entry.resource_id());
+}
+
+TEST_F(ResourceMetadataTest, EncodedNames) {
+ ResourceEntry entry;
+
+ std::string dir_id;
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(
+ CreateDirectoryEntry("\\(^o^)/", kTestRootResourceId), &dir_id));
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->GetResourceEntryById(
+ dir_id, &entry));
+ EXPECT_EQ("\\(^o^)\xE2\x88\x95", entry.base_name());
+
+ std::string file_id;
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->AddEntry(
+ CreateFileEntryWithResourceId("Slash /.txt", "myfile", dir_id),
+ &file_id));
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->GetResourceEntryById(
+ file_id, &entry));
+ EXPECT_EQ("Slash \xE2\x88\x95.txt", entry.base_name());
+
+ ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->GetResourceEntryByPath(
+ base::FilePath::FromUTF8Unsafe(
+ "drive/root/\\(^o^)\xE2\x88\x95/Slash \xE2\x88\x95.txt"),
+ &entry));
+ EXPECT_EQ("myfile", entry.resource_id());
+}
+
} // namespace internal
} // namespace drive
« no previous file with comments | « chrome/browser/chromeos/drive/file_system_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698