Fix '==': signed/unsigned mismatch warning
[TortoiseGit.git] / test / UnitTests / PathUtilsTest.cpp
bloba4e1ce2bfeffe8e1b53a934b3bc935cc1ff62b06
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.
21 #include "stdafx.h"
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));
34 test = L"filename";
35 EXPECT_STREQ(L"filename", CPathUtils::GetFileNameFromPath(test));
36 test.Empty();
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));
48 test = L"filename";
49 EXPECT_STREQ(L"", CPathUtils::GetFileExtFromPath(test));
50 test.Empty();
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)
64 CAutoTempDir tmpDir;
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)
82 CString tPath;
83 CPathUtils::EnsureTrailingPathDelimiter(tPath);
84 EXPECT_STREQ(tPath, L"");
86 tPath = L"C:";
87 CPathUtils::EnsureTrailingPathDelimiter(tPath);
88 EXPECT_STREQ(tPath, L"C:\\");
90 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)
114 CString tPath;
115 CPathUtils::TrimTrailingPathDelimiter(tPath);
116 EXPECT_STREQ(tPath, L"");
118 tPath = L"C:";
119 CPathUtils::TrimTrailingPathDelimiter(tPath);
120 EXPECT_STREQ(tPath, L"C:");
122 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\\");
151 // "\\.\\C:\\"
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\\");
162 // UNC paths
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"));