2 #include <gtest/gtest.h>
\r
3 #include <filesystem>
\r
4 #include "Environment.h"
\r
7 // Expects that C:\Temp exists for creating temporary testing files.
\r
10 // paths::normalize() with rel path returns drive letter? how to test?
\r
11 // paths::GetLongPath() - how to test?
\r
12 // paths::GetPairComparability() tests
\r
13 // paths::IsShortcut() how to test so that test data is in SVN?
\r
14 // ExpandShortcut() how to test so that test data is in SVN?
\r
15 // paths::EnsurePathExist() tests
\r
20 // The fixture for testing paths functions.
\r
21 class PathTest : public testing::Test
\r
24 // You can remove any or all of the following functions if its body
\r
29 // You can do set-up work for each test here.
\r
34 // You can do clean-up work that doesn't throw exceptions here.
\r
37 // If the constructor and destructor are not enough for setting up
\r
38 // and cleaning up each test, you can define the following methods:
\r
40 virtual void SetUp()
\r
42 // Code here will be called immediately after the constructor (right
\r
43 // before each test).
\r
46 virtual void TearDown()
\r
48 // Code here will be called immediately after each test (right
\r
49 // before the destructor).
\r
52 // Objects declared here can be used by all tests in the test case for Foo.
\r
55 //*************************
\r
56 // paths::EndsWithSlash()
\r
57 //*************************
\r
59 TEST_F(PathTest, EndsWithSlash_rootfolders)
\r
61 const TCHAR path[] = _T("c:");
\r
62 const TCHAR path2[] = _T("c:\\");
\r
63 EXPECT_FALSE(paths::EndsWithSlash(path));
\r
64 EXPECT_TRUE(paths::EndsWithSlash(path2));
\r
67 TEST_F(PathTest, EndsWithSlash_shortfolders)
\r
69 const TCHAR path[] = _T("c:\\path");
\r
70 const TCHAR path2[] = _T("c:\\path\\");
\r
71 EXPECT_FALSE(paths::EndsWithSlash(path));
\r
72 EXPECT_TRUE(paths::EndsWithSlash(path2));
\r
75 TEST_F(PathTest, EndsWithSlash_relfolders)
\r
77 const TCHAR path[] = _T("\\path");
\r
78 const TCHAR path2[] = _T("\\path\\");
\r
79 EXPECT_FALSE(paths::EndsWithSlash(path));
\r
80 EXPECT_TRUE(paths::EndsWithSlash(path2));
\r
83 //*************************
\r
84 // paths::DoesPathExist()
\r
85 //*************************
\r
87 TEST_F(PathTest, Exists_specialfolders)
\r
89 const TCHAR path[] = _T(".");
\r
90 const TCHAR path2[] = _T("..");
\r
91 EXPECT_EQ(paths::IS_EXISTING_DIR, paths::DoesPathExist(path));
\r
92 EXPECT_EQ(paths::IS_EXISTING_DIR, paths::DoesPathExist(path2));
\r
94 TEST_F(PathTest, Exists_files)
\r
96 const TCHAR path2[] = _T("notfound.txt");
\r
97 String path = env::GetProgPath() + _T("../README.md");
\r
98 EXPECT_EQ(paths::IS_EXISTING_FILE, paths::DoesPathExist(path));
\r
99 EXPECT_EQ(paths::DOES_NOT_EXIST, paths::DoesPathExist(path2));
\r
101 TEST_F(PathTest, Exists_relfolder)
\r
103 const TCHAR path[] = _T("..\\");
\r
104 const TCHAR path2[] = _T("..\\Paths");
\r
105 EXPECT_EQ(paths::IS_EXISTING_DIR, paths::DoesPathExist(path));
\r
106 EXPECT_EQ(paths::IS_EXISTING_DIR, paths::DoesPathExist(path2));
\r
108 TEST_F(PathTest, Exists_relfiles)
\r
110 const TCHAR path[] = _T(".\\..\\Paths\\paths_test.cpp");
\r
111 const TCHAR path2[] = _T("..\\Paths\\paths_test.cpp");
\r
112 EXPECT_EQ(paths::IS_EXISTING_FILE, paths::DoesPathExist(path));
\r
113 EXPECT_EQ(paths::IS_EXISTING_FILE, paths::DoesPathExist(path2));
\r
115 TEST_F(PathTest, Exists_absfolders)
\r
117 const TCHAR path[] = _T("C:");
\r
118 const TCHAR path2[] = _T("C:\\");
\r
119 EXPECT_EQ(paths::IS_EXISTING_DIR, paths::DoesPathExist(path));
\r
120 EXPECT_EQ(paths::IS_EXISTING_DIR, paths::DoesPathExist(path2));
\r
122 TEST_F(PathTest, Exists_absfolders2)
\r
124 const TCHAR path[] = _T("C:\\windows");
\r
125 const TCHAR path2[] = _T("C:\\windows\\");
\r
126 const TCHAR path3[] = _T("C:\\gack");
\r
127 const TCHAR path4[] = _T("C:\\gack\\");
\r
128 EXPECT_EQ(paths::IS_EXISTING_DIR, paths::DoesPathExist(path));
\r
129 EXPECT_EQ(paths::IS_EXISTING_DIR, paths::DoesPathExist(path2));
\r
130 EXPECT_EQ(paths::DOES_NOT_EXIST, paths::DoesPathExist(path3));
\r
131 EXPECT_EQ(paths::DOES_NOT_EXIST, paths::DoesPathExist(path4));
\r
133 TEST_F(PathTest, Exists_absfiles)
\r
135 const TCHAR path1[] = _T("C:\\windows\\notepad.exe");
\r
136 const TCHAR path2[] = _T("C:\\windows\\gack.txt");
\r
137 EXPECT_EQ(paths::IS_EXISTING_FILE, paths::DoesPathExist(path1));
\r
138 EXPECT_EQ(paths::DOES_NOT_EXIST, paths::DoesPathExist(path2));
\r
141 //*************************
\r
142 // paths::FindFileName()
\r
143 //*************************
\r
145 TEST_F(PathTest, FindName_absfiles)
\r
147 TCHAR path[] = _T("c:\\abc.txt");
\r
148 EXPECT_EQ(path + 3, paths::FindFileName(path));
\r
151 TEST_F(PathTest, FindName_absfiles2)
\r
153 TCHAR path[] = _T("c:\\temp\\abc.txt");
\r
154 EXPECT_EQ(path + 8, paths::FindFileName(path));
\r
157 //*************************
\r
158 // paths::normalize()
\r
159 //*************************
\r
161 TEST_F(PathTest, Normalize_abspath)
\r
163 String path = _T("c:\\abc.txt");
\r
164 String path_orig = path;
\r
165 paths::normalize(path);
\r
166 EXPECT_EQ(path_orig, path);
\r
168 TEST_F(PathTest, Normalize_abspath2)
\r
170 String path = _T("c:\\temp\\abc.txt");
\r
171 String path_orig = path;
\r
172 paths::normalize(path);
\r
173 EXPECT_EQ(path_orig, path);
\r
175 TEST_F(PathTest, Normalize_abspath3)
\r
177 String curdir = std::filesystem::current_path().native();
\r
178 String path(curdir, 2);
\r
179 String path_orig = curdir;
\r
180 paths::normalize(path);
\r
181 EXPECT_EQ(path_orig, path);
\r
184 TEST_F(PathTest, Normalize_abspath4)
\r
186 String path = _T("c:\\");
\r
187 String path_orig = path;
\r
188 paths::normalize(path);
\r
189 EXPECT_EQ(path_orig, path);
\r
191 TEST_F(PathTest, Normalize_abspath5)
\r
193 String path = _T("c:\\Temp\\");
\r
194 String path_orig = _T("c:\\Temp");
\r
195 paths::normalize(path);
\r
196 EXPECT_EQ(path_orig, path);
\r
199 //*************************
\r
200 // paths::CreateIfNeeded()
\r
201 //*************************
\r
203 TEST_F(PathTest, Create_abspath1)
\r
205 EXPECT_TRUE(paths::CreateIfNeeded(_T("c:\\Temp")));
\r
207 TEST_F(PathTest, Create_abspath2)
\r
209 EXPECT_TRUE(paths::CreateIfNeeded(_T("c:\\Temp\\wm_test")));
\r
210 EXPECT_EQ(0, _taccess(_T("c:\\Temp\\wm_test"), 0));
\r
212 TEST_F(PathTest, Create_abspath3)
\r
214 EXPECT_TRUE(paths::CreateIfNeeded(_T("c:\\Temp\\wm_test")));
\r
215 EXPECT_EQ(0, _taccess(_T("c:\\Temp\\wm_test"), 0));
\r
216 EXPECT_EQ(0, _trmdir(_T("c:\\Temp\\wm_test")));
\r
217 EXPECT_NE(0, _taccess(_T("c:\\Temp\\wm_test"), 0));
\r
219 TEST_F(PathTest, Create_abspath4)
\r
221 EXPECT_TRUE(paths::CreateIfNeeded(_T("c:\\Temp\\wm_test\\abc\\dce")));
\r
222 EXPECT_EQ(0, _taccess(_T("c:\\Temp\\wm_test\\abc\\dce"), 0));
\r
224 TEST_F(PathTest, Create_abspath5)
\r
226 EXPECT_TRUE(paths::CreateIfNeeded(_T("c:\\Temp\\wm_test\\abc\\dce")));
\r
227 EXPECT_EQ(0, _taccess(_T("c:\\Temp\\wm_test\\abc\\dce"), 0));
\r
228 EXPECT_EQ(0, _trmdir(_T("c:\\Temp\\wm_test\\abc\\dce")));
\r
229 EXPECT_NE(0, _taccess(_T("c:\\Temp\\wm_test\\abc\\dce"), 0));
\r
230 EXPECT_EQ(0, _trmdir(_T("c:\\Temp\\wm_test\\abc")));
\r
231 EXPECT_NE(0, _taccess(_T("c:\\Temp\\wm_test\\abc"), 0));
\r
232 EXPECT_EQ(0, _trmdir(_T("c:\\Temp\\wm_test")));
\r
233 EXPECT_NE(0, _taccess(_T("c:\\Temp\\wm_test"), 0));
\r
236 //*********************
\r
237 // paths::ConcatPath()
\r
238 //*********************
\r
240 TEST_F(PathTest, Concat_abspath1)
\r
242 EXPECT_EQ(_T("c:\\Temp\\wm_test"), paths::ConcatPath(_T("c:\\Temp"), _T("wm_test")));
\r
244 TEST_F(PathTest, Concat_abspath2)
\r
246 EXPECT_EQ(_T("c:\\Temp\\wm_test"), paths::ConcatPath(_T("c:\\Temp\\"), _T("wm_test")));
\r
248 TEST_F(PathTest, Concat_abspath3)
\r
250 EXPECT_EQ(_T("c:\\Temp\\wm_test"), paths::ConcatPath(_T("c:\\Temp"), _T("\\wm_test")));
\r
252 TEST_F(PathTest, Concat_abspath4)
\r
254 EXPECT_EQ(_T("c:\\Temp\\wm_test"), paths::ConcatPath(_T("c:\\Temp\\"), _T("\\wm_test")));
\r
256 TEST_F(PathTest, Concat_relpath1)
\r
258 EXPECT_EQ(_T("\\Temp\\wm_test"), paths::ConcatPath(_T("\\Temp"), _T("wm_test")));
\r
260 TEST_F(PathTest, Concat_relpath2)
\r
262 EXPECT_EQ(_T("\\Temp\\wm_test"), paths::ConcatPath(_T("\\Temp\\"), _T("wm_test")));
\r
264 TEST_F(PathTest, Concat_relpath3)
\r
266 EXPECT_EQ(_T("\\Temp\\wm_test"), paths::ConcatPath(_T("\\Temp"), _T("\\wm_test")));
\r
268 TEST_F(PathTest, Concat_relpath4)
\r
270 EXPECT_EQ(_T("\\Temp\\wm_test"), paths::ConcatPath(_T("\\Temp\\"), _T("\\wm_test")));
\r
272 TEST_F(PathTest, Concat_missingFilename1)
\r
274 EXPECT_EQ(_T("c:\\Temp"), paths::ConcatPath(_T("c:\\Temp"), _T("")));
\r
276 TEST_F(PathTest, Concat_missingFilename2)
\r
278 EXPECT_EQ(_T("\\Temp\\"), paths::ConcatPath(_T("\\Temp\\"), _T("")));
\r
281 //*************************
\r
282 // paths::GetParentPath()
\r
283 //*************************
\r
285 TEST_F(PathTest, Parent_abspath1)
\r
287 EXPECT_EQ(_T("c:\\Temp"), paths::GetParentPath(_T("c:\\Temp\\wm_test")));
\r
289 TEST_F(PathTest, Parent_abspath2)
\r
291 EXPECT_EQ(_T("c:\\Temp\\abc"), paths::GetParentPath(_T("c:\\Temp\\abc\\wm_test")));
\r
295 // paths::GetParentPath(_T("c:\\Temp")) "returns c:"
\r
296 TEST_F(PathTest, Parent_abspath3)
\r
298 EXPECT_EQ(_T("c:\\"), paths::GetParentPath(_T("c:\\Temp")));
\r
302 // paths::GetParentPath(_T("c:\\Temp\\")) "returns c:"
\r
303 TEST_F(PathTest, Parent_abspath4)
\r
305 EXPECT_EQ(_T("c:\\"), paths::GetParentPath(_T("c:\\Temp\\")));
\r
307 TEST_F(PathTest, Parent_relpath1)
\r
309 EXPECT_EQ(_T("\\temp"), paths::GetParentPath(_T("\\temp\\abc")));
\r
311 TEST_F(PathTest, Parent_relpath2)
\r
313 EXPECT_EQ(_T("\\temp\\abc"), paths::GetParentPath(_T("\\temp\\abc\\cde")));
\r
316 //*************************
\r
317 // paths::GetLastSubdir()
\r
318 //*************************
\r
320 TEST_F(PathTest, LastSubdir_abspath1)
\r
322 EXPECT_EQ(_T("\\abc"), paths::GetLastSubdir(_T("c:\\temp\\abc")));
\r
326 // paths::GetLastSubdir(_T("c:\\temp")) returns "c:\\temp"
\r
327 TEST_F(PathTest, LastSubdir_abspath2)
\r
329 EXPECT_EQ(_T("\\temp"), paths::GetLastSubdir(_T("c:\\temp")));
\r
333 // paths::GetLastSubdir(_T("c:\\temp")) returns "c:\\temp"
\r
334 TEST_F(PathTest, LastSubdir_abspath3)
\r
336 EXPECT_EQ(_T("\\temp"), paths::GetLastSubdir(_T("c:\\temp\\")));
\r
338 TEST_F(PathTest, LastSubdir_relpath1)
\r
340 EXPECT_EQ(_T("\\temp"), paths::GetLastSubdir(_T("abc\\temp\\")));
\r
342 TEST_F(PathTest, LastSubdir_relpath2)
\r
344 EXPECT_EQ(_T("\\dce"), paths::GetLastSubdir(_T("abc\\temp\\dce")));
\r
347 //*************************
\r
348 // paths::IsPathAbsolute()
\r
349 //*************************
\r
351 TEST_F(PathTest, IsAbsolute_abspath1)
\r
353 EXPECT_TRUE(paths::IsPathAbsolute(_T("c:\\abc")));
\r
355 TEST_F(PathTest, IsAbsolute_abspath2)
\r
357 EXPECT_TRUE(paths::IsPathAbsolute(_T("c:\\abc\\")));
\r
359 TEST_F(PathTest, IsAbsolute_abspath3)
\r
361 EXPECT_TRUE(paths::IsPathAbsolute(_T("c:\\abc\\cde")));
\r
363 TEST_F(PathTest, IsAbsolute_abspath4)
\r
365 EXPECT_TRUE(paths::IsPathAbsolute(_T("c:\\abc\\cde\\")));
\r
367 TEST_F(PathTest, IsAbsolute_abspath5)
\r
369 EXPECT_TRUE(paths::IsPathAbsolute(_T("c:\\")));
\r
371 TEST_F(PathTest, IsAbsolute_relpath1)
\r
373 EXPECT_FALSE(paths::IsPathAbsolute(_T("\\cde")));
\r
375 TEST_F(PathTest, IsAbsolute_relpath2)
\r
377 EXPECT_FALSE(paths::IsPathAbsolute(_T("\\cde\\")));
\r
379 TEST_F(PathTest, IsAbsolute_relpath3)
\r
381 EXPECT_FALSE(paths::IsPathAbsolute(_T("\\cde\\abd")));
\r
383 TEST_F(PathTest, IsAbsolute_relpath4)
\r
385 EXPECT_FALSE(paths::IsPathAbsolute(_T("\\cde\\abd\\")));
\r
387 TEST_F(PathTest, IsAbsolute_relpath5)
\r
389 EXPECT_FALSE(paths::IsPathAbsolute(_T("cde\\abd")));
\r
392 TEST_F(PathTest, IsAbsolute_relpath6)
\r
394 EXPECT_FALSE(paths::IsPathAbsolute(_T("cde\\abd")));
\r