diff --git a/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp b/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp index c5576b12ee..cef01d01a3 100644 --- a/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp +++ b/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp @@ -5,8 +5,27 @@ using namespace Microsoft::VisualStudio::CppUnitTestFramework; namespace FancyZonesUnitTests { + struct MockZoneWindowHost : public winrt::implements + { + IFACEMETHODIMP_(void) + MoveWindowsOnActiveZoneSetChange() noexcept {}; + IFACEMETHODIMP_(COLORREF) + GetZoneHighlightColor() noexcept + { + return RGB(0xFF, 0xFF, 0xFF); + } + IFACEMETHODIMP_(GUID) + GetCurrentMonitorZoneSetId(HMONITOR monitor) noexcept + { + return m_guid; + } + + GUID m_guid; + }; + TEST_CLASS(ZoneWindowUnitTests){ public: + TEST_METHOD(TestCreateZoneWindow){ winrt::com_ptr zoneWindow = MakeZoneWindow(nullptr, Mocks::Instance(), Mocks::Monitor(), L"DeviceId", L"MyVirtualDesktopId", false); Assert::IsNotNull(zoneWindow.get()); @@ -15,10 +34,12 @@ namespace FancyZonesUnitTests TEST_METHOD(TestDeviceId) { // Window initialization requires a valid HMONITOR - just use the primary for now. - HMONITOR pimaryMonitor = MonitorFromWindow(nullptr, MONITOR_DEFAULTTOPRIMARY); - winrt::com_ptr zoneWindow = MakeZoneWindow(nullptr, Mocks::Instance(), pimaryMonitor, L"SomeRandomValue", L"MyVirtualDesktopId", false); - // We have no way to test the correctness, just do our best and check its not an empty string. - Assert::IsTrue(zoneWindow->DeviceId().size() > 0); + HMONITOR pimaryMonitor = MonitorFromWindow(HWND(), MONITOR_DEFAULTTOPRIMARY); + MockZoneWindowHost host; + std::wstring expectedDeviceId = L"SomeRandomValue"; + winrt::com_ptr zoneWindow = MakeZoneWindow(dynamic_cast(&host), Mocks::Instance(), pimaryMonitor, expectedDeviceId.c_str(), L"MyVirtualDesktopId", false); + + Assert::AreEqual(expectedDeviceId, zoneWindow->DeviceId()); } TEST_METHOD(TestUniqueId) @@ -27,7 +48,7 @@ TEST_METHOD(TestUniqueId) // Example: "DELA026#5&10a58c63&0&UID16777488_1024_768_MyVirtualDesktopId" std::wstring deviceId(L"\\\\?\\DISPLAY#DELA026#5&10a58c63&0&UID16777488#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}"); // Window initialization requires a valid HMONITOR - just use the primary for now. - HMONITOR pimaryMonitor = MonitorFromWindow(nullptr, MONITOR_DEFAULTTOPRIMARY); + HMONITOR pimaryMonitor = MonitorFromWindow(HWND(), MONITOR_DEFAULTTOPRIMARY); MONITORINFO info; info.cbSize = sizeof(info); Assert::IsTrue(GetMonitorInfo(pimaryMonitor, &info)); @@ -36,7 +57,8 @@ TEST_METHOD(TestUniqueId) std::wstringstream ss; ss << L"DELA026#5&10a58c63&0&UID16777488_" << monitorRect.width() << "_" << monitorRect.height() << "_MyVirtualDesktopId"; - winrt::com_ptr zoneWindow = MakeZoneWindow(nullptr, Mocks::Instance(), pimaryMonitor, deviceId.c_str(), L"MyVirtualDesktopId", false); + MockZoneWindowHost host; + winrt::com_ptr zoneWindow = MakeZoneWindow(dynamic_cast(&host), Mocks::Instance(), pimaryMonitor, deviceId.c_str(), L"MyVirtualDesktopId", false); Assert::AreEqual(zoneWindow->UniqueId().compare(ss.str()), 0); } }