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

Side by Side Diff: native_client_sdk/src/libraries/nacl_mounts_test/path_test.cc

Issue 12194030: Rename mount (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix whitespace Created 7 years, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /* Copyright (c) 2012 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
6 #include <fcntl.h>
7 #include "nacl_mounts/kernel_proxy.h"
8 #include "nacl_mounts/path.h"
9
10 #include "gtest/gtest.h"
11
12 TEST(PathTest, SanityChecks) {
13 // can we construct and delete?
14 Path ph1(".");
15 Path *ph2 = new Path(".");
16 delete ph2;
17
18 Path p1(".");
19 EXPECT_FALSE(p1.IsAbsolute());
20 EXPECT_EQ(".", p1.Join());
21 Path p2("/");
22 EXPECT_TRUE(p2.IsAbsolute());
23 EXPECT_EQ("/", p2.Join());
24 }
25
26 TEST(PathTest, Assignment) {
27 Path empty;
28 Path dot(".");
29 Path root("/");
30 Path abs_str("/abs/from/string");
31 Path rel_str("rel/from/string");
32 Path self_str("./rel/from/string");
33
34 EXPECT_EQ(0, empty.Size());
35 EXPECT_FALSE(empty.IsAbsolute());
36 EXPECT_EQ(std::string(""), empty.Join());
37
38 EXPECT_EQ(1, dot.Size());
39 EXPECT_FALSE(dot.IsAbsolute());
40 EXPECT_EQ(std::string("."), dot.Join());
41
42 EXPECT_EQ(1, root.Size());
43 EXPECT_TRUE(root.IsAbsolute());
44 EXPECT_EQ(std::string("/"), root.Join());
45
46 EXPECT_EQ(4, abs_str.Size());
47 EXPECT_TRUE(abs_str.IsAbsolute());
48 EXPECT_EQ(std::string("/abs/from/string"), abs_str.Join());
49
50 EXPECT_EQ(3, rel_str.Size());
51 EXPECT_FALSE(rel_str.IsAbsolute());
52 EXPECT_EQ(std::string("rel/from/string"), rel_str.Join());
53
54 EXPECT_EQ(3, self_str.Size());
55 EXPECT_FALSE(self_str.IsAbsolute());
56 EXPECT_EQ(std::string("rel/from/string"), self_str.Join());
57
58 empty = "";
59 dot = ".";
60 root = "/";
61 abs_str = "/abs/from/assign";
62 rel_str = "rel/from/assign";
63 self_str = "./rel/from/assign";
64
65 EXPECT_EQ(1, empty.Size());
66 EXPECT_FALSE(empty.IsAbsolute());
67 EXPECT_EQ(std::string("."), empty.Join());
68
69 EXPECT_EQ(1, dot.Size());
70 EXPECT_FALSE(dot.IsAbsolute());
71 EXPECT_EQ(std::string("."), dot.Join());
72
73 EXPECT_EQ(1, root.Size());
74 EXPECT_TRUE(root.IsAbsolute());
75 EXPECT_EQ(std::string("/"), root.Join());
76
77 EXPECT_EQ(4, abs_str.Size());
78 EXPECT_TRUE(abs_str.IsAbsolute());
79 EXPECT_EQ(std::string("/abs/from/assign"), abs_str.Join());
80
81 EXPECT_EQ(3, rel_str.Size());
82 EXPECT_FALSE(rel_str.IsAbsolute());
83 EXPECT_EQ(std::string("rel/from/assign"), rel_str.Join());
84
85 EXPECT_EQ(3, self_str.Size());
86 EXPECT_FALSE(self_str.IsAbsolute());
87 EXPECT_EQ(std::string("rel/from/assign"), self_str.Join());
88
89 Path cpy_str;
90 cpy_str = empty;
91 EXPECT_EQ(1, cpy_str.Size());
92 EXPECT_FALSE(cpy_str.IsAbsolute());
93 EXPECT_EQ(std::string("."), cpy_str.Join());
94
95 cpy_str = dot;
96 EXPECT_EQ(1, cpy_str.Size());
97 EXPECT_FALSE(cpy_str.IsAbsolute());
98 EXPECT_EQ(std::string("."), cpy_str.Join());
99
100 cpy_str = root;
101 EXPECT_EQ(1, cpy_str.Size());
102 EXPECT_TRUE(cpy_str.IsAbsolute());
103 EXPECT_EQ(std::string("/"), cpy_str.Join());
104
105 cpy_str = abs_str;
106 EXPECT_EQ(4, cpy_str.Size());
107 EXPECT_TRUE(cpy_str.IsAbsolute());
108 EXPECT_EQ(std::string("/abs/from/assign"), cpy_str.Join());
109
110 cpy_str = rel_str;
111 EXPECT_EQ(3, cpy_str.Size());
112 EXPECT_FALSE(cpy_str.IsAbsolute());
113 EXPECT_EQ(std::string("rel/from/assign"), cpy_str.Join());
114
115 cpy_str = self_str;
116 EXPECT_EQ(3, cpy_str.Size());
117 EXPECT_FALSE(cpy_str.IsAbsolute());
118 EXPECT_EQ(std::string("rel/from/assign"), cpy_str.Join());
119 }
120
121
122 TEST(PathTest, Collapse) {
123 StringArray_t path_components;
124
125 Path p1("/simple/splitter/test");
126 path_components = p1.Split();
127 EXPECT_EQ("/", path_components[0]);
128 EXPECT_EQ("/", p1.Part(0));
129
130 EXPECT_EQ("simple", path_components[1]);
131 EXPECT_EQ("simple", p1.Part(1));
132
133 EXPECT_EQ("splitter",path_components[2]);
134 EXPECT_EQ("splitter",p1.Part(2));
135
136 EXPECT_EQ("test", path_components[3]);
137 EXPECT_EQ("test", p1.Part(3));
138
139 Path p2("///simple//splitter///test/");
140 path_components = p2.Split();
141 EXPECT_EQ(4, static_cast<int>(path_components.size()));
142 EXPECT_EQ(4, static_cast<int>(p2.Size()));
143 EXPECT_EQ("/", path_components[0]);
144 EXPECT_EQ("simple", path_components[1]);
145 EXPECT_EQ("splitter", path_components[2]);
146 EXPECT_EQ("test", path_components[3]);
147
148 Path p3("sim/ple//spli/tter/te/st/");
149 path_components = p3.Split();
150 EXPECT_EQ(6, static_cast<int>(path_components.size()));
151 EXPECT_FALSE(p3.IsAbsolute());
152 EXPECT_EQ("sim", path_components[0]);
153 EXPECT_EQ("ple", path_components[1]);
154 EXPECT_EQ("spli", path_components[2]);
155 EXPECT_EQ("tter", path_components[3]);
156 EXPECT_EQ("te", path_components[4]);
157 EXPECT_EQ("st", path_components[5]);
158
159 Path p4("");
160 path_components = p4.Split();
161 EXPECT_EQ(1, static_cast<int>(path_components.size()));
162
163 Path p5("/");
164 path_components = p5.Split();
165 EXPECT_EQ(1, static_cast<int>(path_components.size()));
166 }
167
168 TEST(PathTest, AppendAndJoin) {
169 Path ph1("/usr/local/hi/there");
170
171 EXPECT_EQ("/usr/local/hi/there", ph1.Join());
172 ph1 = ph1.Append("..");
173 EXPECT_EQ("/usr/local/hi", ph1.Join());
174 ph1 = ph1.Append(".././././hi/there/../.././././");
175 EXPECT_EQ("/usr/local", ph1.Join());
176 ph1 = ph1.Append("../../../../../../../../././../");
177 EXPECT_EQ("/", ph1.Join());
178 ph1 = ph1.Append("usr/lib/../bin/.././etc/../local/../share");
179 EXPECT_EQ("/usr/share", ph1.Join());
180
181 Path ph2("./");
182 EXPECT_EQ(".", ph2.Join());
183
184 Path ph3("/");
185 EXPECT_EQ("/", ph3.Join());
186 ph3 = ph3.Append("");
187 EXPECT_EQ("/", ph3.Join());
188 ph3 = ph3.Append("USR/local/SHARE");
189 EXPECT_EQ("/USR/local/SHARE", ph3.Join());
190 ph3 = ph3.Append("///////////////////////////////");
191 EXPECT_EQ("/USR/local/SHARE", ph3.Join());
192
193 Path ph4("..");
194 EXPECT_EQ("..", ph4.Join());
195 ph4 = ph4.Append("/node1/node3/../../node1/./");
196 EXPECT_EQ("../node1", ph4.Join());
197 ph4 = ph4.Append("node4/../../node1/./node5");
198 EXPECT_EQ("../node1/node5", ph4.Join());
199 }
200
201
202 TEST(PathTest, Invalid) {
203 Path rooted("/usr/local");
204 Path current("./usr/local");
205 Path relative("usr/local");
206
207 Path test;
208
209 test = rooted;
210 test.Append("../..");
211 EXPECT_EQ("/", test.Join());
212
213 test = rooted;
214 test.Append("../../..");
215 EXPECT_EQ("/", test.Join());
216
217 test = rooted;
218 test.Append("../../../foo");
219 EXPECT_EQ("/foo", test.Join());
220
221 test = current;
222 test.Append("../..");
223 EXPECT_EQ(".", test.Join());
224
225 test = current;
226 test.Append("../../..");
227 EXPECT_EQ("..", test.Join());
228
229 test = current;
230 test.Append("../../../foo");
231 EXPECT_EQ("../foo", test.Join());
232
233 test = relative;
234 test.Append("../..");
235 EXPECT_EQ(".", test.Join());
236
237 test = relative;
238 test.Append("../../..");
239 EXPECT_EQ("..", test.Join());
240
241 test = relative;
242 test.Append("../../../foo");
243 EXPECT_EQ("../foo", test.Join());
244 }
245
246 TEST(PathTest, Range) {
247 Path p("/an/absolute/path");
248
249 // p's parts should be ["/", "an", "absolute", "path"].
250 EXPECT_EQ("/an/absolute/path", p.Range(0, 4));
251 EXPECT_EQ("an/absolute/path", p.Range(1, 4));
252 EXPECT_EQ("absolute/path", p.Range(2, 4));
253 EXPECT_EQ("path", p.Range(3, 4));
254
255 EXPECT_EQ("/an/absolute", p.Range(0, 3));
256 EXPECT_EQ("an/absolute", p.Range(1, 3));
257 EXPECT_EQ("absolute", p.Range(2, 3));
258 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698