1
// TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2015-2018 - TortoiseGit
4 // Copyright (C) 2003-2008, 2013-2014 - TortoiseSVN
6 // This program is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU General Public License
8 // as published by the Free Software Foundation; either version 2
9 // of the License, or (at your option) any later version.
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software Foundation,
18 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 #include "PathUtils.h"
24 TEST(CPathUtils
, GetFileNameFromPath
)
26 CString
test(L
"d:\\test\\filename.ext");
27 EXPECT_STREQ(L
"filename.ext", CPathUtils::GetFileNameFromPath(test
));
28 test
= L
"filename.ext";
29 EXPECT_STREQ(L
"filename.ext", CPathUtils::GetFileNameFromPath(test
));
30 test
= L
"d:/test/filename";
31 EXPECT_STREQ(L
"filename", CPathUtils::GetFileNameFromPath(test
));
32 test
= L
"d:\\test\\filename";
33 EXPECT_STREQ(L
"filename", CPathUtils::GetFileNameFromPath(test
));
35 EXPECT_STREQ(L
"filename", CPathUtils::GetFileNameFromPath(test
));
37 EXPECT_STREQ(L
"", CPathUtils::GetFileNameFromPath(test
));
40 TEST(CPathUtils
, ExtTest
)
42 CString
test(L
"d:\\test\\filename.ext");
43 EXPECT_STREQ(L
".ext", CPathUtils::GetFileExtFromPath(test
));
44 test
= L
"filename.ext";
45 EXPECT_STREQ(L
".ext", CPathUtils::GetFileExtFromPath(test
));
46 test
= L
"d:\\test\\filename";
47 EXPECT_STREQ(L
"", CPathUtils::GetFileExtFromPath(test
));
49 EXPECT_STREQ(L
"", CPathUtils::GetFileExtFromPath(test
));
51 EXPECT_STREQ(L
"", CPathUtils::GetFileExtFromPath(test
));
54 TEST(CPathUtils
, ParseTests
)
56 CString
test(L
"test 'd:\\testpath with spaces' test");
57 EXPECT_STREQ(L
"d:\\testpath with spaces", CPathUtils::ParsePathInString(test
));
58 test
= L
"d:\\testpath with spaces";
59 EXPECT_STREQ(L
"d:\\testpath with spaces", CPathUtils::ParsePathInString(test
));
62 TEST(CPathUtils
, MakeSureDirectoryPathExists
)
65 EXPECT_TRUE(PathIsDirectory(tmpDir
.GetTempDir()));
66 EXPECT_FALSE(PathFileExists(tmpDir
.GetTempDir() + L
"\\sub"));
67 EXPECT_FALSE(PathIsDirectory(tmpDir
.GetTempDir() + L
"\\sub"));
69 EXPECT_TRUE(CPathUtils::MakeSureDirectoryPathExists(tmpDir
.GetTempDir() + L
"\\sub\\sub\\dir"));
70 EXPECT_TRUE(PathIsDirectory(tmpDir
.GetTempDir() + L
"\\sub"));
71 EXPECT_TRUE(PathIsDirectory(tmpDir
.GetTempDir() + L
"\\sub\\sub"));
72 EXPECT_TRUE(PathIsDirectory(tmpDir
.GetTempDir() + L
"\\sub\\sub\\dir"));
74 EXPECT_TRUE(CPathUtils::MakeSureDirectoryPathExists(tmpDir
.GetTempDir() + L
"\\sub/asub/adir"));
75 EXPECT_TRUE(PathIsDirectory(tmpDir
.GetTempDir() + L
"\\sub"));
76 EXPECT_TRUE(PathIsDirectory(tmpDir
.GetTempDir() + L
"\\sub\\asub"));
77 EXPECT_TRUE(PathIsDirectory(tmpDir
.GetTempDir() + L
"\\sub\\asub\\adir"));
80 TEST(CPathUtils
, EnsureTrailingPathDelimiter
)
83 CPathUtils::EnsureTrailingPathDelimiter(tPath
);
84 EXPECT_STREQ(tPath
, L
"");
87 CPathUtils::EnsureTrailingPathDelimiter(tPath
);
88 EXPECT_STREQ(tPath
, L
"C:\\");
91 CPathUtils::EnsureTrailingPathDelimiter(tPath
);
92 EXPECT_STREQ(tPath
, L
"C:\\");
94 tPath
= L
"C:\\my\\path";
95 CPathUtils::EnsureTrailingPathDelimiter(tPath
);
96 EXPECT_STREQ(tPath
, L
"C:\\my\\path\\");
98 tPath
= L
"C:\\my\\path\\";
99 CPathUtils::EnsureTrailingPathDelimiter(tPath
);
100 EXPECT_STREQ(tPath
, L
"C:\\my\\path\\");
103 TEST(CPathUtils
, BuildPathWithPathDelimiter
)
105 EXPECT_STREQ(CPathUtils::BuildPathWithPathDelimiter(L
""), L
"");
106 EXPECT_STREQ(CPathUtils::BuildPathWithPathDelimiter(L
"C:"), L
"C:\\");
107 EXPECT_STREQ(CPathUtils::BuildPathWithPathDelimiter(L
"C:\\"), L
"C:\\");
108 EXPECT_STREQ(CPathUtils::BuildPathWithPathDelimiter(L
"C:\\my\\path"), L
"C:\\my\\path\\");
109 EXPECT_STREQ(CPathUtils::BuildPathWithPathDelimiter(L
"C:\\my\\path\\"), L
"C:\\my\\path\\");
112 TEST(CPathUtils
, TrimTrailingPathDelimiter
)
115 CPathUtils::TrimTrailingPathDelimiter(tPath
);
116 EXPECT_STREQ(tPath
, L
"");
119 CPathUtils::TrimTrailingPathDelimiter(tPath
);
120 EXPECT_STREQ(tPath
, L
"C:");
123 CPathUtils::TrimTrailingPathDelimiter(tPath
);
124 EXPECT_STREQ(tPath
, L
"C:");
126 tPath
= L
"C:\\my\\path";
127 CPathUtils::TrimTrailingPathDelimiter(tPath
);
128 EXPECT_STREQ(tPath
, L
"C:\\my\\path");
130 tPath
= L
"C:\\my\\path\\";
131 CPathUtils::TrimTrailingPathDelimiter(tPath
);
132 EXPECT_STREQ(tPath
, L
"C:\\my\\path");
134 tPath
= L
"C:\\my\\path\\\\";
135 CPathUtils::TrimTrailingPathDelimiter(tPath
);
136 EXPECT_STREQ(tPath
, L
"C:\\my\\path");
139 TEST(CPathUtils
, ExpandFileName
)
141 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"C:\\my\\path\\da\\da\\da"), L
"C:\\my\\path\\da\\da\\da");
142 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"C:\\my\\path\\da\\da\\da\\"), L
"C:\\my\\path\\da\\da\\da\\");
144 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"C:\\my\\path\\\\da\\da\\da"), L
"C:\\my\\path\\da\\da\\da");
145 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"C:\\my\\path\\.\\da\\da\\da"), L
"C:\\my\\path\\da\\da\\da");
146 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"C:\\my\\path\\.\\da\\da\\da\\"), L
"C:\\my\\path\\da\\da\\da\\");
148 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"C:\\my\\path\\..\\da\\da\\da"), L
"C:\\my\\da\\da\\da");
149 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"C:\\my\\path\\..\\da\\da\\da\\"), L
"C:\\my\\da\\da\\da\\");
152 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"\\\\.\\C:\\my\\path\\da\\da\\da"), L
"\\\\.\\C:\\my\\path\\da\\da\\da");
153 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"\\\\.\\C:\\my\\path\\da\\da\\da\\"), L
"\\\\.\\C:\\my\\path\\da\\da\\da\\");
155 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"\\\\.\\C:\\my\\path\\\\da\\da\\da"), L
"\\\\.\\C:\\my\\path\\da\\da\\da");
156 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"\\\\.\\C:\\my\\path\\.\\da\\da\\da"), L
"\\\\.\\C:\\my\\path\\da\\da\\da");
157 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"\\\\.\\C:\\my\\path\\.\\da\\da\\da\\"), L
"\\\\.\\C:\\my\\path\\da\\da\\da\\");
159 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"\\\\.\\C:\\my\\path\\..\\da\\da\\da"), L
"\\\\.\\C:\\my\\da\\da\\da");
160 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"\\\\.\\C:\\my\\path\\..\\da\\da\\da\\"), L
"\\\\.\\C:\\my\\da\\da\\da\\");
163 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"\\\\DACOMPUTER\\my\\path\\.\\da\\da\\da"), L
"\\\\DACOMPUTER\\my\\path\\da\\da\\da");
164 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"\\\\DACOMPUTER\\my\\path\\.\\da\\da\\da\\"), L
"\\\\DACOMPUTER\\my\\path\\da\\da\\da\\");
166 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"\\\\DACOMPUTER\\my\\path\\..\\da\\da\\da"), L
"\\\\DACOMPUTER\\my\\da\\da\\da");
167 EXPECT_STREQ(CPathUtils::ExpandFileName(L
"\\\\DACOMPUTER\\my\\path\\..\\da\\da\\da\\"), L
"\\\\DACOMPUTER\\my\\da\\da\\da\\");
170 TEST(CPathUtils
, IsSamePath
)
172 EXPECT_TRUE(CPathUtils::IsSamePath(L
"", L
""));
174 EXPECT_TRUE(CPathUtils::IsSamePath(L
"C:\\my\\path\\da\\da\\da", L
"C:\\my\\path\\da\\da\\da"));
175 EXPECT_TRUE(CPathUtils::IsSamePath(L
"C:\\my\\path\\da\\da\\da", L
"c:\\my\\pAth\\DA\\da\\da"));
176 EXPECT_TRUE(CPathUtils::IsSamePath(L
"C:\\my\\path\\da\\da\\da", L
"C:\\my\\path\\da\\da\\da\\"));
177 EXPECT_TRUE(CPathUtils::IsSamePath(L
"C:\\my\\path\\da\\da\\da", L
"C:\\my\\path\\da\\da\\da\\."));
178 EXPECT_TRUE(CPathUtils::IsSamePath(L
"C:\\my\\path\\da\\da\\da", L
"C:\\my\\path\\da\\da\\da\\.\\"));
179 EXPECT_TRUE(CPathUtils::IsSamePath(L
"C:\\my\\path\\da\\da\\da", L
"C:\\my\\path\\.\\.\\da\\da\\da"));
180 EXPECT_TRUE(CPathUtils::IsSamePath(L
"C:\\my\\path\\da\\da\\da", L
"C:\\my\\path\\..\\path\\da\\da\\da"));
181 EXPECT_TRUE(CPathUtils::IsSamePath(L
"C:\\my\\path\\da\\da\\da", L
"C:\\my\\path\\..\\path\\da\\da\\da\\bla\\.."));
183 EXPECT_FALSE(CPathUtils::IsSamePath(L
"C:\\my\\path\\da\\da\\da", L
"C:\\this\\is\\a\\new\\path"));
184 EXPECT_FALSE(CPathUtils::IsSamePath(L
"C:\\my\\path\\da\\da\\da", L
"C:\\my\\path\\da\\da\\da\\.."));
185 EXPECT_FALSE(CPathUtils::IsSamePath(L
"C:\\my\\path\\da\\da\\da", L
"C:\\my\\path\\da\\da\\da\\..\\"));
186 EXPECT_FALSE(CPathUtils::IsSamePath(L
"C:\\my\\path\\da\\da\\da", L
"C:\\my\\path\\..\\path\\da\\da\\da\\.\\da"));