WinStd/UnitTests/Shell.cpp
Simon Rozman e553485d33 Add missing UTF-8 BOM
We want to ensure non-UTF8 configured Windows machines interpret our
source code correctly.

Signed-off-by: Simon Rozman <simon@rozman.si>
2024-11-11 12:24:22 +01:00

65 lines
3.1 KiB
C++

/*
SPDX-License-Identifier: MIT
Copyright © 2022-2024 Amebis
*/
#include "pch.h"
using namespace std;
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTests
{
TEST_CLASS(Shell)
{
public:
TEST_METHOD(PathCanonicalizeA)
{
string path;
Assert::IsTrue(::PathCanonicalizeA(path, "C:\\Windows\\Temp\\test\\.."));
Assert::AreEqual("C:\\Windows\\Temp", path.c_str(), true);
}
TEST_METHOD(PathCanonicalizeW)
{
wstring path;
Assert::IsTrue(::PathCanonicalizeW(path, L"C:\\Windows\\Temp\\test\\.."));
Assert::AreEqual(L"C:\\Windows\\Temp", path.c_str(), true);
}
TEST_METHOD(PathRemoveBackslashA)
{
string path;
static const char normal_path[] = "C:\\Windows\\Temp\\test";
path = normal_path; path += '\\'; ::PathRemoveBackslashA(path);
Assert::AreEqual(normal_path, path.c_str());
path = normal_path; ::PathRemoveBackslashA(path);
Assert::AreEqual(normal_path, path.c_str());
static const char very_long_path[] = "C:\\Windows\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\test";
path = very_long_path; path += '\\'; ::PathRemoveBackslashA(path);
Assert::AreEqual(very_long_path, path.c_str());
path = very_long_path; ::PathRemoveBackslashA(path);
Assert::AreEqual(very_long_path, path.c_str());
}
TEST_METHOD(PathRemoveBackslashW)
{
wstring path;
static const wchar_t normal_path[] = L"C:\\Windows\\Temp\\test";
path = normal_path; path += L'\\'; ::PathRemoveBackslashW(path);
Assert::AreEqual(normal_path, path.c_str());
path = normal_path; ::PathRemoveBackslashW(path);
Assert::AreEqual(normal_path, path.c_str());
static const wchar_t very_long_path[] = L"C:\\Windows\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\Temp\\test";
path = very_long_path; path += L'\\'; ::PathRemoveBackslashW(path);
Assert::AreEqual(very_long_path, path.c_str());
path = very_long_path; ::PathRemoveBackslashW(path);
Assert::AreEqual(very_long_path, path.c_str());
}
};
}