115 lines
3.8 KiB
C++
115 lines
3.8 KiB
C++
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
#include "precomp.h"
|
|
#include "WexTestClass.h"
|
|
#include "../../inc/consoletaeftemplates.hpp"
|
|
|
|
#include "srvinit.h"
|
|
|
|
using namespace WEX::Common;
|
|
using namespace WEX::Logging;
|
|
using namespace WEX::TestExecution;
|
|
|
|
class TitleTests
|
|
{
|
|
TEST_CLASS(TitleTests);
|
|
|
|
TEST_CLASS_SETUP(ClassSetup)
|
|
{
|
|
// This class assumes that %SystemRoot% == c:\windows
|
|
WCHAR szSystemRoot[MAX_PATH];
|
|
if (0 != GetWindowsDirectoryW(szSystemRoot, ARRAYSIZE(szSystemRoot)))
|
|
{
|
|
String strSystemRoot(szSystemRoot);
|
|
String strExpectedSystemRoot(L"c:\\windows");
|
|
return (strSystemRoot.ToLower() == strExpectedSystemRoot.ToLower());
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
TEST_METHOD(TestTranslateConsoleTitle)
|
|
{
|
|
BEGIN_TEST_METHOD_PROPERTIES()
|
|
TEST_METHOD_PROPERTY(L"Data:consoleTitle", L"{foo\\bar, c:\\windows\\system32\\cmd.exe, x:\\file\\path}")
|
|
TEST_METHOD_PROPERTY(L"Data:unexpand", L"{true, false}")
|
|
TEST_METHOD_PROPERTY(L"Data:substitute", L"{true, false}")
|
|
END_TEST_METHOD_PROPERTIES();
|
|
|
|
String strConsoleTitle;
|
|
VERIFY_SUCCEEDED(TestData::TryGetValue(L"consoleTitle", strConsoleTitle));
|
|
|
|
bool fUnexpand;
|
|
VERIFY_SUCCEEDED(TestData::TryGetValue(L"unexpand", fUnexpand));
|
|
|
|
bool fSubstitute;
|
|
VERIFY_SUCCEEDED(TestData::TryGetValue(L"substitute", fSubstitute));
|
|
|
|
PWSTR pszTranslated = TranslateConsoleTitle(strConsoleTitle, fUnexpand, fSubstitute);
|
|
VERIFY_IS_NOT_NULL(pszTranslated);
|
|
Log::Comment(String().Format(L"Translated title: %s", pszTranslated));
|
|
|
|
String strTranslatedTitle(pszTranslated);
|
|
if (strConsoleTitle.Find(L"foo") == 0)
|
|
{
|
|
// dealing with non-filesystem parameter
|
|
if (fSubstitute)
|
|
{
|
|
// shouldn't have a backslash -- just an underscore
|
|
VERIFY_ARE_EQUAL(strTranslatedTitle, String(L"foo_bar"));
|
|
}
|
|
else
|
|
{
|
|
// string shouldn't be modified
|
|
VERIFY_ARE_EQUAL(strConsoleTitle, strTranslatedTitle);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// dealing with filesystem parameter
|
|
if (strConsoleTitle.Find(L"c") == 0)
|
|
{
|
|
// dealing with c:\windows\system32\cmd.exe
|
|
if (fUnexpand)
|
|
{
|
|
if (fSubstitute)
|
|
{
|
|
VERIFY_ARE_EQUAL(strTranslatedTitle, String(L"%SystemRoot%_system32_cmd.exe"));
|
|
}
|
|
else
|
|
{
|
|
VERIFY_ARE_EQUAL(strTranslatedTitle, String(L"%SystemRoot%\\system32\\cmd.exe"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (fSubstitute)
|
|
{
|
|
VERIFY_ARE_EQUAL(strTranslatedTitle, String(L"c:_windows_system32_cmd.exe"));
|
|
}
|
|
else
|
|
{
|
|
VERIFY_ARE_EQUAL(strConsoleTitle, strTranslatedTitle);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// dealing with x:\file\path
|
|
if (fSubstitute)
|
|
{
|
|
VERIFY_ARE_EQUAL(strTranslatedTitle, String(L"x:_file_path"));
|
|
}
|
|
else
|
|
{
|
|
VERIFY_ARE_EQUAL(strConsoleTitle, strTranslatedTitle);
|
|
}
|
|
}
|
|
}
|
|
|
|
delete[] pszTranslated;
|
|
pszTranslated = nullptr;
|
|
}
|
|
};
|