[PATCH 6/6] user32/tests: Add more QueryDisplayConfig() tests.

Brendan Shanks bshanks at codeweavers.com
Mon Jun 29 23:55:24 CDT 2020


Signed-off-by: Brendan Shanks <bshanks at codeweavers.com>
---
 dlls/user32/tests/monitor.c | 47 +++++++++++++++++++++++++++++++++++--
 1 file changed, 45 insertions(+), 2 deletions(-)

diff --git a/dlls/user32/tests/monitor.c b/dlls/user32/tests/monitor.c
index 8b3e7236c7e..f469111a26c 100644
--- a/dlls/user32/tests/monitor.c
+++ b/dlls/user32/tests/monitor.c
@@ -1288,7 +1288,8 @@ static void test_EnumDisplayMonitors(void)
     }
 }
 
-static void test_QueryDisplayConfig_result(UINT32 paths, const DISPLAYCONFIG_PATH_INFO *pi, UINT32 modes, const DISPLAYCONFIG_MODE_INFO *mi)
+static void test_QueryDisplayConfig_result(UINT32 flags,
+        UINT32 paths, const DISPLAYCONFIG_PATH_INFO *pi, UINT32 modes, const DISPLAYCONFIG_MODE_INFO *mi)
 {
     UINT32 i;
     LONG ret;
@@ -1385,6 +1386,24 @@ static void test_QueryDisplayConfig_result(UINT32 paths, const DISPLAYCONFIG_PAT
                 "Expected LUID %08x:%08x, got %08x:%08x\n",
                 pi[i].targetInfo.adapterId.HighPart, pi[i].targetInfo.adapterId.LowPart,
                 mi[pi[i].targetInfo.modeInfoIdx].adapterId.HighPart, mi[pi[i].targetInfo.modeInfoIdx].adapterId.LowPart);
+        ok(mi[pi[i].targetInfo.modeInfoIdx].targetMode.targetVideoSignalInfo.activeSize.cx > 0 &&
+           mi[pi[i].targetInfo.modeInfoIdx].targetMode.targetVideoSignalInfo.activeSize.cy > 0,
+                "Expected non-zero height/width, got %ux%u\n",
+                mi[pi[i].targetInfo.modeInfoIdx].targetMode.targetVideoSignalInfo.activeSize.cx,
+                mi[pi[i].targetInfo.modeInfoIdx].targetMode.targetVideoSignalInfo.activeSize.cy);
+
+        if (flags == QDC_DATABASE_CURRENT)
+            ok(mi[pi[i].targetInfo.modeInfoIdx].targetMode.targetVideoSignalInfo.totalSize.cx == 0 &&
+               mi[pi[i].targetInfo.modeInfoIdx].targetMode.targetVideoSignalInfo.totalSize.cy == 0,
+                    "Expected zero height/width, got %ux%u\n",
+                    mi[pi[i].targetInfo.modeInfoIdx].targetMode.targetVideoSignalInfo.totalSize.cx,
+                    mi[pi[i].targetInfo.modeInfoIdx].targetMode.targetVideoSignalInfo.totalSize.cy);
+        else
+            ok(mi[pi[i].targetInfo.modeInfoIdx].targetMode.targetVideoSignalInfo.totalSize.cx > 0 &&
+               mi[pi[i].targetInfo.modeInfoIdx].targetMode.targetVideoSignalInfo.totalSize.cy > 0,
+                    "Expected non-zero height/width, got %ux%u\n",
+                    mi[pi[i].targetInfo.modeInfoIdx].targetMode.targetVideoSignalInfo.totalSize.cx,
+                    mi[pi[i].targetInfo.modeInfoIdx].targetMode.targetVideoSignalInfo.totalSize.cy);
     }
 }
 
@@ -1393,6 +1412,7 @@ static void test_QueryDisplayConfig(void)
     UINT32 paths, modes;
     DISPLAYCONFIG_PATH_INFO pi[10];
     DISPLAYCONFIG_MODE_INFO mi[20];
+    DISPLAYCONFIG_TOPOLOGY_ID topologyid;
     LONG ret;
 
     ret = pQueryDisplayConfig(QDC_ALL_PATHS, NULL, NULL, NULL, NULL, NULL);
@@ -1435,6 +1455,18 @@ static void test_QueryDisplayConfig(void)
     ret = pQueryDisplayConfig(0, &paths, pi, &modes, mi, NULL);
     ok(ret == ERROR_INVALID_PARAMETER, "got %d\n", ret);
 
+    paths = modes = 1;
+    ret = pQueryDisplayConfig(0xFF, &paths, pi, &modes, mi, NULL);
+    ok(ret == ERROR_INVALID_PARAMETER, "got %d\n", ret);
+
+    paths = modes = 1;
+    ret = pQueryDisplayConfig(QDC_DATABASE_CURRENT, &paths, pi, &modes, mi, NULL);
+    ok(ret == ERROR_INVALID_PARAMETER, "got %d\n", ret);
+
+    paths = modes = 1;
+    ret = pQueryDisplayConfig(QDC_ALL_PATHS, &paths, pi, &modes, mi, &topologyid);
+    ok(ret == ERROR_INVALID_PARAMETER, "got %d\n", ret);
+
     /* Below this point, test functionality that requires a WDDM driver on Windows */
     paths = modes = 1;
     memset(pi, 0xFF, sizeof(pi[0]));
@@ -1458,7 +1490,18 @@ static void test_QueryDisplayConfig(void)
     ok(!ret, "got %d\n", ret);
     ok(paths > 0 && modes > 0, "got %u, %u\n", paths, modes);
     if (!ret && paths > 0 && modes > 0)
-        test_QueryDisplayConfig_result(paths, pi, modes, mi);
+        test_QueryDisplayConfig_result(QDC_ONLY_ACTIVE_PATHS, paths, pi, modes, mi);
+
+    paths = ARRAY_SIZE(pi);
+    modes = ARRAY_SIZE(mi);
+    memset(pi, 0xFF, sizeof(pi));
+    memset(mi, 0xFF, sizeof(mi));
+    topologyid = 0xFF;
+    ret = pQueryDisplayConfig(QDC_DATABASE_CURRENT, &paths, pi, &modes, mi, &topologyid);
+    ok(!ret, "got %d\n", ret);
+    ok(topologyid != 0xFF, "expected topologyid to be set, got %d\n", topologyid);
+    if (!ret && paths > 0 && modes > 0)
+        test_QueryDisplayConfig_result(QDC_DATABASE_CURRENT, paths, pi, modes, mi);
 }
 
 static void test_DisplayConfigGetDeviceInfo(void)
-- 
2.26.2




More information about the wine-devel mailing list