terminal/src/host/ut_host/TitleTests.cpp

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;
}
};