From 4f9d31e83280bf7ecb78fa6e77187d34e1cd6431 Mon Sep 17 00:00:00 2001 From: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com> Date: Tue, 10 Dec 2019 17:17:40 -0800 Subject: [PATCH 1/2] [FancyZones][UnitTests] Fixing TestDeviceId, and TestUniqueId to unit tests. 1. Creating a mock ZoneWindowHost. Previously creating a ZoneWindow would throw an exception if the ZoneWindowHost is null. 2. Passing in HWND() instead of null to get rig of SAL annotation warnings. --- .../tests/UnitTests/ZoneWindow.Spec.cpp | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp b/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp index c5576b12ee..e7be92c857 100644 --- a/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp +++ b/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp @@ -5,8 +5,24 @@ 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 +31,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 +45,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 +54,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); } } From 51180adeb4fd7962b1b1cd1db5e2336108b1a2c7 Mon Sep 17 00:00:00 2001 From: ryanbodrug-microsoft <56318517+ryanbodrug-microsoft@users.noreply.github.com> Date: Wed, 11 Dec 2019 08:34:18 -0800 Subject: [PATCH 2/2] Autoformatting document. --- .../fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp b/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp index e7be92c857..cef01d01a3 100644 --- a/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp +++ b/src/modules/fancyzones/tests/UnitTests/ZoneWindow.Spec.cpp @@ -7,12 +7,15 @@ namespace FancyZonesUnitTests { struct MockZoneWindowHost : public winrt::implements { - IFACEMETHODIMP_(void) MoveWindowsOnActiveZoneSetChange() noexcept {}; - IFACEMETHODIMP_(COLORREF) GetZoneHighlightColor() noexcept + IFACEMETHODIMP_(void) + MoveWindowsOnActiveZoneSetChange() noexcept {}; + IFACEMETHODIMP_(COLORREF) + GetZoneHighlightColor() noexcept { return RGB(0xFF, 0xFF, 0xFF); } - IFACEMETHODIMP_(GUID) GetCurrentMonitorZoneSetId(HMONITOR monitor) noexcept + IFACEMETHODIMP_(GUID) + GetCurrentMonitorZoneSetId(HMONITOR monitor) noexcept { return m_guid; } @@ -31,7 +34,7 @@ namespace FancyZonesUnitTests TEST_METHOD(TestDeviceId) { // Window initialization requires a valid HMONITOR - just use the primary for now. - HMONITOR pimaryMonitor = MonitorFromWindow(HWND(), MONITOR_DEFAULTTOPRIMARY); + 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); @@ -54,7 +57,7 @@ TEST_METHOD(TestUniqueId) std::wstringstream ss; ss << L"DELA026#5&10a58c63&0&UID16777488_" << monitorRect.width() << "_" << monitorRect.height() << "_MyVirtualDesktopId"; - MockZoneWindowHost host; + 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); }