Index: tools/gn/filesystem_utils_unittest.cc |
diff --git a/tools/gn/filesystem_utils_unittest.cc b/tools/gn/filesystem_utils_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..75bf7cdb3a31c1bc8cc0582672433197e4e395ca |
--- /dev/null |
+++ b/tools/gn/filesystem_utils_unittest.cc |
@@ -0,0 +1,146 @@ |
+// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/strings/string_util.h" |
+#include "base/strings/utf_string_conversions.h" |
+#include "build/build_config.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+#include "tools/gn/filesystem_utils.h" |
+ |
+TEST(FilesystemUtils, FileExtensionOffset) { |
+ EXPECT_EQ(std::string::npos, FindExtensionOffset("")); |
+ EXPECT_EQ(std::string::npos, FindExtensionOffset("foo/bar/baz")); |
+ EXPECT_EQ(4u, FindExtensionOffset("foo.")); |
+ EXPECT_EQ(4u, FindExtensionOffset("f.o.bar")); |
+ EXPECT_EQ(std::string::npos, FindExtensionOffset("foo.bar/")); |
+ EXPECT_EQ(std::string::npos, FindExtensionOffset("foo.bar/baz")); |
+} |
+ |
+TEST(FilesystemUtils, FindExtension) { |
+ std::string input; |
+ EXPECT_EQ("", FindExtension(&input).as_string()); |
+ input = "foo/bar/baz"; |
+ EXPECT_EQ("", FindExtension(&input).as_string()); |
+ input = "foo."; |
+ EXPECT_EQ("", FindExtension(&input).as_string()); |
+ input = "f.o.bar"; |
+ EXPECT_EQ("bar", FindExtension(&input).as_string()); |
+ input = "foo.bar/"; |
+ EXPECT_EQ("", FindExtension(&input).as_string()); |
+ input = "foo.bar/baz"; |
+ EXPECT_EQ("", FindExtension(&input).as_string()); |
+} |
+ |
+TEST(FilesystemUtils, FindFilenameOffset) { |
+ EXPECT_EQ(0u, FindFilenameOffset("")); |
+ EXPECT_EQ(0u, FindFilenameOffset("foo")); |
+ EXPECT_EQ(4u, FindFilenameOffset("foo/")); |
+ EXPECT_EQ(4u, FindFilenameOffset("foo/bar")); |
+} |
+ |
+TEST(FilesystemUtils, RemoveFilename) { |
+ std::string s; |
+ |
+ RemoveFilename(&s); |
+ EXPECT_STREQ("", s.c_str()); |
+ |
+ s = "foo"; |
+ RemoveFilename(&s); |
+ EXPECT_STREQ("", s.c_str()); |
+ |
+ s = "/"; |
+ RemoveFilename(&s); |
+ EXPECT_STREQ("/", s.c_str()); |
+ |
+ s = "foo/bar"; |
+ RemoveFilename(&s); |
+ EXPECT_STREQ("foo/", s.c_str()); |
+ |
+ s = "foo/bar/baz.cc"; |
+ RemoveFilename(&s); |
+ EXPECT_STREQ("foo/bar/", s.c_str()); |
+} |
+ |
+TEST(FilesystemUtils, FindDir) { |
+ std::string input; |
+ EXPECT_EQ("", FindDir(&input)); |
+ input = "/"; |
+ EXPECT_EQ("/", FindDir(&input)); |
+ input = "foo/"; |
+ EXPECT_EQ("foo/", FindDir(&input)); |
+ input = "foo/bar/baz"; |
+ EXPECT_EQ("foo/bar/", FindDir(&input)); |
+} |
+ |
+TEST(FilesystemUtils, InvertDir) { |
+ EXPECT_TRUE(InvertDir(SourceDir()) == ""); |
+ EXPECT_TRUE(InvertDir(SourceDir("/")) == ""); |
+ EXPECT_TRUE(InvertDir(SourceDir("//")) == ""); |
+ |
+ EXPECT_TRUE(InvertDir(SourceDir("//foo/bar")) == "../../"); |
+ EXPECT_TRUE(InvertDir(SourceDir("/foo/bar/")) == "../../"); |
+} |
+ |
+TEST(FilesystemUtils, NormalizePath) { |
+ std::string input; |
+ |
+ NormalizePath(&input); |
+ EXPECT_EQ("", input); |
+ |
+ input = "foo/bar.txt"; |
+ NormalizePath(&input); |
+ EXPECT_EQ("foo/bar.txt", input); |
+ |
+ input = "."; |
+ NormalizePath(&input); |
+ EXPECT_EQ("", input); |
+ |
+ input = ".."; |
+ NormalizePath(&input); |
+ EXPECT_EQ("..", input); |
+ |
+ input = "foo//bar"; |
+ NormalizePath(&input); |
+ EXPECT_EQ("foo/bar", input); |
+ |
+ input = "//foo"; |
+ NormalizePath(&input); |
+ EXPECT_EQ("//foo", input); |
+ |
+ input = "foo/..//bar"; |
+ NormalizePath(&input); |
+ EXPECT_EQ("bar", input); |
+ |
+ input = "foo/../../bar"; |
+ NormalizePath(&input); |
+ EXPECT_EQ("../bar", input); |
+ |
+ input = "/../foo"; // Don't go aboe the root dir. |
+ NormalizePath(&input); |
+ EXPECT_EQ("/foo", input); |
+ |
+ input = "//../foo"; // Don't go aboe the root dir. |
+ NormalizePath(&input); |
+ EXPECT_EQ("//foo", input); |
+ |
+ input = "../foo"; |
+ NormalizePath(&input); |
+ EXPECT_EQ("../foo", input); |
+ |
+ input = ".."; |
+ NormalizePath(&input); |
+ EXPECT_EQ("..", input); |
+ |
+ input = "./././."; |
+ NormalizePath(&input); |
+ EXPECT_EQ("", input); |
+ |
+ input = "../../.."; |
+ NormalizePath(&input); |
+ EXPECT_EQ("../../..", input); |
+ |
+ input = "../"; |
+ NormalizePath(&input); |
+ EXPECT_EQ("../", input); |
+} |