OSDN Git Service

62a6ceefc74a0148c038d47ce209b19ecda085d7
[winmerge-jp/winmerge-jp.git] / Testing / GoogleTest / Paths / paths_test.cpp
1 #include "pch.h"\r
2 #include <gtest/gtest.h>\r
3 #include <windows.h>\r
4 #include "paths.h"\r
5 \r
6 // Expects that C:\Temp exists for creating temporary testing files.\r
7 \r
8 // TODO:\r
9 // paths::normalize() with rel path returns drive letter? how to test?\r
10 // paths::GetLongPath() - how to test?\r
11 // paths::GetPairComparability() tests\r
12 // paths::IsShortcut() how to test so that test data is in SVN?\r
13 // ExpandShortcut() how to test so that test data is in SVN?\r
14 // paths::EnsurePathExist() tests\r
15 \r
16 \r
17 namespace\r
18 {\r
19         // The fixture for testing paths functions.\r
20         class PathTest : public testing::Test\r
21         {\r
22         protected:\r
23                 // You can remove any or all of the following functions if its body\r
24                 // is   empty.\r
25 \r
26                 PathTest()\r
27                 {\r
28                         // You can do set-up work for each test here.\r
29                 }\r
30 \r
31                 virtual ~PathTest()\r
32                 {\r
33                         // You can do clean-up work     that doesn't throw exceptions here.\r
34                 }\r
35 \r
36                 // If   the     constructor     and     destructor are not enough for setting up\r
37                 // and cleaning up each test, you can define the following methods:\r
38 \r
39                 virtual void SetUp()\r
40                 {\r
41                         // Code here will be called     immediately     after the constructor (right\r
42                         // before each test).\r
43                 }\r
44 \r
45                 virtual void TearDown()\r
46                 {\r
47                         // Code here will be called     immediately     after each test (right\r
48                         // before the destructor).\r
49                 }\r
50 \r
51                 // Objects declared here can be used by all tests in the test case for Foo.\r
52         };\r
53 \r
54         //*************************\r
55         // paths::EndsWithSlash()\r
56         //*************************\r
57 \r
58         TEST_F(PathTest, EndsWithSlash_rootfolders)\r
59         {\r
60                 const TCHAR path[] = _T("c:");\r
61                 const TCHAR path2[] = _T("c:\\");\r
62                 EXPECT_FALSE(paths::EndsWithSlash(path));\r
63                 EXPECT_TRUE(paths::EndsWithSlash(path2));\r
64         }\r
65 \r
66         TEST_F(PathTest, EndsWithSlash_shortfolders)\r
67         {\r
68                 const TCHAR path[] = _T("c:\\path");\r
69                 const TCHAR path2[] = _T("c:\\path\\");\r
70                 EXPECT_FALSE(paths::EndsWithSlash(path));\r
71                 EXPECT_TRUE(paths::EndsWithSlash(path2));\r
72         }\r
73 \r
74         TEST_F(PathTest, EndsWithSlash_relfolders)\r
75         {\r
76                 const TCHAR path[] = _T("\\path");\r
77                 const TCHAR path2[] = _T("\\path\\");\r
78                 EXPECT_FALSE(paths::EndsWithSlash(path));\r
79                 EXPECT_TRUE(paths::EndsWithSlash(path2));\r
80         }\r
81 \r
82         //*************************\r
83         // paths::DoesPathExist()\r
84         //*************************\r
85 \r
86         TEST_F(PathTest, Exists_specialfolders)\r
87         {\r
88                 const TCHAR path[] = _T(".");\r
89                 const TCHAR path2[] = _T("..");\r
90                 EXPECT_EQ(paths::IS_EXISTING_DIR, paths::DoesPathExist(path));\r
91                 EXPECT_EQ(paths::IS_EXISTING_DIR, paths::DoesPathExist(path2));\r
92         }\r
93         TEST_F(PathTest, Exists_files)\r
94         {\r
95                 TCHAR path[_MAX_PATH];\r
96                 const TCHAR path2[] = _T("notfound.txt");\r
97                 GetModuleFileName(NULL, path, sizeof(path));\r
98                 EXPECT_EQ(paths::IS_EXISTING_FILE, paths::DoesPathExist(path));\r
99                 EXPECT_EQ(paths::DOES_NOT_EXIST, paths::DoesPathExist(path2));\r
100         }\r
101         TEST_F(PathTest, Exists_relfolder)\r
102         {\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
107         }\r
108         TEST_F(PathTest, Exists_relfiles)\r
109         {\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
114         }\r
115         TEST_F(PathTest, Exists_absfolders)\r
116         {\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
121         }\r
122         TEST_F(PathTest, Exists_absfolders2)\r
123         {\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
132         }\r
133         TEST_F(PathTest, Exists_absfiles)\r
134         {\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
139         }\r
140 \r
141         //*************************\r
142         // paths::FindFileName()\r
143         //*************************\r
144 \r
145         TEST_F(PathTest, FindName_absfiles)\r
146         {\r
147                 TCHAR path[] = _T("c:\\abc.txt");\r
148                 EXPECT_EQ(path + 3, paths::FindFileName(path));\r
149         }\r
150 \r
151         TEST_F(PathTest, FindName_absfiles2)\r
152         {\r
153                 TCHAR path[] = _T("c:\\temp\\abc.txt");\r
154                 EXPECT_EQ(path + 8, paths::FindFileName(path));\r
155         }\r
156 \r
157         //*************************\r
158         // paths::normalize()\r
159         //*************************\r
160 \r
161         TEST_F(PathTest, Normalize_abspath)\r
162         {\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
167         }\r
168         TEST_F(PathTest, Normalize_abspath2)\r
169         {\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
174         }\r
175         TEST_F(PathTest, Normalize_abspath3)\r
176         {\r
177                 TCHAR curdir[_MAX_PATH];\r
178                 GetCurrentDirectory(sizeof(curdir), curdir);\r
179                 String path(curdir, 2);\r
180                 String path_orig = curdir;\r
181                 paths::normalize(path);\r
182                 EXPECT_EQ(path_orig, path);\r
183         }\r
184 \r
185         TEST_F(PathTest, Normalize_abspath4)\r
186         {\r
187                 String path = _T("c:\\");\r
188                 String path_orig = path;\r
189                 paths::normalize(path);\r
190                 EXPECT_EQ(path_orig, path);\r
191         }\r
192         TEST_F(PathTest, Normalize_abspath5)\r
193         {\r
194                 String path = _T("c:\\Temp\\");\r
195                 String path_orig = _T("c:\\Temp");\r
196                 paths::normalize(path);\r
197                 EXPECT_EQ(path_orig, path);\r
198         }\r
199 \r
200         //*************************\r
201         // paths::CreateIfNeeded()\r
202         //*************************\r
203 \r
204         TEST_F(PathTest, Create_abspath1)\r
205         {\r
206                 EXPECT_TRUE(paths::CreateIfNeeded(_T("c:\\Temp")));\r
207         }\r
208         TEST_F(PathTest, Create_abspath2)\r
209         {\r
210                 EXPECT_TRUE(paths::CreateIfNeeded(_T("c:\\Temp\\wm_test")));\r
211                 EXPECT_EQ(0, _taccess(_T("c:\\Temp\\wm_test"), 0));\r
212         }\r
213         TEST_F(PathTest, Create_abspath3)\r
214         {\r
215                 EXPECT_TRUE(paths::CreateIfNeeded(_T("c:\\Temp\\wm_test")));\r
216                 EXPECT_EQ(0, _taccess(_T("c:\\Temp\\wm_test"), 0));\r
217                 EXPECT_EQ(0, _trmdir(_T("c:\\Temp\\wm_test")));\r
218                 EXPECT_NE(0, _taccess(_T("c:\\Temp\\wm_test"), 0));\r
219         }\r
220         TEST_F(PathTest, Create_abspath4)\r
221         {\r
222                 EXPECT_TRUE(paths::CreateIfNeeded(_T("c:\\Temp\\wm_test\\abc\\dce")));\r
223                 EXPECT_EQ(0, _taccess(_T("c:\\Temp\\wm_test\\abc\\dce"), 0));\r
224         }\r
225         TEST_F(PathTest, Create_abspath5)\r
226         {\r
227                 EXPECT_TRUE(paths::CreateIfNeeded(_T("c:\\Temp\\wm_test\\abc\\dce")));\r
228                 EXPECT_EQ(0, _taccess(_T("c:\\Temp\\wm_test\\abc\\dce"), 0));\r
229                 EXPECT_EQ(0, _trmdir(_T("c:\\Temp\\wm_test\\abc\\dce")));\r
230                 EXPECT_NE(0, _taccess(_T("c:\\Temp\\wm_test\\abc\\dce"), 0));\r
231                 EXPECT_EQ(0, _trmdir(_T("c:\\Temp\\wm_test\\abc")));\r
232                 EXPECT_NE(0, _taccess(_T("c:\\Temp\\wm_test\\abc"), 0));\r
233                 EXPECT_EQ(0, _trmdir(_T("c:\\Temp\\wm_test")));\r
234                 EXPECT_NE(0, _taccess(_T("c:\\Temp\\wm_test"), 0));\r
235         }\r
236 \r
237         //*********************\r
238         // paths::ConcatPath()\r
239         //*********************\r
240 \r
241         TEST_F(PathTest, Concat_abspath1)\r
242         {\r
243                 EXPECT_EQ(_T("c:\\Temp\\wm_test"), paths::ConcatPath(_T("c:\\Temp"), _T("wm_test")));\r
244         }\r
245         TEST_F(PathTest, Concat_abspath2)\r
246         {\r
247                 EXPECT_EQ(_T("c:\\Temp\\wm_test"), paths::ConcatPath(_T("c:\\Temp\\"), _T("wm_test")));\r
248         }\r
249         TEST_F(PathTest, Concat_abspath3)\r
250         {\r
251                 EXPECT_EQ(_T("c:\\Temp\\wm_test"), paths::ConcatPath(_T("c:\\Temp"), _T("\\wm_test")));\r
252         }\r
253         TEST_F(PathTest, Concat_abspath4)\r
254         {\r
255                 EXPECT_EQ(_T("c:\\Temp\\wm_test"), paths::ConcatPath(_T("c:\\Temp\\"), _T("\\wm_test")));\r
256         }\r
257         TEST_F(PathTest, Concat_relpath1)\r
258         {\r
259                 EXPECT_EQ(_T("\\Temp\\wm_test"), paths::ConcatPath(_T("\\Temp"), _T("wm_test")));\r
260         }\r
261         TEST_F(PathTest, Concat_relpath2)\r
262         {\r
263                 EXPECT_EQ(_T("\\Temp\\wm_test"), paths::ConcatPath(_T("\\Temp\\"), _T("wm_test")));\r
264         }\r
265         TEST_F(PathTest, Concat_relpath3)\r
266         {\r
267                 EXPECT_EQ(_T("\\Temp\\wm_test"), paths::ConcatPath(_T("\\Temp"), _T("\\wm_test")));\r
268         }\r
269         TEST_F(PathTest, Concat_relpath4)\r
270         {\r
271                 EXPECT_EQ(_T("\\Temp\\wm_test"), paths::ConcatPath(_T("\\Temp\\"), _T("\\wm_test")));\r
272         }\r
273         TEST_F(PathTest, Concat_missingFilename1)\r
274         {\r
275                 EXPECT_EQ(_T("c:\\Temp"), paths::ConcatPath(_T("c:\\Temp"), _T("")));\r
276         }\r
277         TEST_F(PathTest, Concat_missingFilename2)\r
278         {\r
279                 EXPECT_EQ(_T("\\Temp\\"), paths::ConcatPath(_T("\\Temp\\"), _T("")));\r
280         }\r
281 \r
282         //*************************\r
283         // paths::GetParentPath()\r
284         //*************************\r
285 \r
286         TEST_F(PathTest, Parent_abspath1)\r
287         {\r
288                 EXPECT_EQ(_T("c:\\Temp"), paths::GetParentPath(_T("c:\\Temp\\wm_test")));\r
289         }\r
290         TEST_F(PathTest, Parent_abspath2)\r
291         {\r
292                 EXPECT_EQ(_T("c:\\Temp\\abc"), paths::GetParentPath(_T("c:\\Temp\\abc\\wm_test")));\r
293         }\r
294         \r
295         // FAILS!\r
296         // paths::GetParentPath(_T("c:\\Temp")) "returns c:"\r
297         TEST_F(PathTest, Parent_abspath3)\r
298         {\r
299                 EXPECT_EQ(_T("c:\\"), paths::GetParentPath(_T("c:\\Temp")));\r
300         }\r
301 \r
302         // FAILS!\r
303         // paths::GetParentPath(_T("c:\\Temp\\")) "returns c:"\r
304         TEST_F(PathTest, Parent_abspath4)\r
305         {\r
306                 EXPECT_EQ(_T("c:\\"), paths::GetParentPath(_T("c:\\Temp\\")));\r
307         }\r
308         TEST_F(PathTest, Parent_relpath1)\r
309         {\r
310                 EXPECT_EQ(_T("\\temp"), paths::GetParentPath(_T("\\temp\\abc")));\r
311         }\r
312         TEST_F(PathTest, Parent_relpath2)\r
313         {\r
314                 EXPECT_EQ(_T("\\temp\\abc"), paths::GetParentPath(_T("\\temp\\abc\\cde")));\r
315         }\r
316 \r
317         //*************************\r
318         // paths::GetLastSubdir()\r
319         //*************************\r
320 \r
321         TEST_F(PathTest, LastSubdir_abspath1)\r
322         {\r
323                 EXPECT_EQ(_T("\\abc"), paths::GetLastSubdir(_T("c:\\temp\\abc")));\r
324         }\r
325         \r
326         // FAILS!\r
327         // paths::GetLastSubdir(_T("c:\\temp")) returns "c:\\temp"\r
328         TEST_F(PathTest, LastSubdir_abspath2)\r
329         {\r
330                 EXPECT_EQ(_T("\\temp"), paths::GetLastSubdir(_T("c:\\temp")));\r
331         }\r
332 \r
333         // FAILS!\r
334         // paths::GetLastSubdir(_T("c:\\temp")) returns "c:\\temp"\r
335         TEST_F(PathTest, LastSubdir_abspath3)\r
336         {\r
337                 EXPECT_EQ(_T("\\temp"), paths::GetLastSubdir(_T("c:\\temp\\")));\r
338         }\r
339         TEST_F(PathTest, LastSubdir_relpath1)\r
340         {\r
341                 EXPECT_EQ(_T("\\temp"), paths::GetLastSubdir(_T("abc\\temp\\")));\r
342         }\r
343         TEST_F(PathTest, LastSubdir_relpath2)\r
344         {\r
345                 EXPECT_EQ(_T("\\dce"), paths::GetLastSubdir(_T("abc\\temp\\dce")));\r
346         }\r
347 \r
348         //*************************\r
349         // paths::IsPathAbsolute()\r
350         //*************************\r
351 \r
352         TEST_F(PathTest, IsAbsolute_abspath1)\r
353         {\r
354                 EXPECT_TRUE(paths::IsPathAbsolute(_T("c:\\abc")));\r
355         }\r
356         TEST_F(PathTest, IsAbsolute_abspath2)\r
357         {\r
358                 EXPECT_TRUE(paths::IsPathAbsolute(_T("c:\\abc\\")));\r
359         }\r
360         TEST_F(PathTest, IsAbsolute_abspath3)\r
361         {\r
362                 EXPECT_TRUE(paths::IsPathAbsolute(_T("c:\\abc\\cde")));\r
363         }\r
364         TEST_F(PathTest, IsAbsolute_abspath4)\r
365         {\r
366                 EXPECT_TRUE(paths::IsPathAbsolute(_T("c:\\abc\\cde\\")));\r
367         }\r
368         TEST_F(PathTest, IsAbsolute_abspath5)\r
369         {\r
370                 EXPECT_TRUE(paths::IsPathAbsolute(_T("c:\\")));\r
371         }\r
372         TEST_F(PathTest, IsAbsolute_relpath1)\r
373         {\r
374                 EXPECT_FALSE(paths::IsPathAbsolute(_T("\\cde")));\r
375         }\r
376         TEST_F(PathTest, IsAbsolute_relpath2)\r
377         {\r
378                 EXPECT_FALSE(paths::IsPathAbsolute(_T("\\cde\\")));\r
379         }\r
380         TEST_F(PathTest, IsAbsolute_relpath3)\r
381         {\r
382                 EXPECT_FALSE(paths::IsPathAbsolute(_T("\\cde\\abd")));\r
383         }\r
384         TEST_F(PathTest, IsAbsolute_relpath4)\r
385         {\r
386                 EXPECT_FALSE(paths::IsPathAbsolute(_T("\\cde\\abd\\")));\r
387         }\r
388         TEST_F(PathTest, IsAbsolute_relpath5)\r
389         {\r
390                 EXPECT_FALSE(paths::IsPathAbsolute(_T("cde\\abd")));\r
391         }\r
392 \r
393         TEST_F(PathTest, IsAbsolute_relpath6)\r
394         {\r
395                 EXPECT_FALSE(paths::IsPathAbsolute(_T("cde\\abd")));\r
396         }\r
397 \r
398 }  // namespace\r