aboutsummaryrefslogtreecommitdiff
path: root/src/libs/dutil/test/DUtilUnitTest
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2022-05-26 17:34:48 -0500
committerSean Hall <r.sean.hall@gmail.com>2022-05-31 13:20:44 -0500
commit90982fbf1c887a3ed3454f9ab3ab8dfbd57a1383 (patch)
tree7d87b21f0879de446f5db7053d349f32b4882cbe /src/libs/dutil/test/DUtilUnitTest
parenta070d8c7b57d6c9a54106abeb359a6c868b6d7ae (diff)
downloadwix-90982fbf1c887a3ed3454f9ab3ab8dfbd57a1383.tar.gz
wix-90982fbf1c887a3ed3454f9ab3ab8dfbd57a1383.tar.bz2
wix-90982fbf1c887a3ed3454f9ab3ab8dfbd57a1383.zip
Add PathConcatRelativeToBase and use it in Burn.
Fixes 6707
Diffstat (limited to 'src/libs/dutil/test/DUtilUnitTest')
-rw-r--r--src/libs/dutil/test/DUtilUnitTest/PathUtilTest.cpp107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/libs/dutil/test/DUtilUnitTest/PathUtilTest.cpp b/src/libs/dutil/test/DUtilUnitTest/PathUtilTest.cpp
index 04d0b447..52698b98 100644
--- a/src/libs/dutil/test/DUtilUnitTest/PathUtilTest.cpp
+++ b/src/libs/dutil/test/DUtilUnitTest/PathUtilTest.cpp
@@ -221,6 +221,113 @@ namespace DutilTests
221 } 221 }
222 222
223 [Fact] 223 [Fact]
224 void PathConcatTest()
225 {
226 HRESULT hr = S_OK;
227 LPWSTR sczPath = NULL;
228 LPCWSTR rgwzPaths[54] =
229 {
230 L"a", NULL, L"a",
231 L"a", L"", L"a",
232 L"C:\\", L"a", L"C:\\a",
233 L"\\a", L"b", L"\\a\\b",
234 L"a", L"b", L"a\\b",
235 L"C:\\", L"..\\a", L"C:\\..\\a",
236 L"C:\\a", L"..\\b", L"C:\\a\\..\\b",
237 L"\\\\server\\share", L"..\\a", L"\\\\server\\share\\..\\a",
238 L"\\\\server\\share\\a", L"..\\b", L"\\\\server\\share\\a\\..\\b",
239 NULL, L"b", L"b",
240 L"", L"b", L"b",
241 L"a", L"\\b", L"\\b",
242 L"a", L"b:", L"b:",
243 L"a", L"b:\\", L"b:\\",
244 L"a", L"\\\\?\\b", L"\\\\?\\b",
245 L"a", L"\\\\?\\UNC\\b", L"\\\\?\\UNC\\b",
246 L"a", L"\\b", L"\\b",
247 L"a", L"\\\\", L"\\\\",
248 };
249
250 try
251 {
252 for (DWORD i = 0; i < countof(rgwzPaths); i += 3)
253 {
254 hr = PathConcat(rgwzPaths[i], rgwzPaths[i + 1], &sczPath);
255 NativeAssert::Succeeded(hr, "PathConcat: {0}, {1}", rgwzPaths[i], rgwzPaths[i + 1]);
256 NativeAssert::StringEqual(rgwzPaths[i + 2], sczPath);
257 }
258 }
259 finally
260 {
261 ReleaseStr(sczPath);
262 }
263 }
264
265 [Fact]
266 void PathConcatRelativeToBaseTest()
267 {
268 HRESULT hr = S_OK;
269 LPWSTR sczPath = NULL;
270 LPCWSTR rgwzPaths[27] =
271 {
272 L"a", NULL, L"a",
273 L"a", L"", L"a",
274 L"C:\\", L"a", L"C:\\a",
275 L"\\a", L"b", L"\\a\\b",
276 L"a", L"b", L"a\\b",
277 L"C:\\", L"..\\a", L"C:\\a",
278 L"C:\\a", L"..\\b", L"C:\\a\\b",
279 L"\\\\server\\share", L"..\\a", L"\\\\server\\share\\a",
280 L"\\\\server\\share\\a", L"..\\b", L"\\\\server\\share\\a\\b",
281 };
282
283 try
284 {
285 for (DWORD i = 0; i < countof(rgwzPaths); i += 3)
286 {
287 hr = PathConcatRelativeToBase(rgwzPaths[i], rgwzPaths[i + 1], &sczPath);
288 NativeAssert::Succeeded(hr, "PathConcatRelativeToBase: {0}, {1}", rgwzPaths[i], rgwzPaths[i + 1]);
289 NativeAssert::StringEqual(rgwzPaths[i + 2], sczPath);
290 }
291 }
292 finally
293 {
294 ReleaseStr(sczPath);
295 }
296 }
297
298 [Fact]
299 void PathConcatRelativeToBaseFailureTest()
300 {
301 HRESULT hr = S_OK;
302 LPWSTR sczPath = NULL;
303 LPCWSTR rgwzPaths[18] =
304 {
305 NULL, L"b",
306 L"", L"b",
307 L"a", L"\\b",
308 L"a", L"b:",
309 L"a", L"b:\\",
310 L"a", L"\\\\?\\b",
311 L"a", L"\\\\?\\UNC\\b",
312 L"a", L"\\b",
313 L"a", L"\\\\",
314 };
315
316 try
317 {
318 for (DWORD i = 0; i < countof(rgwzPaths); i += 2)
319 {
320 hr = PathConcatRelativeToBase(rgwzPaths[i], rgwzPaths[i + 1], &sczPath);
321 NativeAssert::SpecificReturnCode(hr, E_INVALIDARG, "PathConcatRelativeToBase: {0}, {1}", rgwzPaths[i], rgwzPaths[i + 1]);
322 }
323 }
324 finally
325 {
326 ReleaseStr(sczPath);
327 }
328 }
329
330 [Fact]
224 void PathDirectoryContainsPathTest() 331 void PathDirectoryContainsPathTest()
225 { 332 {
226 HRESULT hr = S_OK; 333 HRESULT hr = S_OK;