OLD | NEW |
| (Empty) |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "base/strings/string_util.h" | |
6 #include "base/strings/utf_string_conversions.h" | |
7 #include "build/build_config.h" | |
8 #include "testing/gtest/include/gtest/gtest.h" | |
9 #include "tools/gn/filesystem_utils.h" | |
10 | |
11 TEST(FilesystemUtils, FileExtensionOffset) { | |
12 EXPECT_EQ(std::string::npos, FindExtensionOffset("")); | |
13 EXPECT_EQ(std::string::npos, FindExtensionOffset("foo/bar/baz")); | |
14 EXPECT_EQ(4u, FindExtensionOffset("foo.")); | |
15 EXPECT_EQ(4u, FindExtensionOffset("f.o.bar")); | |
16 EXPECT_EQ(std::string::npos, FindExtensionOffset("foo.bar/")); | |
17 EXPECT_EQ(std::string::npos, FindExtensionOffset("foo.bar/baz")); | |
18 } | |
19 | |
20 TEST(FilesystemUtils, FindExtension) { | |
21 std::string input; | |
22 EXPECT_EQ("", FindExtension(&input).as_string()); | |
23 input = "foo/bar/baz"; | |
24 EXPECT_EQ("", FindExtension(&input).as_string()); | |
25 input = "foo."; | |
26 EXPECT_EQ("", FindExtension(&input).as_string()); | |
27 input = "f.o.bar"; | |
28 EXPECT_EQ("bar", FindExtension(&input).as_string()); | |
29 input = "foo.bar/"; | |
30 EXPECT_EQ("", FindExtension(&input).as_string()); | |
31 input = "foo.bar/baz"; | |
32 EXPECT_EQ("", FindExtension(&input).as_string()); | |
33 } | |
34 | |
35 TEST(FilesystemUtils, FindFilenameOffset) { | |
36 EXPECT_EQ(0u, FindFilenameOffset("")); | |
37 EXPECT_EQ(0u, FindFilenameOffset("foo")); | |
38 EXPECT_EQ(4u, FindFilenameOffset("foo/")); | |
39 EXPECT_EQ(4u, FindFilenameOffset("foo/bar")); | |
40 } | |
41 | |
42 TEST(FilesystemUtils, RemoveFilename) { | |
43 std::string s; | |
44 | |
45 RemoveFilename(&s); | |
46 EXPECT_STREQ("", s.c_str()); | |
47 | |
48 s = "foo"; | |
49 RemoveFilename(&s); | |
50 EXPECT_STREQ("", s.c_str()); | |
51 | |
52 s = "/"; | |
53 RemoveFilename(&s); | |
54 EXPECT_STREQ("/", s.c_str()); | |
55 | |
56 s = "foo/bar"; | |
57 RemoveFilename(&s); | |
58 EXPECT_STREQ("foo/", s.c_str()); | |
59 | |
60 s = "foo/bar/baz.cc"; | |
61 RemoveFilename(&s); | |
62 EXPECT_STREQ("foo/bar/", s.c_str()); | |
63 } | |
64 | |
65 TEST(FilesystemUtils, FindDir) { | |
66 std::string input; | |
67 EXPECT_EQ("", FindDir(&input)); | |
68 input = "/"; | |
69 EXPECT_EQ("/", FindDir(&input)); | |
70 input = "foo/"; | |
71 EXPECT_EQ("foo/", FindDir(&input)); | |
72 input = "foo/bar/baz"; | |
73 EXPECT_EQ("foo/bar/", FindDir(&input)); | |
74 } | |
75 | |
76 TEST(FilesystemUtils, InvertDir) { | |
77 EXPECT_TRUE(InvertDir(SourceDir()) == ""); | |
78 EXPECT_TRUE(InvertDir(SourceDir("/")) == ""); | |
79 EXPECT_TRUE(InvertDir(SourceDir("//")) == ""); | |
80 | |
81 EXPECT_TRUE(InvertDir(SourceDir("//foo/bar")) == "../../"); | |
82 EXPECT_TRUE(InvertDir(SourceDir("/foo/bar/")) == "../../"); | |
83 } | |
84 | |
85 TEST(FilesystemUtils, NormalizePath) { | |
86 std::string input; | |
87 | |
88 NormalizePath(&input); | |
89 EXPECT_EQ("", input); | |
90 | |
91 input = "foo/bar.txt"; | |
92 NormalizePath(&input); | |
93 EXPECT_EQ("foo/bar.txt", input); | |
94 | |
95 input = "."; | |
96 NormalizePath(&input); | |
97 EXPECT_EQ("", input); | |
98 | |
99 input = ".."; | |
100 NormalizePath(&input); | |
101 EXPECT_EQ("..", input); | |
102 | |
103 input = "foo//bar"; | |
104 NormalizePath(&input); | |
105 EXPECT_EQ("foo/bar", input); | |
106 | |
107 input = "//foo"; | |
108 NormalizePath(&input); | |
109 EXPECT_EQ("//foo", input); | |
110 | |
111 input = "foo/..//bar"; | |
112 NormalizePath(&input); | |
113 EXPECT_EQ("bar", input); | |
114 | |
115 input = "foo/../../bar"; | |
116 NormalizePath(&input); | |
117 EXPECT_EQ("../bar", input); | |
118 | |
119 input = "/../foo"; // Don't go aboe the root dir. | |
120 NormalizePath(&input); | |
121 EXPECT_EQ("/foo", input); | |
122 | |
123 input = "//../foo"; // Don't go aboe the root dir. | |
124 NormalizePath(&input); | |
125 EXPECT_EQ("//foo", input); | |
126 | |
127 input = "../foo"; | |
128 NormalizePath(&input); | |
129 EXPECT_EQ("../foo", input); | |
130 | |
131 input = ".."; | |
132 NormalizePath(&input); | |
133 EXPECT_EQ("..", input); | |
134 | |
135 input = "./././."; | |
136 NormalizePath(&input); | |
137 EXPECT_EQ("", input); | |
138 | |
139 input = "../../.."; | |
140 NormalizePath(&input); | |
141 EXPECT_EQ("../../..", input); | |
142 | |
143 input = "../"; | |
144 NormalizePath(&input); | |
145 EXPECT_EQ("../", input); | |
146 } | |
OLD | NEW |