diff --git a/src/modules/fancyzones/lib/FancyZonesData.h b/src/modules/fancyzones/lib/FancyZonesData.h index 318de7448f..bee86dbb32 100644 --- a/src/modules/fancyzones/lib/FancyZonesData.h +++ b/src/modules/fancyzones/lib/FancyZonesData.h @@ -27,6 +27,7 @@ namespace FancyZonesUnitTests class FancyZonesIFancyZonesCallbackUnitTests; class ZoneSetCalculateZonesUnitTests; class ZoneWindowUnitTests; + class ZoneWindowCreationUnitTests; } #endif @@ -83,6 +84,7 @@ private: friend class FancyZonesUnitTests::FancyZonesDataUnitTests; friend class FancyZonesUnitTests::FancyZonesIFancyZonesCallbackUnitTests; friend class FancyZonesUnitTests::ZoneWindowUnitTests; + friend class FancyZonesUnitTests::ZoneWindowCreationUnitTests; friend class FancyZonesUnitTests::ZoneSetCalculateZonesUnitTests; inline void SetDeviceInfo(const std::wstring& deviceId, FancyZonesDataTypes::DeviceInfoData data) diff --git a/src/modules/fancyzones/tests/UnitTests/FancyZonesSettings.Spec.cpp b/src/modules/fancyzones/tests/UnitTests/FancyZonesSettings.Spec.cpp index c748e0e092..d497af6503 100644 --- a/src/modules/fancyzones/tests/UnitTests/FancyZonesSettings.Spec.cpp +++ b/src/modules/fancyzones/tests/UnitTests/FancyZonesSettings.Spec.cpp @@ -568,7 +568,6 @@ namespace FancyZonesUnitTests TEST_CLASS (FancyZonesSettingsUnitTests) { winrt::com_ptr m_settings = nullptr; - PowerToysSettings::Settings* m_ptSettings = nullptr; PCWSTR m_moduleName = L"FancyZonesUnitTests"; std::wstring serializedPowerToySettings(const Settings& settings) @@ -609,152 +608,93 @@ namespace FancyZonesUnitTests } TEST_METHOD_INITIALIZE(Init) - { - HINSTANCE hInst = (HINSTANCE)GetModuleHandleW(nullptr); + { + HINSTANCE hInst = (HINSTANCE)GetModuleHandleW(nullptr); - //init m_settings - const Settings expected; + m_settings = MakeFancyZonesSettings(hInst, m_moduleName); + Assert::IsTrue(m_settings != nullptr); + } - PowerToysSettings::PowerToyValues values(m_moduleName); - values.add_property(L"fancyzones_shiftDrag", expected.shiftDrag); - values.add_property(L"fancyzones_mouseSwitch", expected.mouseSwitch); - values.add_property(L"fancyzones_displayChange_moveWindows", expected.displayChange_moveWindows); - //values.add_property(L"fancyzones_zoneSetChange_flashZones", expected.zoneSetChange_flashZones); - values.add_property(L"fancyzones_zoneSetChange_moveWindows", expected.zoneSetChange_moveWindows); - values.add_property(L"fancyzones_overrideSnapHotkeys", expected.overrideSnapHotkeys); - values.add_property(L"fancyzones_moveWindowAcrossMonitors", expected.moveWindowAcrossMonitors); - values.add_property(L"fancyzones_appLastZone_moveWindows", expected.appLastZone_moveWindows); - values.add_property(L"fancyzones_openWindowOnActiveMonitor", expected.openWindowOnActiveMonitor); - values.add_property(L"fancyzones_restoreSize", expected.restoreSize); - values.add_property(L"use_cursorpos_editor_startupscreen", expected.use_cursorpos_editor_startupscreen); - values.add_property(L"fancyzones_show_on_all_monitors", expected.showZonesOnAllMonitors); - values.add_property(L"fancyzones_multi_monitor_mode", expected.spanZonesAcrossMonitors); - values.add_property(L"fancyzones_zoneHighlightColor", expected.zoneHighlightColor); - values.add_property(L"fancyzones_zoneColor", expected.zoneColor); - values.add_property(L"fancyzones_zoneBorderColor", expected.zoneBorderColor); - values.add_property(L"fancyzones_highlight_opacity", expected.zoneHighlightOpacity); - values.add_property(L"fancyzones_editor_hotkey", expected.editorHotkey.get_json()); - values.add_property(L"fancyzones_excluded_apps", expected.excludedApps); + TEST_METHOD_CLEANUP(Cleanup) + { + std::filesystem::remove_all(PTSettingsHelper::get_module_save_folder_location(m_moduleName)); + } - values.save_to_settings_file(); + TEST_METHOD (GetConfig) + { + int expectedSize = 0; + m_settings->GetConfig(nullptr, &expectedSize); + Assert::AreNotEqual(0, expectedSize); + + int actualBufferSize = expectedSize; + PWSTR actualBuffer = new wchar_t[actualBufferSize]; - m_settings = MakeFancyZonesSettings(hInst, m_moduleName); - Assert::IsTrue(m_settings != nullptr); + Assert::IsTrue(m_settings->GetConfig(actualBuffer, &actualBufferSize)); + Assert::AreEqual(expectedSize, actualBufferSize); + } - //init m_ptSettings - m_ptSettings = new PowerToysSettings::Settings(hInst, m_moduleName); - m_ptSettings->set_description(IDS_SETTING_DESCRIPTION); - m_ptSettings->set_icon_key(L"pt-fancy-zones"); - m_ptSettings->set_overview_link(L"https://aka.ms/PowerToysOverview_FancyZones"); - m_ptSettings->set_video_link(L"https://youtu.be/rTtGzZYAXgY"); + TEST_METHOD (GetConfigSmallBuffer) + { + int size = 0; + m_settings->GetConfig(nullptr, &size); + Assert::AreNotEqual(0, size); - m_ptSettings->add_custom_action( - L"ToggledFZEditor", // action name. - IDS_SETTING_LAUNCH_EDITOR_LABEL, - IDS_SETTING_LAUNCH_EDITOR_BUTTON, - IDS_SETTING_LAUNCH_EDITOR_DESCRIPTION); - m_ptSettings->add_hotkey(L"fancyzones_editor_hotkey", IDS_SETTING_LAUNCH_EDITOR_HOTKEY_LABEL, expected.editorHotkey); - m_ptSettings->add_bool_toggle(L"fancyzones_shiftDrag", IDS_SETTING_DESCRIPTION_SHIFTDRAG, expected.shiftDrag); - m_ptSettings->add_bool_toggle(L"fancyzones_mouseSwitch", IDS_SETTING_DESCRIPTION_MOUSESWITCH, expected.mouseSwitch); - m_ptSettings->add_bool_toggle(L"fancyzones_overrideSnapHotkeys", IDS_SETTING_DESCRIPTION_OVERRIDE_SNAP_HOTKEYS, expected.overrideSnapHotkeys); - m_ptSettings->add_bool_toggle(L"fancyzones_moveWindowAcrossMonitors", IDS_SETTING_DESCRIPTION_MOVE_WINDOW_ACROSS_MONITORS, expected.moveWindowAcrossMonitors); - //m_ptSettings->add_bool_toggle(L"fancyzones_zoneSetChange_flashZones", IDS_SETTING_DESCRIPTION_ZONESETCHANGE_FLASHZONES, expected.zoneSetChange_flashZones); - m_ptSettings->add_bool_toggle(L"fancyzones_displayChange_moveWindows", IDS_SETTING_DESCRIPTION_DISPLAYCHANGE_MOVEWINDOWS, expected.displayChange_moveWindows); - m_ptSettings->add_bool_toggle(L"fancyzones_zoneSetChange_moveWindows", IDS_SETTING_DESCRIPTION_ZONESETCHANGE_MOVEWINDOWS, expected.zoneSetChange_moveWindows); - m_ptSettings->add_bool_toggle(L"fancyzones_appLastZone_moveWindows", IDS_SETTING_DESCRIPTION_APPLASTZONE_MOVEWINDOWS, expected.appLastZone_moveWindows); - m_ptSettings->add_bool_toggle(L"fancyzones_openWindowOnActiveMonitor", IDS_SETTING_DESCRIPTION_OPEN_WINDOW_ON_ACTIVE_MONITOR, expected.openWindowOnActiveMonitor); - m_ptSettings->add_bool_toggle(L"fancyzones_restoreSize", IDS_SETTING_DESCRIPTION_RESTORESIZE, expected.restoreSize); - m_ptSettings->add_bool_toggle(L"use_cursorpos_editor_startupscreen", IDS_SETTING_DESCRIPTION_USE_CURSORPOS_EDITOR_STARTUPSCREEN, expected.use_cursorpos_editor_startupscreen); - m_ptSettings->add_bool_toggle(L"fancyzones_show_on_all_monitors", IDS_SETTING_DESCRIPTION_SHOW_FANCY_ZONES_ON_ALL_MONITORS, expected.showZonesOnAllMonitors); - m_ptSettings->add_bool_toggle(L"fancyzones_multi_monitor_mode", IDS_SETTING_DESCRIPTION_SPAN_ZONES_ACROSS_MONITORS, expected.spanZonesAcrossMonitors); - m_ptSettings->add_bool_toggle(L"fancyzones_makeDraggedWindowTransparent", IDS_SETTING_DESCRIPTION_MAKE_DRAGGED_WINDOW_TRANSPARENT, expected.makeDraggedWindowTransparent); - m_ptSettings->add_color_picker(L"fancyzones_zoneHighlightColor", IDS_SETTING_DESCRIPTION_ZONEHIGHLIGHTCOLOR, expected.zoneHighlightColor); - m_ptSettings->add_color_picker(L"fancyzones_zoneColor", IDS_SETTING_DESCRIPTION_ZONECOLOR, expected.zoneColor); - m_ptSettings->add_color_picker(L"fancyzones_zoneBorderColor", IDS_SETTING_DESCRIPTION_ZONE_BORDER_COLOR, expected.zoneBorderColor); - m_ptSettings->add_int_spinner(L"fancyzones_highlight_opacity", IDS_SETTINGS_HIGHLIGHT_OPACITY, expected.zoneHighlightOpacity, 0, 100, 1); - m_ptSettings->add_multiline_string(L"fancyzones_excluded_apps", IDS_SETTING_EXCLUDED_APPS_DESCRIPTION, expected.excludedApps); - } + int actualBufferSize = size - 1; + PWSTR actualBuffer = new wchar_t[actualBufferSize]; + + Assert::IsFalse(m_settings->GetConfig(actualBuffer, &actualBufferSize)); + Assert::AreEqual(size, actualBufferSize); + } - TEST_METHOD_CLEANUP(Cleanup) - { - std::filesystem::remove_all(PTSettingsHelper::get_module_save_folder_location(m_moduleName)); - } + TEST_METHOD (GetConfigNullBuffer) + { + int expectedSize = 0; + m_settings->GetConfig(nullptr, &expectedSize); + Assert::AreNotEqual(0, expectedSize); - TEST_METHOD (GetConfig) - { - const int expectedSize = static_cast(m_ptSettings->serialize().size()) + 1; + int actualBufferSize = 0; - int actualBufferSize = expectedSize; - PWSTR actualBuffer = new wchar_t[actualBufferSize]; + Assert::IsFalse(m_settings->GetConfig(nullptr, &actualBufferSize)); + Assert::AreEqual(expectedSize, actualBufferSize); + } - Assert::IsTrue(m_settings->GetConfig(actualBuffer, &actualBufferSize)); - Assert::AreEqual(expectedSize, actualBufferSize); + TEST_METHOD (SetConfig) + { + //cleanup file before call set config + const auto settingsFile = PTSettingsHelper::get_module_save_folder_location(m_moduleName) + L"\\settings.json"; + std::filesystem::remove(settingsFile); - Assert::AreEqual(m_ptSettings->serialize().c_str(), actualBuffer); - } + const Settings expected{ + .shiftDrag = true, + .mouseSwitch = true, + .displayChange_moveWindows = true, + .zoneSetChange_flashZones = false, + .zoneSetChange_moveWindows = true, + .overrideSnapHotkeys = false, + .moveWindowAcrossMonitors = false, + .appLastZone_moveWindows = true, + .openWindowOnActiveMonitor = false, + .restoreSize = false, + .use_cursorpos_editor_startupscreen = true, + .showZonesOnAllMonitors = false, + .spanZonesAcrossMonitors = false, + .makeDraggedWindowTransparent = true, + .zoneColor = L"#FAFAFA", + .zoneBorderColor = L"CCDDEE", + .zoneHighlightColor = L"#00AABB", + .zoneHighlightOpacity = 45, + .editorHotkey = PowerToysSettings::HotkeyObject::from_settings(false, false, false, false, VK_OEM_3), + .excludedApps = L"app\r\napp2", + .excludedAppsArray = { L"APP", L"APP2" }, + }; - TEST_METHOD (GetConfigSmallBuffer) - { - const auto serialized = m_ptSettings->serialize(); - const int size = static_cast(serialized.size()); - const int expectedSize = size + 1; + auto config = serializedPowerToySettings(expected); + m_settings->SetConfig(config.c_str()); - int actualBufferSize = size - 1; - PWSTR actualBuffer = new wchar_t[actualBufferSize]; + auto actual = m_settings->GetSettings(); + compareSettings(expected, *actual); - Assert::IsFalse(m_settings->GetConfig(actualBuffer, &actualBufferSize)); - Assert::AreEqual(expectedSize, actualBufferSize); - Assert::AreNotEqual(serialized.c_str(), actualBuffer); - } - - TEST_METHOD (GetConfigNullBuffer) - { - const auto serialized = m_ptSettings->serialize(); - const int expectedSize = static_cast(serialized.size()) + 1; - - int actualBufferSize = 0; - - Assert::IsFalse(m_settings->GetConfig(nullptr, &actualBufferSize)); - Assert::AreEqual(expectedSize, actualBufferSize); - } - - TEST_METHOD (SetConfig) - { - //cleanup file before call set config - const auto settingsFile = PTSettingsHelper::get_module_save_folder_location(m_moduleName) + L"\\settings.json"; - std::filesystem::remove(settingsFile); - - const Settings expected{ - .shiftDrag = true, - .mouseSwitch = true, - .displayChange_moveWindows = true, - .zoneSetChange_flashZones = false, - .zoneSetChange_moveWindows = true, - .overrideSnapHotkeys = false, - .moveWindowAcrossMonitors = false, - .appLastZone_moveWindows = true, - .openWindowOnActiveMonitor = false, - .restoreSize = false, - .use_cursorpos_editor_startupscreen = true, - .showZonesOnAllMonitors = false, - .spanZonesAcrossMonitors = false, - .makeDraggedWindowTransparent = true, - .zoneColor = L"#FAFAFA", - .zoneBorderColor = L"CCDDEE", - .zoneHighlightColor = L"#00AABB", - .zoneHighlightOpacity = 45, - .editorHotkey = PowerToysSettings::HotkeyObject::from_settings(false, false, false, false, VK_OEM_3), - .excludedApps = L"app\r\napp2", - .excludedAppsArray = { L"APP", L"APP2" }, - }; - - auto config = serializedPowerToySettings(expected); - m_settings->SetConfig(config.c_str()); - - auto actual = m_settings->GetSettings(); - compareSettings(expected, *actual); - - Assert::IsTrue(std::filesystem::exists(settingsFile)); - } + Assert::IsTrue(std::filesystem::exists(settingsFile)); + } }; } diff --git a/src/modules/fancyzones/tests/UnitTests/ZoneSet.Spec.cpp b/src/modules/fancyzones/tests/UnitTests/ZoneSet.Spec.cpp index 26d8ea86c2..e84a27ea26 100644 --- a/src/modules/fancyzones/tests/UnitTests/ZoneSet.Spec.cpp +++ b/src/modules/fancyzones/tests/UnitTests/ZoneSet.Spec.cpp @@ -754,7 +754,7 @@ namespace FancyZonesUnitTests std::filesystem::remove(m_path); } - void checkZones(const winrt::com_ptr& set, size_t expectedCount, MONITORINFO monitorInfo) + void checkZones(const winrt::com_ptr& set, ZoneSetLayoutType type, size_t expectedCount, MONITORINFO monitorInfo) { auto zones = set->GetZones(); Assert::AreEqual(expectedCount, zones.size()); @@ -771,8 +771,11 @@ namespace FancyZonesUnitTests Assert::IsTrue(zoneRect.left < zoneRect.right, L"rect.left >= rect.right"); Assert::IsTrue(zoneRect.top < zoneRect.bottom, L"rect.top >= rect.bottom"); - Assert::IsTrue(zoneRect.right <= monitorInfo.rcWork.right, L"right border is bigger than monitor work space"); - Assert::IsTrue(zoneRect.bottom <= monitorInfo.rcWork.bottom, L"bottom border is bigger than monitor work space"); + if (type != ZoneSetLayoutType::Focus) + { + Assert::IsTrue(zoneRect.right <= monitorInfo.rcWork.right, L"right border is bigger than monitor work space"); + Assert::IsTrue(zoneRect.bottom <= monitorInfo.rcWork.bottom, L"bottom border is bigger than monitor work space"); + } zoneId++; } @@ -793,7 +796,7 @@ namespace FancyZonesUnitTests auto set = MakeZoneSet(m_config); auto result = set->CalculateZones(monitorInfo.rcWork, zoneCount, spacing); Assert::IsTrue(result); - checkZones(set, zoneCount, monitorInfo); + checkZones(set, static_cast(type), zoneCount, monitorInfo); } } } @@ -827,7 +830,7 @@ namespace FancyZonesUnitTests auto set = MakeZoneSet(m_config); auto result = set->CalculateZones(monitorInfo.rcWork, zoneCount, spacing); Assert::IsTrue(result); - checkZones(set, zoneCount, monitorInfo); + checkZones(set, static_cast(type), zoneCount, monitorInfo); } } } @@ -944,7 +947,7 @@ namespace FancyZonesUnitTests auto set = MakeZoneSet(m_config); auto result = set->CalculateZones(monitorInfo.rcWork, zoneCount, spacing); Assert::IsTrue(result); - checkZones(set, zoneCount, monitorInfo); + checkZones(set, static_cast(type), zoneCount, monitorInfo); } } } @@ -1066,7 +1069,7 @@ namespace FancyZonesUnitTests auto set = MakeZoneSet(m_config); auto result = set->CalculateZones(monitorInfo.rcWork, zoneCount, spacing); Assert::IsTrue(result); - checkZones(set, zoneCount, monitorInfo); + checkZones(set, ZoneSetLayoutType::Custom, zoneCount, monitorInfo); } } @@ -1107,7 +1110,7 @@ namespace FancyZonesUnitTests auto set = MakeZoneSet(m_config); auto result = set->CalculateZones(monitorInfo.rcWork, zoneCount, spacing); Assert::IsTrue(result); - checkZones(set, zoneCount, monitorInfo); + checkZones(set, ZoneSetLayoutType::Custom, zoneCount, monitorInfo); } } diff --git a/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp b/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp index eac6f0e313..93e5311602 100644 --- a/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp +++ b/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp @@ -53,29 +53,34 @@ namespace FancyZonesUnitTests IFACEMETHODIMP_(bool) InMoveSize() noexcept { - return true; + return false; } IZoneWindow* m_zoneWindow; }; - TEST_CLASS(ZoneWindowUnitTests) + const std::wstring m_deviceId = L"\\\\?\\DISPLAY#DELA026#5&10a58c63&0&UID16777488#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}"; + const std::wstring m_virtualDesktopId = L"MyVirtualDesktopId"; + + TEST_CLASS(ZoneWindowCreationUnitTests) { - const std::wstring m_deviceId = L"\\\\?\\DISPLAY#DELA026#5&10a58c63&0&UID16777488#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}"; - const std::wstring m_virtualDesktopId = L"MyVirtualDesktopId"; std::wstringstream m_parentUniqueId; std::wstringstream m_uniqueId; HINSTANCE m_hInst{}; HMONITOR m_monitor{}; MONITORINFO m_monitorInfo{}; - winrt::com_ptr m_zoneWindowHost = winrt::make_self(); - IZoneWindowHost* m_hostPtr = m_zoneWindowHost.get(); - - winrt::com_ptr m_zoneWindow; FancyZonesData& m_fancyZonesData = FancyZonesDataInstance(); + void testZoneWindow(winrt::com_ptr zoneWindow) + { + const std::wstring expectedWorkArea = std::to_wstring(m_monitorInfo.rcMonitor.right) + L"_" + std::to_wstring(m_monitorInfo.rcMonitor.bottom); + + Assert::IsNotNull(zoneWindow.get()); + Assert::AreEqual(m_uniqueId.str().c_str(), zoneWindow->UniqueId().c_str()); + } + TEST_METHOD_INITIALIZE(Init) { m_hInst = (HINSTANCE)GetModuleHandleW(nullptr); @@ -105,101 +110,66 @@ namespace FancyZonesUnitTests std::filesystem::remove(m_fancyZonesData.activeZoneSetTmpFileName); std::filesystem::remove(m_fancyZonesData.appliedZoneSetTmpFileName); std::filesystem::remove(m_fancyZonesData.deletedCustomZoneSetsTmpFileName); - - m_zoneWindow = nullptr; } - winrt::com_ptr InitZoneWindowWithActiveZoneSet() - { - const auto activeZoneSetTempPath = m_fancyZonesData.activeZoneSetTmpFileName; - Assert::IsFalse(std::filesystem::exists(activeZoneSetTempPath)); - - const auto type = FancyZonesDataTypes::ZoneSetLayoutType::Columns; - const auto expectedZoneSet = FancyZonesDataTypes::ZoneSetData{ Helpers::CreateGuidString(), type }; - const auto data = FancyZonesDataTypes::DeviceInfoData{ expectedZoneSet, true, 16, 3 }; - const auto deviceInfo = JSONHelpers::DeviceInfoJSON{ m_uniqueId.str(), data }; - const auto json = JSONHelpers::DeviceInfoJSON::ToJson(deviceInfo); - json::to_file(activeZoneSetTempPath, json); - Assert::IsTrue(std::filesystem::exists(activeZoneSetTempPath)); - - m_fancyZonesData.ParseDeviceInfoFromTmpFile(activeZoneSetTempPath); - - return MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); - } - - void testZoneWindow(winrt::com_ptr zoneWindow) - { - const std::wstring expectedWorkArea = std::to_wstring(m_monitorInfo.rcMonitor.right) + L"_" + std::to_wstring(m_monitorInfo.rcMonitor.bottom); - - Assert::IsNotNull(zoneWindow.get()); - Assert::AreEqual(m_uniqueId.str().c_str(), zoneWindow->UniqueId().c_str()); - } - - public: TEST_METHOD(CreateZoneWindow) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); - testZoneWindow(m_zoneWindow); - Assert::IsNull(m_zoneWindow->ActiveZoneSet()); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); + testZoneWindow(zoneWindow); + Assert::IsNull(zoneWindow->ActiveZoneSet()); } TEST_METHOD(CreateZoneWindowNoHinst) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, {}, m_monitor, m_uniqueId.str(), {}, false); - - testZoneWindow(m_zoneWindow); - Assert::IsNull(m_zoneWindow->ActiveZoneSet()); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), {}, m_monitor, m_uniqueId.str(), {}, false); + testZoneWindow(zoneWindow); + Assert::IsNull(zoneWindow->ActiveZoneSet()); } TEST_METHOD(CreateZoneWindowNoHinstFlashZones) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, {}, m_monitor, m_uniqueId.str(), {}, false); - - testZoneWindow(m_zoneWindow); - Assert::IsNull(m_zoneWindow->ActiveZoneSet()); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), {}, m_monitor, m_uniqueId.str(), {}, false); + testZoneWindow(zoneWindow); + Assert::IsNull(zoneWindow->ActiveZoneSet()); } TEST_METHOD(CreateZoneWindowNoMonitor) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, {}, m_uniqueId.str(), {}, false); - - Assert::IsNull(m_zoneWindow.get()); - Assert::IsNotNull(m_hostPtr); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, {}, m_uniqueId.str(), {}, false); + testZoneWindow(zoneWindow); } TEST_METHOD(CreateZoneWindowNoMonitorFlashZones) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, {}, m_uniqueId.str(), {}, false); - - Assert::IsNull(m_zoneWindow.get()); - Assert::IsNotNull(m_hostPtr); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, {}, m_uniqueId.str(), {}, true); + testZoneWindow(zoneWindow); } TEST_METHOD(CreateZoneWindowNoDeviceId) { // Generate unique id without device id std::wstring uniqueId = ZoneWindowUtils::GenerateUniqueId(m_monitor, nullptr, m_virtualDesktopId.c_str()); - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, uniqueId, {}, false); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, uniqueId, {}, false); const std::wstring expectedWorkArea = std::to_wstring(m_monitorInfo.rcMonitor.right) + L"_" + std::to_wstring(m_monitorInfo.rcMonitor.bottom); const std::wstring expectedUniqueId = L"FallbackDevice_" + std::to_wstring(m_monitorInfo.rcMonitor.right) + L"_" + std::to_wstring(m_monitorInfo.rcMonitor.bottom) + L"_" + m_virtualDesktopId; - Assert::IsNotNull(m_zoneWindow.get()); - Assert::AreEqual(expectedUniqueId.c_str(), m_zoneWindow->UniqueId().c_str()); - Assert::IsNull(m_zoneWindow->ActiveZoneSet()); + Assert::IsNotNull(zoneWindow.get()); + Assert::AreEqual(expectedUniqueId.c_str(), zoneWindow->UniqueId().c_str()); + Assert::IsNull(zoneWindow->ActiveZoneSet()); } TEST_METHOD(CreateZoneWindowNoDesktopId) { // Generate unique id without virtual desktop id std::wstring uniqueId = ZoneWindowUtils::GenerateUniqueId(m_monitor, m_deviceId.c_str(), nullptr); - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, uniqueId, {}, false); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, uniqueId, {}, false); const std::wstring expectedWorkArea = std::to_wstring(m_monitorInfo.rcMonitor.right) + L"_" + std::to_wstring(m_monitorInfo.rcMonitor.bottom); - Assert::IsNotNull(m_zoneWindow.get()); - Assert::IsTrue(m_zoneWindow->UniqueId().empty()); - Assert::IsNull(m_zoneWindow->ActiveZoneSet()); - Assert::IsNull(m_zoneWindow->ActiveZoneSet()); + Assert::IsNotNull(zoneWindow.get()); + Assert::IsTrue(zoneWindow->UniqueId().empty()); + Assert::IsNull(zoneWindow->ActiveZoneSet()); + Assert::IsNull(zoneWindow->ActiveZoneSet()); } TEST_METHOD(CreateZoneWindowWithActiveZoneTmpFile) @@ -219,7 +189,7 @@ namespace FancyZonesUnitTests m_fancyZonesData.ParseDeviceInfoFromTmpFile(activeZoneSetTempPath); //temp file read on initialization - auto actual = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); + auto actual = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); testZoneWindow(actual); @@ -243,7 +213,7 @@ namespace FancyZonesUnitTests m_fancyZonesData.ParseDeviceInfoFromTmpFile(activeZoneSetTempPath); //temp file read on initialization - auto actual = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); + auto actual = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); testZoneWindow(actual); @@ -279,7 +249,7 @@ namespace FancyZonesUnitTests m_fancyZonesData.ParseCustomZoneSetFromTmpFile(appliedZoneSetTempPath); //temp file read on initialization - auto actual = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); + auto actual = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); testZoneWindow(actual); @@ -326,7 +296,7 @@ namespace FancyZonesUnitTests m_fancyZonesData.ParseCustomZoneSetFromTmpFile(appliedZoneSetTempPath); //temp file read on initialization - auto actual = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); + auto actual = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); testZoneWindow(actual); @@ -373,7 +343,7 @@ namespace FancyZonesUnitTests m_fancyZonesData.ParseCustomZoneSetFromTmpFile(appliedZoneSetTempPath); //temp file read on initialization - auto actual = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); + auto actual = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); testZoneWindow(actual); @@ -394,11 +364,12 @@ namespace FancyZonesUnitTests const auto parentDeviceInfo = DeviceInfoData{ parentZoneSet, true, spacing, zoneCount }; m_fancyZonesData.SetDeviceInfo(m_parentUniqueId.str(), parentDeviceInfo); - auto parentZoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_parentUniqueId.str(), {}, false); - m_zoneWindowHost->m_zoneWindow = parentZoneWindow.get(); + winrt::com_ptr zoneWindowHost = winrt::make_self(); + auto parentZoneWindow = MakeZoneWindow(zoneWindowHost.get(), m_hInst, m_monitor, m_parentUniqueId.str(), {}, false); + zoneWindowHost->m_zoneWindow = parentZoneWindow.get(); // newWorkArea = true - zoneWindow will be cloned from parent - auto actualZoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), m_parentUniqueId.str(), false); + auto actualZoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), m_parentUniqueId.str(), false); Assert::IsNotNull(actualZoneWindow->ActiveZoneSet()); const auto actualZoneSet = actualZoneWindow->ActiveZoneSet()->GetZones(); @@ -423,11 +394,12 @@ namespace FancyZonesUnitTests const auto parentDeviceInfo = DeviceInfoData{ parentZoneSet, true, spacing, zoneCount }; m_fancyZonesData.SetDeviceInfo(m_parentUniqueId.str(), parentDeviceInfo); - auto parentZoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_parentUniqueId.str(), {}, false); - m_zoneWindowHost->m_zoneWindow = parentZoneWindow.get(); + winrt::com_ptr zoneWindowHost = winrt::make_self(); + auto parentZoneWindow = MakeZoneWindow(zoneWindowHost.get(), m_hInst, m_monitor, m_parentUniqueId.str(), {}, false); + zoneWindowHost->m_zoneWindow = parentZoneWindow.get(); // newWorkArea = false - zoneWindow won't be cloned from parent - auto actualZoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); + auto actualZoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); Assert::IsNull(actualZoneWindow->ActiveZoneSet()); @@ -440,63 +412,122 @@ namespace FancyZonesUnitTests Assert::AreEqual(std::wstring{ L"null" }, currentDeviceInfo.activeZoneSet.uuid); Assert::AreEqual(static_cast(ZoneSetLayoutType::Blank), static_cast(currentDeviceInfo.activeZoneSet.type)); } + }; + TEST_CLASS(ZoneWindowUnitTests) + { + std::wstringstream m_uniqueId; + + HINSTANCE m_hInst{}; + HMONITOR m_monitor{}; + MONITORINFO m_monitorInfo{}; + + FancyZonesData& m_fancyZonesData = FancyZonesDataInstance(); + + TEST_METHOD_INITIALIZE(Init) + { + 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_uniqueId << L"DELA026#5&10a58c63&0&UID16777488_" << m_monitorInfo.rcMonitor.right << "_" << m_monitorInfo.rcMonitor.bottom << "_{39B25DD2-130D-4B5D-8851-4791D66B1539}"; + + Assert::IsFalse(m_fancyZonesData.activeZoneSetTmpFileName.empty()); + Assert::IsFalse(m_fancyZonesData.appliedZoneSetTmpFileName.empty()); + Assert::IsFalse(m_fancyZonesData.deletedCustomZoneSetsTmpFileName.empty()); + + Assert::IsFalse(std::filesystem::exists(m_fancyZonesData.activeZoneSetTmpFileName)); + Assert::IsFalse(std::filesystem::exists(m_fancyZonesData.appliedZoneSetTmpFileName)); + Assert::IsFalse(std::filesystem::exists(m_fancyZonesData.deletedCustomZoneSetsTmpFileName)); + + m_fancyZonesData.SetSettingsModulePath(L"FancyZonesUnitTests"); + m_fancyZonesData.clear_data(); + } + + TEST_METHOD_CLEANUP(Cleanup) + { + //cleanup temp files if were created + std::filesystem::remove(m_fancyZonesData.activeZoneSetTmpFileName); + std::filesystem::remove(m_fancyZonesData.appliedZoneSetTmpFileName); + std::filesystem::remove(m_fancyZonesData.deletedCustomZoneSetsTmpFileName); + } + + void PrepareFZData() + { + const auto activeZoneSetTempPath = m_fancyZonesData.activeZoneSetTmpFileName; + Assert::IsFalse(std::filesystem::exists(activeZoneSetTempPath)); + + const auto type = FancyZonesDataTypes::ZoneSetLayoutType::Columns; + const auto expectedZoneSet = FancyZonesDataTypes::ZoneSetData{ Helpers::CreateGuidString(), type }; + const auto data = FancyZonesDataTypes::DeviceInfoData{ expectedZoneSet, true, 16, 3 }; + const auto deviceInfo = JSONHelpers::DeviceInfoJSON{ m_uniqueId.str(), data }; + const auto json = JSONHelpers::DeviceInfoJSON::ToJson(deviceInfo); + json::to_file(activeZoneSetTempPath, json); + Assert::IsTrue(std::filesystem::exists(activeZoneSetTempPath)); + + m_fancyZonesData.ParseDeviceInfoFromTmpFile(activeZoneSetTempPath); + } + + public: TEST_METHOD(MoveSizeEnter) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); const auto expected = S_OK; - const auto actual = m_zoneWindow->MoveSizeEnter(Mocks::Window()); + const auto actual = zoneWindow->MoveSizeEnter(Mocks::Window()); Assert::AreEqual(expected, actual); } TEST_METHOD(MoveSizeEnterTwice) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); const auto expected = S_OK; - m_zoneWindow->MoveSizeEnter(Mocks::Window()); - const auto actual = m_zoneWindow->MoveSizeEnter(Mocks::Window()); + zoneWindow->MoveSizeEnter(Mocks::Window()); + const auto actual = zoneWindow->MoveSizeEnter(Mocks::Window()); Assert::AreEqual(expected, actual); } TEST_METHOD(MoveSizeUpdate) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); const auto expected = S_OK; - const auto actual = m_zoneWindow->MoveSizeUpdate(POINT{ 0, 0 }, true, false); + const auto actual = zoneWindow->MoveSizeUpdate(POINT{ 0, 0 }, true, false); Assert::AreEqual(expected, actual); } TEST_METHOD(MoveSizeUpdatePointNegativeCoordinates) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); const auto expected = S_OK; - const auto actual = m_zoneWindow->MoveSizeUpdate(POINT{ -10, -10 }, true, false); + const auto actual = zoneWindow->MoveSizeUpdate(POINT{ -10, -10 }, true, false); Assert::AreEqual(expected, actual); } TEST_METHOD(MoveSizeUpdatePointBigCoordinates) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); const auto expected = S_OK; - const auto actual = m_zoneWindow->MoveSizeUpdate(POINT{ m_monitorInfo.rcMonitor.right + 1, m_monitorInfo.rcMonitor.bottom + 1 }, true, false); + const auto actual = zoneWindow->MoveSizeUpdate(POINT{ m_monitorInfo.rcMonitor.right + 1, m_monitorInfo.rcMonitor.bottom + 1 }, true, false); Assert::AreEqual(expected, actual); } TEST_METHOD(MoveSizeEnd) { - auto zoneWindow = InitZoneWindowWithActiveZoneSet(); - + PrepareFZData(); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); + const auto window = Mocks::Window(); zoneWindow->MoveSizeEnter(window); @@ -512,7 +543,8 @@ namespace FancyZonesUnitTests TEST_METHOD(MoveSizeEndWindowNotAdded) { - auto zoneWindow = InitZoneWindowWithActiveZoneSet(); + PrepareFZData(); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); const auto window = Mocks::Window(); zoneWindow->MoveSizeEnter(window); @@ -528,30 +560,31 @@ namespace FancyZonesUnitTests TEST_METHOD(MoveSizeEndDifferentWindows) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); const auto window = Mocks::Window(); - m_zoneWindow->MoveSizeEnter(window); + zoneWindow->MoveSizeEnter(window); const auto expected = E_INVALIDARG; - const auto actual = m_zoneWindow->MoveSizeEnd(Mocks::Window(), POINT{ 0, 0 }); + const auto actual = zoneWindow->MoveSizeEnd(Mocks::Window(), POINT{ 0, 0 }); Assert::AreEqual(expected, actual); } TEST_METHOD(MoveSizeEndWindowNotSet) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); const auto expected = E_INVALIDARG; - const auto actual = m_zoneWindow->MoveSizeEnd(Mocks::Window(), POINT{ 0, 0 }); + const auto actual = zoneWindow->MoveSizeEnd(Mocks::Window(), POINT{ 0, 0 }); Assert::AreEqual(expected, actual); } TEST_METHOD(MoveSizeEndInvalidPoint) { - auto zoneWindow = InitZoneWindowWithActiveZoneSet(); + PrepareFZData(); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); const auto window = Mocks::Window(); zoneWindow->MoveSizeEnter(window); @@ -568,37 +601,39 @@ namespace FancyZonesUnitTests TEST_METHOD(MoveWindowIntoZoneByIndexNoActiveZoneSet) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); - Assert::IsNull(m_zoneWindow->ActiveZoneSet()); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); + Assert::IsNull(zoneWindow->ActiveZoneSet()); - m_zoneWindow->MoveWindowIntoZoneByIndex(Mocks::Window(), 0); + zoneWindow->MoveWindowIntoZoneByIndex(Mocks::Window(), 0); } TEST_METHOD(MoveWindowIntoZoneByIndex) { - m_zoneWindow = InitZoneWindowWithActiveZoneSet(); - Assert::IsNotNull(m_zoneWindow->ActiveZoneSet()); + PrepareFZData(); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); + Assert::IsNotNull(zoneWindow->ActiveZoneSet()); - m_zoneWindow->MoveWindowIntoZoneByIndex(Mocks::Window(), 0); + zoneWindow->MoveWindowIntoZoneByIndex(Mocks::Window(), 0); - const auto actual = m_zoneWindow->ActiveZoneSet(); + const auto actual = zoneWindow->ActiveZoneSet(); } TEST_METHOD(MoveWindowIntoZoneByDirectionNoActiveZoneSet) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); - Assert::IsNull(m_zoneWindow->ActiveZoneSet()); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); + Assert::IsNull(zoneWindow->ActiveZoneSet()); - m_zoneWindow->MoveWindowIntoZoneByIndex(Mocks::Window(), 0); + zoneWindow->MoveWindowIntoZoneByIndex(Mocks::Window(), 0); } TEST_METHOD(MoveWindowIntoZoneByDirection) { - m_zoneWindow = InitZoneWindowWithActiveZoneSet(); - Assert::IsNotNull(m_zoneWindow->ActiveZoneSet()); + PrepareFZData(); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); + Assert::IsNotNull(zoneWindow->ActiveZoneSet()); const auto window = Mocks::WindowCreate(m_hInst); - m_zoneWindow->MoveWindowIntoZoneByDirection(window, VK_RIGHT, true); + zoneWindow->MoveWindowIntoZoneByDirection(window, VK_RIGHT, true); const auto& actualAppZoneHistory = m_fancyZonesData.GetAppZoneHistoryMap(); Assert::AreEqual((size_t)1, actualAppZoneHistory.size()); @@ -609,13 +644,14 @@ namespace FancyZonesUnitTests TEST_METHOD(MoveWindowIntoZoneByDirectionManyTimes) { - m_zoneWindow = InitZoneWindowWithActiveZoneSet(); - Assert::IsNotNull(m_zoneWindow->ActiveZoneSet()); + PrepareFZData(); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); + Assert::IsNotNull(zoneWindow->ActiveZoneSet()); const auto window = Mocks::WindowCreate(m_hInst); - m_zoneWindow->MoveWindowIntoZoneByDirection(window, VK_RIGHT, true); - m_zoneWindow->MoveWindowIntoZoneByDirection(window, VK_RIGHT, true); - m_zoneWindow->MoveWindowIntoZoneByDirection(window, VK_RIGHT, true); + zoneWindow->MoveWindowIntoZoneByDirection(window, VK_RIGHT, true); + zoneWindow->MoveWindowIntoZoneByDirection(window, VK_RIGHT, true); + zoneWindow->MoveWindowIntoZoneByDirection(window, VK_RIGHT, true); const auto& actualAppZoneHistory = m_fancyZonesData.GetAppZoneHistoryMap(); Assert::AreEqual((size_t)1, actualAppZoneHistory.size()); @@ -626,10 +662,10 @@ namespace FancyZonesUnitTests TEST_METHOD(SaveWindowProcessToZoneIndexNoActiveZoneSet) { - m_zoneWindow = MakeZoneWindow(m_hostPtr, m_hInst, m_monitor, m_uniqueId.str(), {}, false); - Assert::IsNull(m_zoneWindow->ActiveZoneSet()); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); + Assert::IsNull(zoneWindow->ActiveZoneSet()); - m_zoneWindow->SaveWindowProcessToZoneIndex(Mocks::Window()); + zoneWindow->SaveWindowProcessToZoneIndex(Mocks::Window()); const auto actualAppZoneHistory = m_fancyZonesData.GetAppZoneHistoryMap(); Assert::IsTrue(actualAppZoneHistory.empty()); @@ -637,10 +673,11 @@ namespace FancyZonesUnitTests TEST_METHOD(SaveWindowProcessToZoneIndexNullptrWindow) { - m_zoneWindow = InitZoneWindowWithActiveZoneSet(); - Assert::IsNotNull(m_zoneWindow->ActiveZoneSet()); + PrepareFZData(); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); + Assert::IsNotNull(zoneWindow->ActiveZoneSet()); - m_zoneWindow->SaveWindowProcessToZoneIndex(nullptr); + zoneWindow->SaveWindowProcessToZoneIndex(nullptr); const auto actualAppZoneHistory = m_fancyZonesData.GetAppZoneHistoryMap(); Assert::IsTrue(actualAppZoneHistory.empty()); @@ -648,14 +685,15 @@ namespace FancyZonesUnitTests TEST_METHOD(SaveWindowProcessToZoneIndexNoWindowAdded) { - m_zoneWindow = InitZoneWindowWithActiveZoneSet(); - Assert::IsNotNull(m_zoneWindow->ActiveZoneSet()); + PrepareFZData(); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); + Assert::IsNotNull(zoneWindow->ActiveZoneSet()); auto window = Mocks::WindowCreate(m_hInst); auto zone = MakeZone(RECT{ 0, 0, 100, 100 }); - m_zoneWindow->ActiveZoneSet()->AddZone(zone); + zoneWindow->ActiveZoneSet()->AddZone(zone); - m_zoneWindow->SaveWindowProcessToZoneIndex(window); + zoneWindow->SaveWindowProcessToZoneIndex(window); const auto actualAppZoneHistory = m_fancyZonesData.GetAppZoneHistoryMap(); Assert::IsTrue(actualAppZoneHistory.empty()); @@ -663,13 +701,14 @@ namespace FancyZonesUnitTests TEST_METHOD(SaveWindowProcessToZoneIndexNoWindowAddedWithFilledAppZoneHistory) { - m_zoneWindow = InitZoneWindowWithActiveZoneSet(); - Assert::IsNotNull(m_zoneWindow->ActiveZoneSet()); + PrepareFZData(); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); + Assert::IsNotNull(zoneWindow->ActiveZoneSet()); const auto window = Mocks::WindowCreate(m_hInst); const auto processPath = get_process_path(window); - const auto deviceId = m_zoneWindow->UniqueId(); - const auto zoneSetId = m_zoneWindow->ActiveZoneSet()->Id(); + const auto deviceId = zoneWindow->UniqueId(); + const auto zoneSetId = zoneWindow->ActiveZoneSet()->Id(); // fill app zone history map Assert::IsTrue(m_fancyZonesData.SetAppLastZones(window, deviceId, Helpers::GuidToString(zoneSetId), { 0 })); @@ -680,9 +719,9 @@ namespace FancyZonesUnitTests // add zone without window const auto zone = MakeZone(RECT{ 0, 0, 100, 100 }); - m_zoneWindow->ActiveZoneSet()->AddZone(zone); + zoneWindow->ActiveZoneSet()->AddZone(zone); - m_zoneWindow->SaveWindowProcessToZoneIndex(window); + zoneWindow->SaveWindowProcessToZoneIndex(window); Assert::AreEqual((size_t)1, m_fancyZonesData.GetAppZoneHistoryMap().size()); const auto& appHistoryArray2 = m_fancyZonesData.GetAppZoneHistoryMap().at(processPath); Assert::AreEqual((size_t)1, appHistoryArray2.size()); @@ -691,17 +730,18 @@ namespace FancyZonesUnitTests TEST_METHOD(SaveWindowProcessToZoneIndexWindowAdded) { - m_zoneWindow = InitZoneWindowWithActiveZoneSet(); - Assert::IsNotNull(m_zoneWindow->ActiveZoneSet()); + PrepareFZData(); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); + Assert::IsNotNull(zoneWindow->ActiveZoneSet()); auto window = Mocks::WindowCreate(m_hInst); const auto processPath = get_process_path(window); - const auto deviceId = m_zoneWindow->UniqueId(); - const auto zoneSetId = m_zoneWindow->ActiveZoneSet()->Id(); + const auto deviceId = zoneWindow->UniqueId(); + const auto zoneSetId = zoneWindow->ActiveZoneSet()->Id(); auto zone = MakeZone(RECT{ 0, 0, 100, 100 }); - m_zoneWindow->ActiveZoneSet()->AddZone(zone); - m_zoneWindow->MoveWindowIntoZoneByIndex(window, 0); + zoneWindow->ActiveZoneSet()->AddZone(zone); + zoneWindow->MoveWindowIntoZoneByIndex(window, 0); //fill app zone history map Assert::IsTrue(m_fancyZonesData.SetAppLastZones(window, deviceId, Helpers::GuidToString(zoneSetId), { 2 })); @@ -710,19 +750,20 @@ namespace FancyZonesUnitTests Assert::AreEqual((size_t)1, appHistoryArray.size()); Assert::AreEqual({ 2 }, appHistoryArray[0].zoneIndexSet); - m_zoneWindow->SaveWindowProcessToZoneIndex(window); + zoneWindow->SaveWindowProcessToZoneIndex(window); const auto& actualAppZoneHistory = m_fancyZonesData.GetAppZoneHistoryMap(); Assert::AreEqual((size_t)1, actualAppZoneHistory.size()); - const auto& expected = m_zoneWindow->ActiveZoneSet()->GetZoneIndexSetFromWindow(window); + const auto& expected = zoneWindow->ActiveZoneSet()->GetZoneIndexSetFromWindow(window); const auto& actual = appHistoryArray[0].zoneIndexSet; Assert::AreEqual(expected, actual); } TEST_METHOD(WhenWindowIsNotResizablePlacingItIntoTheZoneShouldNotResizeIt) { - m_zoneWindow = InitZoneWindowWithActiveZoneSet(); - Assert::IsNotNull(m_zoneWindow->ActiveZoneSet()); + PrepareFZData(); + auto zoneWindow = MakeZoneWindow(winrt::make_self().get(), m_hInst, m_monitor, m_uniqueId.str(), {}, false); + Assert::IsNotNull(zoneWindow->ActiveZoneSet()); auto window = Mocks::WindowCreate(m_hInst); @@ -733,9 +774,9 @@ namespace FancyZonesUnitTests SetWindowLong(window, GWL_STYLE, GetWindowLong(window, GWL_STYLE) & ~WS_SIZEBOX); auto zone = MakeZone(RECT{ 50, 50, 300, 300 }); - m_zoneWindow->ActiveZoneSet()->AddZone(zone); + zoneWindow->ActiveZoneSet()->AddZone(zone); - m_zoneWindow->MoveWindowIntoZoneByDirection(window, VK_LEFT, true); + zoneWindow->MoveWindowIntoZoneByDirection(window, VK_LEFT, true); RECT inZoneRect; GetWindowRect(window, &inZoneRect);