mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-05 10:46:33 +02:00
[FancyZones] Split zones-settings: devices -> applied layouts (#15779)
This commit is contained in:
@@ -0,0 +1,374 @@
|
||||
#include "pch.h"
|
||||
#include <filesystem>
|
||||
|
||||
#include <FancyZonesLib/FancyZonesData.h>
|
||||
#include <FancyZonesLib/FancyZonesData/AppliedLayouts.h>
|
||||
#include <FancyZonesLib/util.h>
|
||||
|
||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
|
||||
|
||||
namespace FancyZonesUnitTests
|
||||
{
|
||||
TEST_CLASS (AppliedLayoutsUnitTests)
|
||||
{
|
||||
FancyZonesData& m_fzData = FancyZonesDataInstance();
|
||||
std::wstring m_testFolder = L"FancyZonesUnitTests";
|
||||
|
||||
TEST_METHOD_INITIALIZE(Init)
|
||||
{
|
||||
m_fzData.SetSettingsModulePath(L"FancyZonesUnitTests");
|
||||
}
|
||||
|
||||
TEST_METHOD_CLEANUP(CleanUp)
|
||||
{
|
||||
std::filesystem::remove_all(AppliedLayouts::AppliedLayoutsFileName());
|
||||
std::filesystem::remove_all(PTSettingsHelper::get_module_save_folder_location(m_testFolder));
|
||||
}
|
||||
|
||||
TEST_METHOD (AppliedLayoutsParse)
|
||||
{
|
||||
// prepare
|
||||
json::JsonObject root{};
|
||||
json::JsonArray layoutsArray{};
|
||||
|
||||
{
|
||||
json::JsonObject layout{};
|
||||
layout.SetNamedValue(NonLocalizable::AppliedLayoutsIds::UuidID, json::value(L"{ACE817FD-2C51-4E13-903A-84CAB86FD17C}"));
|
||||
layout.SetNamedValue(NonLocalizable::AppliedLayoutsIds::TypeID, json::value(FancyZonesDataTypes::TypeToString(FancyZonesDataTypes::ZoneSetLayoutType::Rows)));
|
||||
layout.SetNamedValue(NonLocalizable::AppliedLayoutsIds::ShowSpacingID, json::value(true));
|
||||
layout.SetNamedValue(NonLocalizable::AppliedLayoutsIds::SpacingID, json::value(3));
|
||||
layout.SetNamedValue(NonLocalizable::AppliedLayoutsIds::ZoneCountID, json::value(4));
|
||||
layout.SetNamedValue(NonLocalizable::AppliedLayoutsIds::SensitivityRadiusID, json::value(22));
|
||||
|
||||
json::JsonObject obj{};
|
||||
obj.SetNamedValue(NonLocalizable::AppliedLayoutsIds::DeviceIdID, json::value(L"DELA026#5&10a58c63&0&UID16777488_2194_1234_{61FA9FC0-26A6-4B37-A834-491C148DFC57}"));
|
||||
obj.SetNamedValue(NonLocalizable::AppliedLayoutsIds::AppliedLayoutID, layout);
|
||||
|
||||
layoutsArray.Append(obj);
|
||||
}
|
||||
|
||||
root.SetNamedValue(NonLocalizable::AppliedLayoutsIds::AppliedLayoutsArrayID, layoutsArray);
|
||||
json::to_file(AppliedLayouts::AppliedLayoutsFileName(), root);
|
||||
|
||||
// test
|
||||
AppliedLayouts::instance().LoadData();
|
||||
Assert::AreEqual((size_t)1, AppliedLayouts::instance().GetAppliedLayoutMap().size());
|
||||
|
||||
FancyZonesDataTypes::DeviceIdData id{
|
||||
.deviceName = L"DELA026#5&10a58c63&0&UID16777488",
|
||||
.width = 2194,
|
||||
.height = 1234,
|
||||
.virtualDesktopId = FancyZonesUtils::GuidFromString(L"{61FA9FC0-26A6-4B37-A834-491C148DFC57}").value()
|
||||
};
|
||||
Assert::IsTrue(AppliedLayouts::instance().GetDeviceLayout(id).has_value());
|
||||
}
|
||||
|
||||
TEST_METHOD (AppliedLayoutsParseEmpty)
|
||||
{
|
||||
// prepare
|
||||
json::JsonObject root{};
|
||||
json::JsonArray layoutsArray{};
|
||||
root.SetNamedValue(NonLocalizable::AppliedLayoutsIds::AppliedLayoutsArrayID, layoutsArray);
|
||||
json::to_file(AppliedLayouts::AppliedLayoutsFileName(), root);
|
||||
|
||||
// test
|
||||
AppliedLayouts::instance().LoadData();
|
||||
Assert::IsTrue(AppliedLayouts::instance().GetAppliedLayoutMap().empty());
|
||||
}
|
||||
|
||||
TEST_METHOD (AppliedLayoutsNoFile)
|
||||
{
|
||||
// test
|
||||
AppliedLayouts::instance().LoadData();
|
||||
Assert::IsTrue(AppliedLayouts::instance().GetAppliedLayoutMap().empty());
|
||||
}
|
||||
|
||||
TEST_METHOD (MoveAppliedLayoutsFromZonesSettings)
|
||||
{
|
||||
// prepare
|
||||
json::JsonObject root{};
|
||||
json::JsonArray devicesArray{}, customLayoutsArray{}, templateLayoutsArray{}, quickLayoutKeysArray{};
|
||||
|
||||
{
|
||||
json::JsonObject activeZoneset{};
|
||||
activeZoneset.SetNamedValue(L"uuid", json::value(L"{ACE817FD-2C51-4E13-903A-84CAB86FD17C}"));
|
||||
activeZoneset.SetNamedValue(L"type", json::value(FancyZonesDataTypes::TypeToString(FancyZonesDataTypes::ZoneSetLayoutType::Rows)));
|
||||
|
||||
json::JsonObject obj{};
|
||||
obj.SetNamedValue(L"device-id", json::value(L"VSC9636#5&37ac4db&0&UID160005_3840_2160_{00000000-0000-0000-0000-000000000000}"));
|
||||
obj.SetNamedValue(L"active-zoneset", activeZoneset);;
|
||||
obj.SetNamedValue(L"editor-show-spacing", json::value(true));
|
||||
obj.SetNamedValue(L"editor-spacing", json::value(3));
|
||||
obj.SetNamedValue(L"editor-zone-count", json::value(4));
|
||||
obj.SetNamedValue(L"editor-sensitivity-radius", json::value(22));
|
||||
|
||||
devicesArray.Append(obj);
|
||||
}
|
||||
|
||||
root.SetNamedValue(L"devices", devicesArray);
|
||||
root.SetNamedValue(L"custom-zone-sets", customLayoutsArray);
|
||||
root.SetNamedValue(L"templates", templateLayoutsArray);
|
||||
root.SetNamedValue(L"quick-layout-keys", quickLayoutKeysArray);
|
||||
json::to_file(m_fzData.GetZoneSettingsPath(m_testFolder), root);
|
||||
|
||||
// test
|
||||
m_fzData.ReplaceZoneSettingsFileFromOlderVersions();
|
||||
AppliedLayouts::instance().LoadData();
|
||||
Assert::AreEqual((size_t)1, AppliedLayouts::instance().GetAppliedLayoutMap().size());
|
||||
|
||||
FancyZonesDataTypes::DeviceIdData id{
|
||||
.deviceName = L"VSC9636#5&37ac4db&0&UID160005",
|
||||
.width = 3840,
|
||||
.height = 2160,
|
||||
.virtualDesktopId = FancyZonesUtils::GuidFromString(L"{00000000-0000-0000-0000-000000000000}").value()
|
||||
};
|
||||
Assert::IsTrue(AppliedLayouts::instance().GetDeviceLayout(id).has_value());
|
||||
}
|
||||
|
||||
TEST_METHOD (MoveAppliedLayoutsFromZonesSettingsNoAppliedLayoutsData)
|
||||
{
|
||||
// prepare
|
||||
json::JsonObject root{};
|
||||
json::JsonArray customLayoutsArray{}, templateLayoutsArray{}, quickLayoutKeysArray{};
|
||||
root.SetNamedValue(L"custom-zone-sets", customLayoutsArray);
|
||||
root.SetNamedValue(L"templates", templateLayoutsArray);
|
||||
root.SetNamedValue(L"quick-layout-keys", quickLayoutKeysArray);
|
||||
json::to_file(m_fzData.GetZoneSettingsPath(m_testFolder), root);
|
||||
|
||||
// test
|
||||
m_fzData.ReplaceZoneSettingsFileFromOlderVersions();
|
||||
AppliedLayouts::instance().LoadData();
|
||||
Assert::IsTrue(AppliedLayouts::instance().GetAppliedLayoutMap().empty());
|
||||
}
|
||||
|
||||
TEST_METHOD (MoveAppliedLayoutsFromZonesSettingsNoFile)
|
||||
{
|
||||
// test
|
||||
m_fzData.ReplaceZoneSettingsFileFromOlderVersions();
|
||||
AppliedLayouts::instance().LoadData();
|
||||
Assert::IsTrue(AppliedLayouts::instance().GetAppliedLayoutMap().empty());
|
||||
}
|
||||
|
||||
TEST_METHOD (CloneDeviceInfo)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData deviceSrc{
|
||||
.deviceName = L"Device1",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = FancyZonesUtils::GuidFromString(L"{00000000-0000-0000-0000-000000000000}").value()
|
||||
};
|
||||
FancyZonesDataTypes::DeviceIdData deviceDst{
|
||||
.deviceName = L"Device2",
|
||||
.width = 300,
|
||||
.height = 400,
|
||||
.virtualDesktopId = FancyZonesUtils::GuidFromString(L"{00000000-0000-0000-0000-000000000000}").value()
|
||||
};
|
||||
|
||||
Assert::IsTrue(AppliedLayouts::instance().ApplyDefaultLayout(deviceSrc));
|
||||
Assert::IsTrue(AppliedLayouts::instance().ApplyDefaultLayout(deviceDst));
|
||||
|
||||
AppliedLayouts::instance().CloneLayout(deviceSrc, deviceDst);
|
||||
|
||||
auto actualMap = AppliedLayouts::instance().GetAppliedLayoutMap();
|
||||
Assert::IsFalse(actualMap.find(deviceSrc) == actualMap.end());
|
||||
Assert::IsFalse(actualMap.find(deviceDst) == actualMap.end());
|
||||
|
||||
auto expected = AppliedLayouts::instance().GetDeviceLayout(deviceSrc);
|
||||
auto actual = AppliedLayouts::instance().GetDeviceLayout(deviceDst);
|
||||
|
||||
Assert::IsTrue(expected.has_value());
|
||||
Assert::IsTrue(actual.has_value());
|
||||
Assert::IsTrue(expected.value().uuid == actual.value().uuid);
|
||||
}
|
||||
|
||||
TEST_METHOD (CloneDeviceInfoIntoUnknownDevice)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData deviceSrc{
|
||||
.deviceName = L"Device1",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = FancyZonesUtils::GuidFromString(L"{00000000-0000-0000-0000-000000000000}").value()
|
||||
};
|
||||
FancyZonesDataTypes::DeviceIdData deviceDst{
|
||||
.deviceName = L"Device2",
|
||||
.width = 300,
|
||||
.height = 400,
|
||||
.virtualDesktopId = FancyZonesUtils::GuidFromString(L"{00000000-0000-0000-0000-000000000000}").value()
|
||||
};
|
||||
|
||||
Assert::IsTrue(AppliedLayouts::instance().ApplyDefaultLayout(deviceSrc));
|
||||
|
||||
AppliedLayouts::instance().CloneLayout(deviceSrc, deviceDst);
|
||||
|
||||
auto actualMap = AppliedLayouts::instance().GetAppliedLayoutMap();
|
||||
Assert::IsFalse(actualMap.find(deviceSrc) == actualMap.end());
|
||||
Assert::IsFalse(actualMap.find(deviceDst) == actualMap.end());
|
||||
|
||||
auto expected = AppliedLayouts::instance().GetDeviceLayout(deviceSrc);
|
||||
auto actual = AppliedLayouts::instance().GetDeviceLayout(deviceDst);
|
||||
|
||||
Assert::IsTrue(expected.has_value());
|
||||
Assert::IsTrue(actual.has_value());
|
||||
Assert::IsTrue(expected.value().uuid == actual.value().uuid);
|
||||
}
|
||||
|
||||
TEST_METHOD (CloneDeviceInfoFromUnknownDevice)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData deviceSrc{
|
||||
.deviceName = L"Device1",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = FancyZonesUtils::GuidFromString(L"{00000000-0000-0000-0000-000000000000}").value()
|
||||
};
|
||||
FancyZonesDataTypes::DeviceIdData deviceDst{
|
||||
.deviceName = L"Device2",
|
||||
.width = 300,
|
||||
.height = 400,
|
||||
.virtualDesktopId = FancyZonesUtils::GuidFromString(L"{00000000-0000-0000-0000-000000000000}").value()
|
||||
};
|
||||
|
||||
AppliedLayouts::instance().LoadData();
|
||||
Assert::IsTrue(AppliedLayouts::instance().ApplyDefaultLayout(deviceDst));
|
||||
|
||||
Assert::IsFalse(AppliedLayouts::instance().CloneLayout(deviceSrc, deviceDst));
|
||||
|
||||
Assert::IsFalse(AppliedLayouts::instance().GetDeviceLayout(deviceSrc).has_value());
|
||||
Assert::IsTrue(AppliedLayouts::instance().GetDeviceLayout(deviceDst).has_value());
|
||||
}
|
||||
|
||||
TEST_METHOD (CloneDeviceInfoNullVirtualDesktopId)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData deviceSrc{
|
||||
.deviceName = L"Device1",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = GUID_NULL
|
||||
};
|
||||
FancyZonesDataTypes::DeviceIdData deviceDst{
|
||||
.deviceName = L"Device2",
|
||||
.width = 300,
|
||||
.height = 400,
|
||||
.virtualDesktopId = FancyZonesUtils::GuidFromString(L"{00000000-0000-0000-0000-000000000000}").value()
|
||||
};
|
||||
|
||||
Assert::IsTrue(AppliedLayouts::instance().ApplyDefaultLayout(deviceSrc));
|
||||
Assert::IsTrue(AppliedLayouts::instance().ApplyDefaultLayout(deviceDst));
|
||||
|
||||
AppliedLayouts::instance().CloneLayout(deviceSrc, deviceDst);
|
||||
|
||||
auto actualMap = AppliedLayouts::instance().GetAppliedLayoutMap();
|
||||
Assert::IsFalse(actualMap.find(deviceSrc) == actualMap.end());
|
||||
Assert::IsFalse(actualMap.find(deviceDst) == actualMap.end());
|
||||
|
||||
auto expected = AppliedLayouts::instance().GetDeviceLayout(deviceSrc);
|
||||
auto actual = AppliedLayouts::instance().GetDeviceLayout(deviceDst);
|
||||
|
||||
Assert::IsTrue(expected.has_value());
|
||||
Assert::IsTrue(actual.has_value());
|
||||
Assert::IsTrue(expected.value().uuid == actual.value().uuid);
|
||||
}
|
||||
|
||||
TEST_METHOD (ApplyLayout)
|
||||
{
|
||||
// prepare
|
||||
FancyZonesDataTypes::DeviceIdData deviceId {
|
||||
.deviceName = L"DELA026#5&10a58c63&0&UID16777488",
|
||||
.width = 2194,
|
||||
.height = 1234,
|
||||
.virtualDesktopId = FancyZonesUtils::GuidFromString(L"{61FA9FC0-26A6-4B37-A834-491C148DFC57}").value()
|
||||
};
|
||||
|
||||
// test
|
||||
FancyZonesDataTypes::ZoneSetData expectedZoneSetData {
|
||||
.uuid = L"{33A2B101-06E0-437B-A61E-CDBECF502906}",
|
||||
.type = FancyZonesDataTypes::ZoneSetLayoutType::Focus
|
||||
};
|
||||
|
||||
AppliedLayouts::instance().ApplyLayout(deviceId, expectedZoneSetData);
|
||||
|
||||
Assert::IsFalse(AppliedLayouts::instance().GetAppliedLayoutMap().empty());
|
||||
Assert::IsTrue(AppliedLayouts::instance().GetDeviceLayout(deviceId).has_value());
|
||||
}
|
||||
|
||||
TEST_METHOD (ApplyLayoutReplace)
|
||||
{
|
||||
// prepare
|
||||
FancyZonesDataTypes::DeviceIdData deviceId{
|
||||
.deviceName = L"DELA026#5&10a58c63&0&UID16777488",
|
||||
.width = 2194,
|
||||
.height = 1234,
|
||||
.virtualDesktopId = FancyZonesUtils::GuidFromString(L"{61FA9FC0-26A6-4B37-A834-491C148DFC57}").value()
|
||||
};
|
||||
|
||||
json::JsonObject root{};
|
||||
json::JsonArray layoutsArray{};
|
||||
{
|
||||
json::JsonObject layout{};
|
||||
layout.SetNamedValue(NonLocalizable::AppliedLayoutsIds::UuidID, json::value(L"{ACE817FD-2C51-4E13-903A-84CAB86FD17C}"));
|
||||
layout.SetNamedValue(NonLocalizable::AppliedLayoutsIds::TypeID, json::value(FancyZonesDataTypes::TypeToString(FancyZonesDataTypes::ZoneSetLayoutType::Rows)));
|
||||
layout.SetNamedValue(NonLocalizable::AppliedLayoutsIds::ShowSpacingID, json::value(true));
|
||||
layout.SetNamedValue(NonLocalizable::AppliedLayoutsIds::SpacingID, json::value(3));
|
||||
layout.SetNamedValue(NonLocalizable::AppliedLayoutsIds::ZoneCountID, json::value(4));
|
||||
layout.SetNamedValue(NonLocalizable::AppliedLayoutsIds::SensitivityRadiusID, json::value(22));
|
||||
|
||||
json::JsonObject obj{};
|
||||
obj.SetNamedValue(NonLocalizable::AppliedLayoutsIds::DeviceIdID, json::value(L"DELA026#5&10a58c63&0&UID16777488_2194_1234_{61FA9FC0-26A6-4B37-A834-491C148DFC57}"));
|
||||
obj.SetNamedValue(NonLocalizable::AppliedLayoutsIds::AppliedLayoutID, layout);
|
||||
|
||||
layoutsArray.Append(obj);
|
||||
}
|
||||
root.SetNamedValue(NonLocalizable::AppliedLayoutsIds::AppliedLayoutsArrayID, layoutsArray);
|
||||
json::to_file(AppliedLayouts::AppliedLayoutsFileName(), root);
|
||||
AppliedLayouts::instance().LoadData();
|
||||
|
||||
// test
|
||||
FancyZonesDataTypes::ZoneSetData expectedZoneSetData {
|
||||
.uuid = L"{33A2B101-06E0-437B-A61E-CDBECF502906}",
|
||||
.type = FancyZonesDataTypes::ZoneSetLayoutType::Focus
|
||||
};
|
||||
|
||||
AppliedLayouts::instance().ApplyLayout(deviceId, expectedZoneSetData);
|
||||
|
||||
Assert::AreEqual((size_t)1, AppliedLayouts::instance().GetAppliedLayoutMap().size());
|
||||
Assert::IsTrue(AppliedLayouts::instance().GetDeviceLayout(deviceId).has_value());
|
||||
|
||||
auto actual = AppliedLayouts::instance().GetAppliedLayoutMap().find(deviceId)->second;
|
||||
Assert::AreEqual(expectedZoneSetData.uuid.c_str(), FancyZonesUtils::GuidToString(actual.uuid).value().c_str());
|
||||
Assert::IsTrue(expectedZoneSetData.type == actual.type);
|
||||
}
|
||||
|
||||
TEST_METHOD (ApplyDefaultLayout)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData expected{
|
||||
.deviceName = L"Device",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = FancyZonesUtils::GuidFromString(L"{00000000-0000-0000-0000-000000000000}").value()
|
||||
};
|
||||
|
||||
auto result = AppliedLayouts::instance().ApplyDefaultLayout(expected);
|
||||
Assert::IsTrue(result);
|
||||
|
||||
auto actualMap = AppliedLayouts::instance().GetAppliedLayoutMap();
|
||||
|
||||
Assert::IsFalse(actualMap.find(expected) == actualMap.end());
|
||||
}
|
||||
|
||||
TEST_METHOD (ApplyDefaultLayoutWithNullVirtualDesktopId)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData expected{
|
||||
.deviceName = L"Device",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = GUID_NULL
|
||||
};
|
||||
|
||||
auto result = AppliedLayouts::instance().ApplyDefaultLayout(expected);
|
||||
Assert::IsTrue(result);
|
||||
|
||||
auto actualMap = AppliedLayouts::instance().GetAppliedLayoutMap();
|
||||
|
||||
Assert::IsFalse(actualMap.find(expected) == actualMap.end());
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -96,7 +96,6 @@ namespace FancyZonesUnitTests
|
||||
|
||||
TEST_METHOD_INITIALIZE(Init)
|
||||
{
|
||||
m_fzData.clear_data();
|
||||
m_fzData.SetSettingsModulePath(L"FancyZonesUnitTests");
|
||||
}
|
||||
|
||||
|
||||
@@ -3,9 +3,10 @@
|
||||
#include <filesystem>
|
||||
|
||||
#include <FancyZonesLib/FancyZones.h>
|
||||
#include <FancyZonesLib/FancyZonesData.h>
|
||||
#include <FancyZonesLib/Settings.h>
|
||||
|
||||
#include <common/SettingsAPI/settings_helpers.h>
|
||||
|
||||
#include "util.h"
|
||||
|
||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
|
||||
@@ -63,8 +64,6 @@ namespace FancyZonesUnitTests
|
||||
winrt::com_ptr<IFancyZonesSettings> m_settings = nullptr;
|
||||
winrt::com_ptr<IFancyZonesCallback> m_fzCallback = nullptr;
|
||||
|
||||
FancyZonesData& m_fancyZonesData = FancyZonesDataInstance();
|
||||
|
||||
std::wstring serializedPowerToySettings(const Settings& settings)
|
||||
{
|
||||
PowerToysSettings::Settings ptSettings(HINSTANCE{}, L"FancyZonesUnitTests");
|
||||
@@ -111,31 +110,27 @@ namespace FancyZonesUnitTests
|
||||
}
|
||||
|
||||
TEST_METHOD_INITIALIZE(Init)
|
||||
{
|
||||
m_hInst = (HINSTANCE)GetModuleHandleW(nullptr);
|
||||
m_settings = MakeFancyZonesSettings(m_hInst, m_moduleName.c_str(), m_moduleKey.c_str());
|
||||
Assert::IsTrue(m_settings != nullptr);
|
||||
{
|
||||
m_hInst = (HINSTANCE)GetModuleHandleW(nullptr);
|
||||
m_settings = MakeFancyZonesSettings(m_hInst, m_moduleName.c_str(), m_moduleKey.c_str());
|
||||
Assert::IsTrue(m_settings != nullptr);
|
||||
|
||||
auto fancyZones = MakeFancyZones(m_hInst, m_settings, nullptr);
|
||||
Assert::IsTrue(fancyZones != nullptr);
|
||||
auto fancyZones = MakeFancyZones(m_hInst, m_settings, nullptr);
|
||||
Assert::IsTrue(fancyZones != nullptr);
|
||||
|
||||
m_fzCallback = fancyZones.as<IFancyZonesCallback>();
|
||||
Assert::IsTrue(m_fzCallback != nullptr);
|
||||
m_fzCallback = fancyZones.as<IFancyZonesCallback>();
|
||||
Assert::IsTrue(m_fzCallback != nullptr);
|
||||
}
|
||||
|
||||
m_fancyZonesData.clear_data();
|
||||
}
|
||||
TEST_METHOD_CLEANUP(Cleanup)
|
||||
{
|
||||
sendKeyboardInput(VK_SHIFT, true);
|
||||
sendKeyboardInput(VK_LWIN, true);
|
||||
sendKeyboardInput(VK_CONTROL, true);
|
||||
|
||||
TEST_METHOD_CLEANUP(Cleanup)
|
||||
{
|
||||
sendKeyboardInput(VK_SHIFT, true);
|
||||
sendKeyboardInput(VK_LWIN, true);
|
||||
sendKeyboardInput(VK_CONTROL, true);
|
||||
|
||||
auto settingsFolder = PTSettingsHelper::get_module_save_folder_location(m_moduleName);
|
||||
const auto settingsFile = settingsFolder + L"\\settings.json";
|
||||
std::filesystem::remove(settingsFile);
|
||||
std::filesystem::remove(settingsFolder);
|
||||
}
|
||||
auto settingsFolder = PTSettingsHelper::get_module_save_folder_location(m_moduleName);
|
||||
std::filesystem::remove_all(settingsFolder);
|
||||
}
|
||||
|
||||
TEST_METHOD (OnKeyDownNothingPressed)
|
||||
{
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
#include <fstream>
|
||||
#include <utility>
|
||||
|
||||
#include <FancyZonesLib/FancyZonesData.h>
|
||||
#include <FancyZonesLib/FancyZonesData/AppZoneHistory.h>
|
||||
#include <FancyZonesLib/FancyZonesData/LayoutDefaults.h>
|
||||
#include <FancyZonesLib/FancyZonesDataTypes.h>
|
||||
#include <FancyZonesLib/JsonHelpers.h>
|
||||
#include <FancyZonesLib/util.h>
|
||||
@@ -996,20 +996,20 @@ namespace FancyZonesUnitTests
|
||||
const std::wstring_view m_moduleName = L"FancyZonesUnitTests";
|
||||
const std::wstring m_defaultDeviceIdStr = L"AOC2460#4&fe3a015&0&UID65793_1920_1200_{39B25DD2-130D-4B5D-8851-4791D66B1539}";
|
||||
const std::wstring m_defaultCustomDeviceStr = L"{\"device-id\": \"AOC2460#4&fe3a015&0&UID65793_1920_1200_{39B25DD2-130D-4B5D-8851-4791D66B1539}\", \"active-zoneset\": {\"type\": \"custom\", \"uuid\": \"{33A2B101-06E0-437B-A61E-CDBECF502906}\"}, \"editor-show-spacing\": true, \"editor-spacing\": 16, \"editor-zone-count\": 3}";
|
||||
const std::wstring m_defaultCustomLayoutStr = L"{\"device-id\": \"AOC2460#4&fe3a015&0&UID65793_1920_1200_{39B25DD2-130D-4B5D-8851-4791D66B1539}\", \"applied-layout\": {\"type\": \"custom\", \"uuid\": \"{33A2B101-06E0-437B-A61E-CDBECF502906}\", \"show-spacing\": true, \"spacing\": 16, \"zone-count\": 3, \"sensitivity-radius\": 30}}";
|
||||
const json::JsonValue m_defaultCustomDeviceValue = json::JsonValue::Parse(m_defaultCustomDeviceStr);
|
||||
const json::JsonObject m_defaultCustomDeviceObj = json::JsonObject::Parse(m_defaultCustomDeviceStr);
|
||||
const json::JsonObject m_defaultCustomLayoutObj = json::JsonObject::Parse(m_defaultCustomLayoutStr);
|
||||
|
||||
const FancyZonesDataTypes::DeviceIdData m_defaultDeviceId = FancyZonesDataTypes::DeviceIdData::ParseDeviceId(m_defaultDeviceIdStr).value();
|
||||
|
||||
GUID m_defaultVDId;
|
||||
|
||||
HINSTANCE m_hInst{};
|
||||
FancyZonesData& m_fzData = FancyZonesDataInstance();
|
||||
|
||||
TEST_METHOD_INITIALIZE(Init)
|
||||
{
|
||||
m_hInst = (HINSTANCE)GetModuleHandleW(nullptr);
|
||||
m_fzData.clear_data();
|
||||
std::filesystem::remove_all(PTSettingsHelper::get_module_save_folder_location(m_moduleName));
|
||||
|
||||
auto guid = Helpers::StringToGuid(L"{39B25DD2-130D-4B5D-8851-4791D66B1539}");
|
||||
@@ -1020,46 +1020,15 @@ namespace FancyZonesUnitTests
|
||||
TEST_METHOD_CLEANUP(CleanUp)
|
||||
{
|
||||
std::filesystem::remove_all(PTSettingsHelper::get_module_save_folder_location(m_moduleName));
|
||||
std::filesystem::remove_all(AppZoneHistory::AppZoneHistoryFileName());
|
||||
}
|
||||
|
||||
public:
|
||||
TEST_METHOD (FancyZonesDataPath)
|
||||
{
|
||||
FancyZonesData data;
|
||||
data.SetSettingsModulePath(m_moduleName);
|
||||
Assert::IsFalse(data.zonesSettingsFileName.empty());
|
||||
}
|
||||
|
||||
TEST_METHOD (FancyZonesDataJsonEmpty)
|
||||
{
|
||||
FancyZonesData data;
|
||||
data.SetSettingsModulePath(m_moduleName);
|
||||
|
||||
json::JsonObject expected;
|
||||
auto actual = data.GetPersistFancyZonesJSON();
|
||||
|
||||
Assert::AreEqual(expected.Stringify().c_str(), actual.Stringify().c_str());
|
||||
}
|
||||
|
||||
TEST_METHOD (FancyZonesDataJson)
|
||||
{
|
||||
FancyZonesData data;
|
||||
data.SetSettingsModulePath(m_moduleName);
|
||||
const auto& jsonPath = data.zonesSettingsFileName;
|
||||
|
||||
json::JsonObject expected = json::JsonObject::Parse(L"{\"fancy-zones\":{\"custom-zonesets \":[{\"uuid\":\"uuid1\",\"name\":\"Custom1\",\"type\":\"custom\" }] }, \"app-zone-history\":[] }");
|
||||
json::to_file(jsonPath, expected);
|
||||
|
||||
auto actual = data.GetPersistFancyZonesJSON();
|
||||
Assert::AreEqual(expected.Stringify().c_str(), actual.Stringify().c_str());
|
||||
}
|
||||
|
||||
TEST_METHOD (FancyZonesDataDeviceInfoMapParseEmpty)
|
||||
{
|
||||
json::JsonObject deviceInfoJson;
|
||||
const auto& deviceInfoMap = ParseDeviceInfos(deviceInfoJson);
|
||||
|
||||
Assert::IsTrue(deviceInfoMap.empty());
|
||||
Assert::IsFalse(deviceInfoMap.has_value());
|
||||
}
|
||||
|
||||
TEST_METHOD (FancyZonesDataDeviceInfoMapParseValidEmpty)
|
||||
@@ -1070,7 +1039,8 @@ namespace FancyZonesUnitTests
|
||||
|
||||
const auto& deviceInfoMap = ParseDeviceInfos(deviceInfoJson);
|
||||
|
||||
Assert::IsTrue(deviceInfoMap.empty());
|
||||
Assert::IsTrue(deviceInfoMap.has_value());
|
||||
Assert::IsTrue(deviceInfoMap->empty());
|
||||
}
|
||||
|
||||
TEST_METHOD (FancyZonesDataDeviceInfoMapParseValidAndInvalid)
|
||||
@@ -1084,7 +1054,7 @@ namespace FancyZonesUnitTests
|
||||
|
||||
const auto& deviceInfoMap = ParseDeviceInfos(deviceInfoJson);
|
||||
|
||||
Assert::AreEqual((size_t)1, deviceInfoMap.size());
|
||||
Assert::AreEqual((size_t)1, deviceInfoMap->size());
|
||||
}
|
||||
|
||||
TEST_METHOD (FancyZonesDataDeviceInfoMapParseInvalid)
|
||||
@@ -1097,7 +1067,7 @@ namespace FancyZonesUnitTests
|
||||
|
||||
const auto& deviceInfoMap = ParseDeviceInfos(deviceInfoJson);
|
||||
|
||||
Assert::IsTrue(deviceInfoMap.empty());
|
||||
Assert::IsTrue(deviceInfoMap->empty());
|
||||
}
|
||||
|
||||
TEST_METHOD (FancyZonesDataDeviceInfoMapParseSingle)
|
||||
@@ -1109,7 +1079,7 @@ namespace FancyZonesUnitTests
|
||||
|
||||
const auto& deviceInfoMap = ParseDeviceInfos(deviceInfoJson);
|
||||
|
||||
Assert::AreEqual((size_t)1, deviceInfoMap.size());
|
||||
Assert::AreEqual((size_t)1, deviceInfoMap->size());
|
||||
}
|
||||
|
||||
TEST_METHOD (FancyZonesDataDeviceInfoMapParseMany)
|
||||
@@ -1129,21 +1099,7 @@ namespace FancyZonesUnitTests
|
||||
|
||||
const auto& deviceInfoMap = ParseDeviceInfos(expected);
|
||||
|
||||
Assert::AreEqual((size_t)10, deviceInfoMap.size());
|
||||
}
|
||||
|
||||
TEST_METHOD (FancyZonesDataSerialize)
|
||||
{
|
||||
json::JsonArray expectedDevices;
|
||||
expectedDevices.Append(m_defaultCustomDeviceObj);
|
||||
json::JsonObject expected;
|
||||
expected.SetNamedValue(L"devices", expectedDevices);
|
||||
|
||||
const auto& deviceInfoMap = ParseDeviceInfos(expected);
|
||||
|
||||
auto actual = SerializeDeviceInfos(deviceInfoMap);
|
||||
auto res = CustomAssert::CompareJsonArrays(expectedDevices, actual);
|
||||
Assert::IsTrue(res.first, res.second.c_str());
|
||||
Assert::AreEqual((size_t)10, deviceInfoMap->size());
|
||||
}
|
||||
|
||||
TEST_METHOD (AppZoneHistoryParseSingle)
|
||||
@@ -1372,449 +1328,6 @@ namespace FancyZonesUnitTests
|
||||
auto res = CustomAssert::CompareJsonArrays(expected, actual);
|
||||
Assert::IsTrue(res.first, res.second.c_str());
|
||||
}
|
||||
|
||||
TEST_METHOD (SetActiveZoneSet)
|
||||
{
|
||||
FancyZonesData data;
|
||||
data.SetSettingsModulePath(m_moduleName);
|
||||
const auto uniqueId = m_defaultDeviceId;
|
||||
|
||||
json::JsonArray devices;
|
||||
devices.Append(m_defaultCustomDeviceValue);
|
||||
json::JsonObject json;
|
||||
json.SetNamedValue(L"devices", devices);
|
||||
data.ParseDeviceInfos(json);
|
||||
|
||||
FancyZonesDataTypes::ZoneSetData expectedZoneSetData{
|
||||
.uuid = L"{33A2B101-06E0-437B-A61E-CDBECF502906}",
|
||||
.type = ZoneSetLayoutType::Focus
|
||||
};
|
||||
|
||||
data.SetActiveZoneSet(uniqueId, expectedZoneSetData);
|
||||
|
||||
auto actual = data.GetDeviceInfoMap().find(uniqueId)->second;
|
||||
Assert::AreEqual(expectedZoneSetData.uuid.c_str(), actual.activeZoneSet.uuid.c_str());
|
||||
Assert::IsTrue(expectedZoneSetData.type == actual.activeZoneSet.type);
|
||||
}
|
||||
|
||||
TEST_METHOD (SetActiveZoneSetUuidEmpty)
|
||||
{
|
||||
FancyZonesData data;
|
||||
data.SetSettingsModulePath(m_moduleName);
|
||||
const std::wstring expected = L"{39B25DD2-130D-4B5D-8851-4791D66B1539}";
|
||||
const auto uniqueId = m_defaultDeviceId;
|
||||
|
||||
json::JsonArray devices;
|
||||
devices.Append(m_defaultCustomDeviceValue);
|
||||
json::JsonObject json;
|
||||
json.SetNamedValue(L"devices", devices);
|
||||
data.ParseDeviceInfos(json);
|
||||
|
||||
FancyZonesDataTypes::ZoneSetData expectedZoneSetData{
|
||||
.uuid = L"",
|
||||
.type = ZoneSetLayoutType::Focus
|
||||
};
|
||||
|
||||
data.SetActiveZoneSet(uniqueId, expectedZoneSetData);
|
||||
|
||||
auto actual = data.GetDeviceInfoMap().find(uniqueId)->second;
|
||||
Assert::AreEqual(expectedZoneSetData.uuid.c_str(), actual.activeZoneSet.uuid.c_str());
|
||||
Assert::IsTrue(expectedZoneSetData.type == actual.activeZoneSet.type);
|
||||
}
|
||||
|
||||
TEST_METHOD (SetActiveZoneSetUniqueIdInvalid)
|
||||
{
|
||||
FancyZonesData data;
|
||||
data.SetSettingsModulePath(m_moduleName);
|
||||
|
||||
const std::wstring expected = L"{33A2B101-06E0-437B-A61E-CDBECF502906}";
|
||||
auto uniqueId = m_defaultDeviceId;
|
||||
uniqueId.deviceName = L"id-not-contained-by-device-info-map";
|
||||
|
||||
json::JsonArray devices;
|
||||
devices.Append(m_defaultCustomDeviceValue);
|
||||
json::JsonObject json;
|
||||
json.SetNamedValue(L"devices", devices);
|
||||
bool parseRes = data.ParseDeviceInfos(json);
|
||||
Assert::IsTrue(parseRes);
|
||||
|
||||
FancyZonesDataTypes::ZoneSetData zoneSetData{
|
||||
.uuid = L"new_uuid",
|
||||
.type = ZoneSetLayoutType::Focus
|
||||
};
|
||||
|
||||
data.SetActiveZoneSet(uniqueId, zoneSetData);
|
||||
|
||||
const auto& deviceInfoMap = data.GetDeviceInfoMap();
|
||||
auto actual = deviceInfoMap.find(m_defaultDeviceId)->second;
|
||||
Assert::AreEqual(expected.c_str(), actual.activeZoneSet.uuid.c_str());
|
||||
Assert::IsTrue(deviceInfoMap.end() == deviceInfoMap.find(uniqueId), L"new device info should not be added");
|
||||
}
|
||||
|
||||
TEST_METHOD (LoadFancyZonesDataFromJson)
|
||||
{
|
||||
FancyZonesData fancyZonesData;
|
||||
fancyZonesData.SetSettingsModulePath(m_moduleName);
|
||||
const auto& jsonPath = fancyZonesData.zonesSettingsFileName;
|
||||
auto savedJson = json::from_file(jsonPath);
|
||||
|
||||
if (std::filesystem::exists(jsonPath))
|
||||
{
|
||||
std::filesystem::remove(jsonPath);
|
||||
}
|
||||
|
||||
const GridLayoutInfo grid(GridLayoutInfo(FancyZonesDataTypes::GridLayoutInfo::Full{
|
||||
.rows = 1,
|
||||
.columns = 3,
|
||||
.rowsPercents = { 10000 },
|
||||
.columnsPercents = { 2500, 5000, 2500 },
|
||||
.cellChildMap = { { 0, 1, 2 } } }));
|
||||
CustomZoneSetJSON zoneSets{ L"{33A2B101-06E0-437B-A61E-CDBECF502906}", CustomLayoutData{ L"name", CustomLayoutType::Grid, grid } };
|
||||
AppZoneHistoryData data{
|
||||
.zoneSetUuid = L"{33A2B101-06E0-437B-A61E-CDBECF502906}", .deviceId = L"device-id", .zoneIndexSet = { 54321 }
|
||||
};
|
||||
AppZoneHistoryJSON appZoneHistory{ L"app-path", std::vector<AppZoneHistoryData>{ data } };
|
||||
|
||||
DeviceInfoJSON deviceInfo { FancyZonesDataTypes::DeviceIdData{ L"device-id", 0, 0, m_defaultVDId }, DeviceInfoData{ ZoneSetData{ L"{33A2B101-16E1-437B-A61E-CDBECF502906}", ZoneSetLayoutType::Custom }, true, 16, 3 } };
|
||||
LayoutQuickKeyJSON quickKeys{ L"{33A2B101-06E0-437B-A61E-CDBECF502906}", 1 };
|
||||
json::JsonArray zoneSetsArray, appZonesArray, deviceInfoArray, quickKeysArray;
|
||||
zoneSetsArray.Append(CustomZoneSetJSON::ToJson(zoneSets));
|
||||
appZonesArray.Append(AppZoneHistoryJSON::ToJson(appZoneHistory));
|
||||
deviceInfoArray.Append(DeviceInfoJSON::ToJson(deviceInfo));
|
||||
quickKeysArray.Append(LayoutQuickKeyJSON::ToJson(quickKeys));
|
||||
json::JsonObject fancyZones;
|
||||
fancyZones.SetNamedValue(L"custom-zone-sets", zoneSetsArray);
|
||||
fancyZones.SetNamedValue(L"app-zone-history", appZonesArray);
|
||||
fancyZones.SetNamedValue(L"devices", deviceInfoArray);
|
||||
fancyZones.SetNamedValue(L"quick-layout-keys", quickKeysArray);
|
||||
|
||||
json::to_file(jsonPath, fancyZones);
|
||||
|
||||
fancyZonesData.LoadFancyZonesData();
|
||||
if (savedJson)
|
||||
{
|
||||
json::to_file(jsonPath, *savedJson);
|
||||
}
|
||||
else
|
||||
{
|
||||
std::filesystem::remove(jsonPath);
|
||||
}
|
||||
|
||||
Assert::IsFalse(fancyZonesData.GetDeviceInfoMap().empty());
|
||||
}
|
||||
|
||||
TEST_METHOD (LoadFancyZonesDataFromCroppedJson)
|
||||
{
|
||||
FancyZonesData data;
|
||||
data.SetSettingsModulePath(m_moduleName);
|
||||
const auto& jsonPath = data.zonesSettingsFileName;
|
||||
|
||||
std::wofstream{ jsonPath.data(), std::ios::binary } << L"{ \"devices\": [{\"device-id\": \"";
|
||||
|
||||
data.LoadFancyZonesData();
|
||||
|
||||
Assert::IsTrue(data.GetDeviceInfoMap().empty());
|
||||
}
|
||||
|
||||
TEST_METHOD (LoadFancyZonesDataFromJsonWithCyrillicSymbols)
|
||||
{
|
||||
FancyZonesData data;
|
||||
data.SetSettingsModulePath(m_moduleName);
|
||||
const auto& jsonPath = data.zonesSettingsFileName;
|
||||
|
||||
std::wofstream{ jsonPath.data(), std::ios::binary } << L"{ \"devices\": [{\"device-id\": \"кириллица\"}], \"custom-zone-sets\": []}";
|
||||
data.LoadFancyZonesData();
|
||||
|
||||
Assert::IsTrue(data.GetDeviceInfoMap().empty());
|
||||
}
|
||||
|
||||
TEST_METHOD (LoadFancyZonesDataFromJsonWithInvalidTypes)
|
||||
{
|
||||
FancyZonesData data;
|
||||
data.SetSettingsModulePath(m_moduleName);
|
||||
const auto& jsonPath = data.zonesSettingsFileName;
|
||||
|
||||
std::wofstream{ jsonPath.data(), std::ios::binary } << L"{ \"devices\": [{\"device-id\":\"AOC2460#4&fe3a015&0&UID65793_1920_1200_{39B25DD2-130D-4B5D-8851-4791D66B1539}\",\"active-zoneset\":{\"uuid\":\"{568EBC3A-C09C-483E-A64D-6F1F2AF4E48D}\",\"type\":\"columns\"},\"editor-show-spacing\":true,\"editor-spacing\":16,\"editor-zone-count\":3}], \"custom-zone-sets\": null}";
|
||||
data.LoadFancyZonesData();
|
||||
|
||||
Assert::IsFalse(data.GetDeviceInfoMap().empty());
|
||||
}
|
||||
|
||||
TEST_METHOD (LoadFancyZonesDataFromRegistry)
|
||||
{
|
||||
FancyZonesData data;
|
||||
data.SetSettingsModulePath(m_moduleName);
|
||||
const auto& jsonPath = data.zonesSettingsFileName;
|
||||
|
||||
data.LoadFancyZonesData();
|
||||
bool actual = std::filesystem::exists(jsonPath);
|
||||
|
||||
Assert::IsTrue(actual);
|
||||
}
|
||||
|
||||
TEST_METHOD (SaveFancyZonesData)
|
||||
{
|
||||
FancyZonesData data;
|
||||
data.SetSettingsModulePath(m_moduleName);
|
||||
const auto& jsonPath = data.zonesSettingsFileName;
|
||||
|
||||
data.SaveZoneSettings();
|
||||
bool actual = std::filesystem::exists(jsonPath);
|
||||
|
||||
Assert::IsTrue(actual);
|
||||
}
|
||||
|
||||
TEST_METHOD (AddDevice)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData expected{
|
||||
.deviceName = L"Device",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = m_defaultVDId
|
||||
};
|
||||
|
||||
auto result = m_fzData.AddDevice(expected);
|
||||
Assert::IsTrue(result);
|
||||
|
||||
auto actualMap = m_fzData.GetDeviceInfoMap();
|
||||
|
||||
Assert::IsFalse(actualMap.find(expected) == actualMap.end());
|
||||
}
|
||||
|
||||
TEST_METHOD (AddDeviceWithNullVirtualDesktopId)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData expected{
|
||||
.deviceName = L"Device",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = GUID_NULL
|
||||
};
|
||||
|
||||
auto result = m_fzData.AddDevice(expected);
|
||||
Assert::IsTrue(result);
|
||||
|
||||
auto actualMap = m_fzData.GetDeviceInfoMap();
|
||||
|
||||
Assert::IsFalse(actualMap.find(expected) == actualMap.end());
|
||||
}
|
||||
|
||||
TEST_METHOD (AddDeviceDuplicate)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData expected{
|
||||
.deviceName = L"Device",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = m_defaultVDId
|
||||
};
|
||||
|
||||
auto result = m_fzData.AddDevice(expected);
|
||||
Assert::IsTrue(result);
|
||||
|
||||
auto result2 = m_fzData.AddDevice(expected);
|
||||
Assert::IsFalse(result2);
|
||||
|
||||
auto actualMap = m_fzData.GetDeviceInfoMap();
|
||||
|
||||
Assert::IsFalse(actualMap.find(expected) == actualMap.end());
|
||||
}
|
||||
|
||||
TEST_METHOD (AddDeviceWithNullVirtualDesktopIdDuplicated)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData expected{
|
||||
.deviceName = L"Device",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = GUID_NULL
|
||||
};
|
||||
|
||||
auto result = m_fzData.AddDevice(expected);
|
||||
Assert::IsTrue(result);
|
||||
|
||||
auto result2 = m_fzData.AddDevice(expected);
|
||||
Assert::IsFalse(result2);
|
||||
|
||||
auto actualMap = m_fzData.GetDeviceInfoMap();
|
||||
|
||||
Assert::IsFalse(actualMap.find(expected) == actualMap.end());
|
||||
}
|
||||
|
||||
TEST_METHOD (AddDeviceDuplicatedComparedWithNillVirtualDesktopId)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData device1{
|
||||
.deviceName = L"Device",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = m_defaultVDId
|
||||
};
|
||||
|
||||
FancyZonesDataTypes::DeviceIdData device2{
|
||||
.deviceName = L"Device",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = GUID_NULL
|
||||
};
|
||||
|
||||
auto result = m_fzData.AddDevice(device1);
|
||||
Assert::IsTrue(result);
|
||||
|
||||
auto result2 = m_fzData.AddDevice(device2);
|
||||
Assert::IsFalse(result2);
|
||||
|
||||
auto actualMap = m_fzData.GetDeviceInfoMap();
|
||||
|
||||
Assert::IsFalse(actualMap.find(device1) == actualMap.end());
|
||||
Assert::IsTrue(actualMap.find(device2) == actualMap.end());
|
||||
}
|
||||
|
||||
TEST_METHOD (AddDeviceDuplicatedComparedWithNillVirtualDesktopId2)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData device1{
|
||||
.deviceName = L"Device",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = m_defaultVDId
|
||||
};
|
||||
|
||||
FancyZonesDataTypes::DeviceIdData device2{
|
||||
.deviceName = L"Device",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = GUID_NULL
|
||||
};
|
||||
|
||||
auto result2 = m_fzData.AddDevice(device2);
|
||||
Assert::IsTrue(result2);
|
||||
|
||||
auto result1 = m_fzData.AddDevice(device1);
|
||||
Assert::IsFalse(result1);
|
||||
|
||||
auto actualMap = m_fzData.GetDeviceInfoMap();
|
||||
|
||||
Assert::IsFalse(actualMap.find(device2) == actualMap.end());
|
||||
Assert::IsTrue(actualMap.find(device1) == actualMap.end());
|
||||
}
|
||||
|
||||
TEST_METHOD(CloneDeviceInfo)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData deviceSrc{
|
||||
.deviceName = L"Device1",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = m_defaultVDId
|
||||
};
|
||||
FancyZonesDataTypes::DeviceIdData deviceDst{
|
||||
.deviceName = L"Device2",
|
||||
.width = 300,
|
||||
.height = 400,
|
||||
.virtualDesktopId = m_defaultVDId
|
||||
};
|
||||
|
||||
Assert::IsTrue(m_fzData.AddDevice(deviceSrc));
|
||||
Assert::IsTrue(m_fzData.AddDevice(deviceDst));
|
||||
|
||||
m_fzData.CloneDeviceInfo(deviceSrc, deviceDst);
|
||||
|
||||
auto actualMap = m_fzData.GetDeviceInfoMap();
|
||||
Assert::IsFalse(actualMap.find(deviceSrc) == actualMap.end());
|
||||
Assert::IsFalse(actualMap.find(deviceDst) == actualMap.end());
|
||||
|
||||
auto expected = m_fzData.FindDeviceInfo(deviceSrc);
|
||||
auto actual = m_fzData.FindDeviceInfo(deviceDst);
|
||||
|
||||
Assert::IsTrue(expected.has_value());
|
||||
Assert::IsTrue(actual.has_value());
|
||||
Assert::IsTrue(expected.value() == actual.value());
|
||||
}
|
||||
|
||||
TEST_METHOD (CloneDeviceInfoIntoUnknownDevice)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData deviceSrc{
|
||||
.deviceName = L"Device1",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = m_defaultVDId
|
||||
};
|
||||
FancyZonesDataTypes::DeviceIdData deviceDst{
|
||||
.deviceName = L"Device2",
|
||||
.width = 300,
|
||||
.height = 400,
|
||||
.virtualDesktopId = m_defaultVDId
|
||||
};
|
||||
|
||||
Assert::IsTrue(m_fzData.AddDevice(deviceSrc));
|
||||
|
||||
m_fzData.CloneDeviceInfo(deviceSrc, deviceDst);
|
||||
|
||||
auto actualMap = m_fzData.GetDeviceInfoMap();
|
||||
Assert::IsFalse(actualMap.find(deviceSrc) == actualMap.end());
|
||||
Assert::IsFalse(actualMap.find(deviceDst) == actualMap.end());
|
||||
|
||||
auto expected = m_fzData.FindDeviceInfo(deviceSrc);
|
||||
auto actual = m_fzData.FindDeviceInfo(deviceDst);
|
||||
|
||||
Assert::IsTrue(expected.has_value());
|
||||
Assert::IsTrue(actual.has_value());
|
||||
Assert::IsTrue(expected.value() == actual.value());
|
||||
}
|
||||
|
||||
TEST_METHOD (CloneDeviceInfoFromUnknownDevice)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData deviceSrc{
|
||||
.deviceName = L"Device1",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = m_defaultVDId
|
||||
};
|
||||
FancyZonesDataTypes::DeviceIdData deviceDst{
|
||||
.deviceName = L"Device2",
|
||||
.width = 300,
|
||||
.height = 400,
|
||||
.virtualDesktopId = m_defaultVDId
|
||||
};
|
||||
|
||||
Assert::IsTrue(m_fzData.AddDevice(deviceDst));
|
||||
|
||||
m_fzData.CloneDeviceInfo(deviceSrc, deviceDst);
|
||||
|
||||
auto actualMap = m_fzData.GetDeviceInfoMap();
|
||||
Assert::IsTrue(actualMap.find(deviceSrc) == actualMap.end());
|
||||
Assert::IsFalse(actualMap.find(deviceDst) == actualMap.end());
|
||||
|
||||
Assert::IsFalse(m_fzData.FindDeviceInfo(deviceSrc).has_value());
|
||||
Assert::IsTrue(m_fzData.FindDeviceInfo(deviceDst).has_value());
|
||||
}
|
||||
|
||||
TEST_METHOD(CloneDeviceInfoNullVirtualDesktopId)
|
||||
{
|
||||
FancyZonesDataTypes::DeviceIdData deviceSrc{
|
||||
.deviceName = L"Device1",
|
||||
.width = 200,
|
||||
.height = 100,
|
||||
.virtualDesktopId = GUID_NULL
|
||||
};
|
||||
FancyZonesDataTypes::DeviceIdData deviceDst{
|
||||
.deviceName = L"Device2",
|
||||
.width = 300,
|
||||
.height = 400,
|
||||
.virtualDesktopId = m_defaultVDId
|
||||
};
|
||||
|
||||
Assert::IsTrue(m_fzData.AddDevice(deviceSrc));
|
||||
Assert::IsTrue(m_fzData.AddDevice(deviceDst));
|
||||
|
||||
m_fzData.CloneDeviceInfo(deviceSrc, deviceDst);
|
||||
|
||||
auto actualMap = m_fzData.GetDeviceInfoMap();
|
||||
Assert::IsFalse(actualMap.find(deviceSrc) == actualMap.end());
|
||||
Assert::IsFalse(actualMap.find(deviceDst) == actualMap.end());
|
||||
|
||||
auto expected = m_fzData.FindDeviceInfo(deviceSrc);
|
||||
auto actual = m_fzData.FindDeviceInfo(deviceDst);
|
||||
|
||||
Assert::IsTrue(expected.has_value());
|
||||
Assert::IsTrue(actual.has_value());
|
||||
Assert::IsTrue(expected.value() == actual.value());
|
||||
}
|
||||
};
|
||||
|
||||
TEST_CLASS(EditorArgsUnitTests)
|
||||
|
||||
@@ -16,8 +16,7 @@ namespace FancyZonesUnitTests
|
||||
|
||||
TEST_METHOD_INITIALIZE(Init)
|
||||
{
|
||||
m_fzData.clear_data();
|
||||
m_fzData.SetSettingsModulePath(L"FancyZonesUnitTests");
|
||||
m_fzData.SetSettingsModulePath(m_testFolder);
|
||||
}
|
||||
|
||||
TEST_METHOD_CLEANUP(CleanUp)
|
||||
|
||||
@@ -17,8 +17,7 @@ namespace FancyZonesUnitTests
|
||||
|
||||
TEST_METHOD_INITIALIZE(Init)
|
||||
{
|
||||
m_fzData.clear_data();
|
||||
m_fzData.SetSettingsModulePath(L"FancyZonesUnitTests");
|
||||
m_fzData.SetSettingsModulePath(m_testFolder);
|
||||
}
|
||||
|
||||
TEST_METHOD_CLEANUP(CleanUp)
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="AppliedLayoutsTests.Spec.cpp" />
|
||||
<ClCompile Include="AppZoneHistoryTests.Spec.cpp" />
|
||||
<ClCompile Include="CustomLayoutsTests.Spec.cpp" />
|
||||
<ClCompile Include="FancyZones.Spec.cpp" />
|
||||
|
||||
@@ -54,6 +54,9 @@
|
||||
<ClCompile Include="AppZoneHistoryTests.Spec.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="AppliedLayoutsTests.Spec.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="pch.h">
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include <FancyZonesLib/ZoneSet.h>
|
||||
#include <FancyZonesLib/WorkArea.h>
|
||||
#include <FancyZonesLib/FancyZones.h>
|
||||
#include <FancyZonesLib/FancyZonesData.h>
|
||||
#include <FancyZonesLib/FancyZonesData/AppliedLayouts.h>
|
||||
#include <FancyZonesLib/FancyZonesData/AppZoneHistory.h>
|
||||
#include <FancyZonesLib/FancyZonesDataTypes.h>
|
||||
#include <FancyZonesLib/JsonHelpers.h>
|
||||
@@ -35,8 +35,6 @@ namespace FancyZonesUnitTests
|
||||
OverlappingZonesAlgorithm m_overlappingAlgorithm = OverlappingZonesAlgorithm::Positional;
|
||||
bool m_showZoneText = true;
|
||||
|
||||
FancyZonesData& m_fancyZonesData = FancyZonesDataInstance();
|
||||
|
||||
void testWorkArea(winrt::com_ptr<IWorkArea> workArea)
|
||||
{
|
||||
const std::wstring expectedWorkArea = std::to_wstring(m_monitorInfo.rcMonitor.right) + L"_" + std::to_wstring(m_monitorInfo.rcMonitor.bottom);
|
||||
@@ -46,37 +44,43 @@ namespace FancyZonesUnitTests
|
||||
}
|
||||
|
||||
TEST_METHOD_INITIALIZE(Init)
|
||||
{
|
||||
m_hInst = (HINSTANCE)GetModuleHandleW(nullptr);
|
||||
{
|
||||
m_hInst = (HINSTANCE)GetModuleHandleW(nullptr);
|
||||
|
||||
m_monitor = MonitorFromPoint(POINT{ 0, 0 }, MONITOR_DEFAULTTOPRIMARY);
|
||||
m_monitorInfo.cbSize = sizeof(m_monitorInfo);
|
||||
Assert::AreNotEqual(0, GetMonitorInfoW(m_monitor, &m_monitorInfo));
|
||||
m_monitor = MonitorFromPoint(POINT{ 0, 0 }, MONITOR_DEFAULTTOPRIMARY);
|
||||
m_monitorInfo.cbSize = sizeof(m_monitorInfo);
|
||||
Assert::AreNotEqual(0, GetMonitorInfoW(m_monitor, &m_monitorInfo));
|
||||
|
||||
m_parentUniqueId.deviceName = L"DELA026#5&10a58c63&0&UID16777488";
|
||||
m_parentUniqueId.width = m_monitorInfo.rcMonitor.right - m_monitorInfo.rcMonitor.left;
|
||||
m_parentUniqueId.height = m_monitorInfo.rcMonitor.bottom - m_monitorInfo.rcMonitor.top;
|
||||
CLSIDFromString(L"{61FA9FC0-26A6-4B37-A834-491C148DFC57}", &m_parentUniqueId.virtualDesktopId);
|
||||
m_parentUniqueId.deviceName = L"DELA026#5&10a58c63&0&UID16777488";
|
||||
m_parentUniqueId.width = m_monitorInfo.rcMonitor.right - m_monitorInfo.rcMonitor.left;
|
||||
m_parentUniqueId.height = m_monitorInfo.rcMonitor.bottom - m_monitorInfo.rcMonitor.top;
|
||||
CLSIDFromString(L"{61FA9FC0-26A6-4B37-A834-491C148DFC57}", &m_parentUniqueId.virtualDesktopId);
|
||||
|
||||
m_uniqueId.deviceName = L"DELA026#5&10a58c63&0&UID16777488";
|
||||
m_uniqueId.width = m_monitorInfo.rcMonitor.right - m_monitorInfo.rcMonitor.left;
|
||||
m_uniqueId.height = m_monitorInfo.rcMonitor.bottom - m_monitorInfo.rcMonitor.top;
|
||||
CLSIDFromString(L"{39B25DD2-130D-4B5D-8851-4791D66B1539}", &m_uniqueId.virtualDesktopId);
|
||||
|
||||
m_fancyZonesData.SetSettingsModulePath(L"FancyZonesUnitTests");
|
||||
m_fancyZonesData.clear_data();
|
||||
m_uniqueId.deviceName = L"DELA026#5&10a58c63&0&UID16777488";
|
||||
m_uniqueId.width = m_monitorInfo.rcMonitor.right - m_monitorInfo.rcMonitor.left;
|
||||
m_uniqueId.height = m_monitorInfo.rcMonitor.bottom - m_monitorInfo.rcMonitor.top;
|
||||
CLSIDFromString(L"{39B25DD2-130D-4B5D-8851-4791D66B1539}", &m_uniqueId.virtualDesktopId);
|
||||
|
||||
auto guid = Helpers::StringToGuid(L"{39B25DD2-130D-4B5D-8851-4791D66B1539}");
|
||||
Assert::IsTrue(guid.has_value());
|
||||
m_virtualDesktopGuid = *guid;
|
||||
|
||||
auto guid = Helpers::StringToGuid(L"{39B25DD2-130D-4B5D-8851-4791D66B1539}");
|
||||
Assert::IsTrue(guid.has_value());
|
||||
m_virtualDesktopGuid = *guid;
|
||||
m_zoneColors = ZoneColors{
|
||||
.primaryColor = FancyZonesUtils::HexToRGB(L"#4287f5"),
|
||||
.borderColor = FancyZonesUtils::HexToRGB(L"#FFFFFF"),
|
||||
.highlightColor = FancyZonesUtils::HexToRGB(L"#42eff5"),
|
||||
.highlightOpacity = 50,
|
||||
};
|
||||
|
||||
m_zoneColors = ZoneColors{
|
||||
.primaryColor = FancyZonesUtils::HexToRGB(L"#4287f5"),
|
||||
.borderColor = FancyZonesUtils::HexToRGB(L"#FFFFFF"),
|
||||
.highlightColor = FancyZonesUtils::HexToRGB(L"#42eff5"),
|
||||
.highlightOpacity = 50,
|
||||
};
|
||||
}
|
||||
AppZoneHistory::instance().LoadData();
|
||||
AppliedLayouts::instance().LoadData();
|
||||
}
|
||||
|
||||
TEST_METHOD_CLEANUP(CleanUp)
|
||||
{
|
||||
std::filesystem::remove(AppliedLayouts::AppliedLayoutsFileName());
|
||||
std::filesystem::remove(AppZoneHistory::AppZoneHistoryFileName());
|
||||
}
|
||||
|
||||
TEST_METHOD (CreateWorkArea)
|
||||
{
|
||||
@@ -176,29 +180,26 @@ namespace FancyZonesUnitTests
|
||||
{
|
||||
using namespace FancyZonesDataTypes;
|
||||
|
||||
const ZoneSetLayoutType type = ZoneSetLayoutType::PriorityGrid;
|
||||
const int spacing = 10;
|
||||
const int zoneCount = 5;
|
||||
const auto customSetGuid = Helpers::CreateGuidString();
|
||||
const auto parentZoneSet = ZoneSetData{ customSetGuid, type };
|
||||
const auto parentDeviceInfo = DeviceInfoData{ parentZoneSet, true, spacing, zoneCount };
|
||||
m_fancyZonesData.SetDeviceInfo(m_parentUniqueId, parentDeviceInfo);
|
||||
const ZoneSetLayoutType type = ZoneSetLayoutType::PriorityGrid;
|
||||
const int spacing = 10;
|
||||
const int zoneCount = 5;
|
||||
const auto customSetGuid = Helpers::CreateGuidString();
|
||||
|
||||
auto parentWorkArea = MakeWorkArea(m_hInst, m_monitor, m_parentUniqueId, {}, m_zoneColors, m_overlappingAlgorithm, m_showZoneText);
|
||||
auto parentWorkArea = MakeWorkArea(m_hInst, m_monitor, m_parentUniqueId, {}, m_zoneColors, m_overlappingAlgorithm, m_showZoneText);
|
||||
|
||||
// newWorkArea = false - workArea won't be cloned from parent
|
||||
auto actualWorkArea = MakeWorkArea(m_hInst, m_monitor, m_uniqueId, {}, m_zoneColors, m_overlappingAlgorithm, m_showZoneText);
|
||||
// newWorkArea = false - workArea won't be cloned from parent
|
||||
auto actualWorkArea = MakeWorkArea(m_hInst, m_monitor, m_uniqueId, {}, m_zoneColors, m_overlappingAlgorithm, m_showZoneText);
|
||||
|
||||
Assert::IsNotNull(actualWorkArea->ZoneSet());
|
||||
Assert::IsNotNull(actualWorkArea->ZoneSet());
|
||||
|
||||
Assert::IsTrue(m_fancyZonesData.GetDeviceInfoMap().contains(m_uniqueId));
|
||||
auto currentDeviceInfo = m_fancyZonesData.GetDeviceInfoMap().at(m_uniqueId);
|
||||
// default values
|
||||
Assert::AreEqual(true, currentDeviceInfo.showSpacing);
|
||||
Assert::AreEqual(3, currentDeviceInfo.zoneCount);
|
||||
Assert::AreEqual(16, currentDeviceInfo.spacing);
|
||||
Assert::AreEqual(static_cast<int>(ZoneSetLayoutType::PriorityGrid), static_cast<int>(currentDeviceInfo.activeZoneSet.type));
|
||||
}
|
||||
Assert::IsTrue(AppliedLayouts::instance().GetAppliedLayoutMap().contains(m_uniqueId));
|
||||
auto currentDeviceInfo = AppliedLayouts::instance().GetAppliedLayoutMap().at(m_uniqueId);
|
||||
// default values
|
||||
Assert::AreEqual(true, currentDeviceInfo.showSpacing);
|
||||
Assert::AreEqual(3, currentDeviceInfo.zoneCount);
|
||||
Assert::AreEqual(16, currentDeviceInfo.spacing);
|
||||
Assert::AreEqual(static_cast<int>(ZoneSetLayoutType::PriorityGrid), static_cast<int>(currentDeviceInfo.type));
|
||||
}
|
||||
};
|
||||
|
||||
TEST_CLASS (WorkAreaUnitTests)
|
||||
@@ -233,11 +234,13 @@ namespace FancyZonesUnitTests
|
||||
};
|
||||
|
||||
AppZoneHistory::instance().LoadData();
|
||||
AppliedLayouts::instance().LoadData();
|
||||
}
|
||||
|
||||
TEST_METHOD_CLEANUP(CleanUp)
|
||||
{
|
||||
std::filesystem::remove(AppZoneHistory::AppZoneHistoryFileName());
|
||||
std::filesystem::remove(AppliedLayouts::AppliedLayoutsFileName());
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "pch.h"
|
||||
#include "FancyZonesLib\FancyZonesData.h"
|
||||
#include <FancyZonesLib/FancyZonesData/LayoutDefaults.h>
|
||||
#include "FancyZonesLib\FancyZonesDataTypes.h"
|
||||
#include "FancyZonesLib\JsonHelpers.h"
|
||||
#include "FancyZonesLib\VirtualDesktop.h"
|
||||
|
||||
Reference in New Issue
Block a user