Index: chrome/browser/chromeos/drive/file_system_core_util_unittest.cc |
diff --git a/chrome/browser/chromeos/drive/file_system_core_util_unittest.cc b/chrome/browser/chromeos/drive/file_system_core_util_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..510fc681a267e290738a595c50ded1241f02507d |
--- /dev/null |
+++ b/chrome/browser/chromeos/drive/file_system_core_util_unittest.cc |
@@ -0,0 +1,146 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
mtomasz
2015/06/21 23:58:50
nit: 2015?
Łukasz Anforowicz
2015/06/22 19:37:15
Done.
|
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/chromeos/drive/file_system_core_util.h" |
+ |
+#include <vector> |
+ |
+#include "base/files/file_path.h" |
+#include "base/files/file_util.h" |
+#include "base/files/scoped_temp_dir.h" |
+#include "base/single_thread_task_runner.h" |
+#include "base/strings/utf_string_conversions.h" |
+#include "base/thread_task_runner_handle.h" |
+#include "chrome/browser/chromeos/drive/file_system_util.h" |
+#include "chrome/test/base/testing_profile.h" |
+#include "content/public/test/test_browser_thread_bundle.h" |
+#include "content/public/test/test_file_system_options.h" |
+#include "google_apis/drive/test_util.h" |
+#include "storage/browser/fileapi/external_mount_points.h" |
+#include "storage/browser/fileapi/file_system_backend.h" |
+#include "storage/browser/fileapi/file_system_context.h" |
+#include "storage/browser/fileapi/file_system_url.h" |
+#include "storage/browser/fileapi/isolated_context.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace drive { |
+namespace util { |
+ |
+class FileSystemUtilTest : public testing::Test { |
+ content::TestBrowserThreadBundle thread_bundle_; |
+}; |
+ |
+TEST_F(FileSystemUtilTest, IsUnderDriveMountPoint) { |
+ EXPECT_FALSE(IsUnderDriveMountPoint( |
+ base::FilePath::FromUTF8Unsafe("/wherever/foo.txt"))); |
+ EXPECT_FALSE(IsUnderDriveMountPoint( |
+ base::FilePath::FromUTF8Unsafe("/special/foo.txt"))); |
+ EXPECT_FALSE(IsUnderDriveMountPoint( |
+ base::FilePath::FromUTF8Unsafe("special/drive/foo.txt"))); |
+ |
+ EXPECT_TRUE( |
+ IsUnderDriveMountPoint(base::FilePath::FromUTF8Unsafe("/special/drive"))); |
+ EXPECT_TRUE(IsUnderDriveMountPoint( |
+ base::FilePath::FromUTF8Unsafe("/special/drive/foo.txt"))); |
+ EXPECT_TRUE(IsUnderDriveMountPoint( |
+ base::FilePath::FromUTF8Unsafe("/special/drive/subdir/foo.txt"))); |
+ EXPECT_TRUE(IsUnderDriveMountPoint( |
+ base::FilePath::FromUTF8Unsafe("/special/drive-xxx/foo.txt"))); |
+} |
+ |
+TEST_F(FileSystemUtilTest, ExtractDrivePath) { |
+ EXPECT_EQ( |
+ base::FilePath(), |
+ ExtractDrivePath(base::FilePath::FromUTF8Unsafe("/wherever/foo.txt"))); |
+ EXPECT_EQ( |
+ base::FilePath(), |
+ ExtractDrivePath(base::FilePath::FromUTF8Unsafe("/special/foo.txt"))); |
+ |
+ EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive"), |
+ ExtractDrivePath(base::FilePath::FromUTF8Unsafe("/special/drive"))); |
+ EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/foo.txt"), |
+ ExtractDrivePath( |
+ base::FilePath::FromUTF8Unsafe("/special/drive/foo.txt"))); |
+ EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/subdir/foo.txt"), |
+ ExtractDrivePath(base::FilePath::FromUTF8Unsafe( |
+ "/special/drive/subdir/foo.txt"))); |
+ EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/foo.txt"), |
+ ExtractDrivePath( |
+ base::FilePath::FromUTF8Unsafe("/special/drive-xxx/foo.txt"))); |
+} |
+ |
+TEST_F(FileSystemUtilTest, EscapeUnescapeCacheFileName) { |
+ const std::string kUnescapedFileName( |
+ "tmp:`~!@#$%^&*()-_=+[{|]}\\\\;\',<.>/?"); |
+ const std::string kEscapedFileName( |
+ "tmp:`~!@#$%25^&*()-_=+[{|]}\\\\;\',<%2E>%2F?"); |
+ EXPECT_EQ(kEscapedFileName, EscapeCacheFileName(kUnescapedFileName)); |
+ EXPECT_EQ(kUnescapedFileName, UnescapeCacheFileName(kEscapedFileName)); |
+} |
+ |
+TEST_F(FileSystemUtilTest, NormalizeFileName) { |
+ EXPECT_EQ("", NormalizeFileName("")); |
+ EXPECT_EQ("foo", NormalizeFileName("foo")); |
+ // Slash |
+ EXPECT_EQ("foo_zzz", NormalizeFileName("foo/zzz")); |
+ EXPECT_EQ("___", NormalizeFileName("///")); |
+ // Japanese hiragana "hi" + semi-voiced-mark is normalized to "pi". |
+ EXPECT_EQ("\xE3\x81\xB4", NormalizeFileName("\xE3\x81\xB2\xE3\x82\x9A")); |
+ // Dot |
+ EXPECT_EQ("_", NormalizeFileName(".")); |
+ EXPECT_EQ("_", NormalizeFileName("..")); |
+ EXPECT_EQ("_", NormalizeFileName("...")); |
+ EXPECT_EQ(".bashrc", NormalizeFileName(".bashrc")); |
+ EXPECT_EQ("._", NormalizeFileName("./")); |
+} |
+ |
+TEST_F(FileSystemUtilTest, GDocFile) { |
+ base::ScopedTempDir temp_dir; |
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
+ |
+ GURL url( |
+ "https://docs.google.com/document/d/" |
+ "1YsCnrMxxgp7LDdtlFDt-WdtEIth89vA9inrILtvK-Ug/edit"); |
+ std::string resource_id("1YsCnrMxxgp7LDdtlFDt-WdtEIth89vA9inrILtvK-Ug"); |
+ |
+ // Read and write gdoc. |
+ base::FilePath file = temp_dir.path().AppendASCII("test.gdoc"); |
+ EXPECT_TRUE(CreateGDocFile(file, url, resource_id)); |
+ EXPECT_EQ(url, ReadUrlFromGDocFile(file)); |
+ EXPECT_EQ(resource_id, ReadResourceIdFromGDocFile(file)); |
+ |
+ // Read and write gsheet. |
+ file = temp_dir.path().AppendASCII("test.gsheet"); |
+ EXPECT_TRUE(CreateGDocFile(file, url, resource_id)); |
+ EXPECT_EQ(url, ReadUrlFromGDocFile(file)); |
+ EXPECT_EQ(resource_id, ReadResourceIdFromGDocFile(file)); |
+ |
+ // Read and write gslides. |
+ file = temp_dir.path().AppendASCII("test.gslides"); |
+ EXPECT_TRUE(CreateGDocFile(file, url, resource_id)); |
+ EXPECT_EQ(url, ReadUrlFromGDocFile(file)); |
+ EXPECT_EQ(resource_id, ReadResourceIdFromGDocFile(file)); |
+ |
+ // Read and write gdraw. |
+ file = temp_dir.path().AppendASCII("test.gdraw"); |
+ EXPECT_TRUE(CreateGDocFile(file, url, resource_id)); |
+ EXPECT_EQ(url, ReadUrlFromGDocFile(file)); |
+ EXPECT_EQ(resource_id, ReadResourceIdFromGDocFile(file)); |
+ |
+ // Read and write gtable. |
+ file = temp_dir.path().AppendASCII("test.gtable"); |
+ EXPECT_TRUE(CreateGDocFile(file, url, resource_id)); |
+ EXPECT_EQ(url, ReadUrlFromGDocFile(file)); |
+ EXPECT_EQ(resource_id, ReadResourceIdFromGDocFile(file)); |
+ |
+ // Non GDoc file. |
+ file = temp_dir.path().AppendASCII("test.txt"); |
+ std::string data = "Hello world!"; |
+ EXPECT_TRUE(google_apis::test_util::WriteStringToFile(file, data)); |
+ EXPECT_TRUE(ReadUrlFromGDocFile(file).is_empty()); |
+ EXPECT_TRUE(ReadResourceIdFromGDocFile(file).empty()); |
+} |
+ |
+} // namespace util |
+} // namespace drive |