From 7f642e51670bc38a4ef782a363936850bc2b0ba9 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Thu, 22 Apr 2021 06:38:23 -0700 Subject: Move dutil into libs/dutil --- src/libs/dutil/test/DUtilUnitTest/PathUtilTest.cpp | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 src/libs/dutil/test/DUtilUnitTest/PathUtilTest.cpp (limited to 'src/libs/dutil/test/DUtilUnitTest/PathUtilTest.cpp') diff --git a/src/libs/dutil/test/DUtilUnitTest/PathUtilTest.cpp b/src/libs/dutil/test/DUtilUnitTest/PathUtilTest.cpp new file mode 100644 index 00000000..5a1f06fd --- /dev/null +++ b/src/libs/dutil/test/DUtilUnitTest/PathUtilTest.cpp @@ -0,0 +1,80 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +#include "precomp.h" + +using namespace System; +using namespace Xunit; +using namespace WixBuildTools::TestSupport; + +namespace DutilTests +{ + public ref class PathUtil + { + public: + [Fact] + void PathGetHierarchyArrayTest() + { + HRESULT hr = S_OK; + LPWSTR *rgsczPaths = NULL; + UINT cPaths = 0; + + try + { + hr = PathGetHierarchyArray(L"c:\\foo\\bar\\bas\\a.txt", &rgsczPaths, &cPaths); + NativeAssert::Succeeded(hr, "Failed to get parent directories array for regular file path"); + Assert::Equal(5, cPaths); + NativeAssert::StringEqual(L"c:\\", rgsczPaths[0]); + NativeAssert::StringEqual(L"c:\\foo\\", rgsczPaths[1]); + NativeAssert::StringEqual(L"c:\\foo\\bar\\", rgsczPaths[2]); + NativeAssert::StringEqual(L"c:\\foo\\bar\\bas\\", rgsczPaths[3]); + NativeAssert::StringEqual(L"c:\\foo\\bar\\bas\\a.txt", rgsczPaths[4]); + ReleaseNullStrArray(rgsczPaths, cPaths); + + hr = PathGetHierarchyArray(L"c:\\foo\\bar\\bas\\", &rgsczPaths, &cPaths); + NativeAssert::Succeeded(hr, "Failed to get parent directories array for regular directory path"); + Assert::Equal(4, cPaths); + NativeAssert::StringEqual(L"c:\\", rgsczPaths[0]); + NativeAssert::StringEqual(L"c:\\foo\\", rgsczPaths[1]); + NativeAssert::StringEqual(L"c:\\foo\\bar\\", rgsczPaths[2]); + NativeAssert::StringEqual(L"c:\\foo\\bar\\bas\\", rgsczPaths[3]); + ReleaseNullStrArray(rgsczPaths, cPaths); + + hr = PathGetHierarchyArray(L"\\\\server\\share\\subdir\\file.txt", &rgsczPaths, &cPaths); + NativeAssert::Succeeded(hr, "Failed to get parent directories array for UNC file path"); + Assert::Equal(3, cPaths); + NativeAssert::StringEqual(L"\\\\server\\share\\", rgsczPaths[0]); + NativeAssert::StringEqual(L"\\\\server\\share\\subdir\\", rgsczPaths[1]); + NativeAssert::StringEqual(L"\\\\server\\share\\subdir\\file.txt", rgsczPaths[2]); + ReleaseNullStrArray(rgsczPaths, cPaths); + + hr = PathGetHierarchyArray(L"\\\\server\\share\\subdir\\", &rgsczPaths, &cPaths); + NativeAssert::Succeeded(hr, "Failed to get parent directories array for UNC directory path"); + Assert::Equal(2, cPaths); + NativeAssert::StringEqual(L"\\\\server\\share\\", rgsczPaths[0]); + NativeAssert::StringEqual(L"\\\\server\\share\\subdir\\", rgsczPaths[1]); + ReleaseNullStrArray(rgsczPaths, cPaths); + + hr = PathGetHierarchyArray(L"Software\\Microsoft\\Windows\\ValueName", &rgsczPaths, &cPaths); + NativeAssert::Succeeded(hr, "Failed to get parent directories array for UNC directory path"); + Assert::Equal(4, cPaths); + NativeAssert::StringEqual(L"Software\\", rgsczPaths[0]); + NativeAssert::StringEqual(L"Software\\Microsoft\\", rgsczPaths[1]); + NativeAssert::StringEqual(L"Software\\Microsoft\\Windows\\", rgsczPaths[2]); + NativeAssert::StringEqual(L"Software\\Microsoft\\Windows\\ValueName", rgsczPaths[3]); + ReleaseNullStrArray(rgsczPaths, cPaths); + + hr = PathGetHierarchyArray(L"Software\\Microsoft\\Windows\\", &rgsczPaths, &cPaths); + NativeAssert::Succeeded(hr, "Failed to get parent directories array for UNC directory path"); + Assert::Equal(3, cPaths); + NativeAssert::StringEqual(L"Software\\", rgsczPaths[0]); + NativeAssert::StringEqual(L"Software\\Microsoft\\", rgsczPaths[1]); + NativeAssert::StringEqual(L"Software\\Microsoft\\Windows\\", rgsczPaths[2]); + ReleaseNullStrArray(rgsczPaths, cPaths); + } + finally + { + ReleaseStrArray(rgsczPaths, cPaths); + } + } + }; +} -- cgit v1.2.3-55-g6feb