test cases for resolution switching

Alex Pasadyn ajp at mail.utexas.edu
Wed Feb 4 20:38:59 CST 2004


ChangeLog:
- Add some basic tests for resolution switching


Note that these tests will fail without my sysmetrics patch from a few 
days ago.

-ajp

-------------- next part --------------
Index: dlls/user/tests/Makefile.in
===================================================================
RCS file: /home/wine/wine/dlls/user/tests/Makefile.in,v
retrieving revision 1.7
diff -u -r1.7 Makefile.in
--- dlls/user/tests/Makefile.in	9 Jan 2004 00:36:51 -0000	1.7
+++ dlls/user/tests/Makefile.in	5 Feb 2004 02:28:09 -0000
@@ -7,6 +7,7 @@
 
 CTESTS = \
 	class.c \
+	displaysettings.c \
 	generated.c \
 	input.c \
 	listbox.c \
--- /dev/null	2003-01-30 04:24:37.000000000 -0600
+++ dlls/user/tests/displaysettings.c	2004-02-04 20:20:12.000000000 -0600
@@ -0,0 +1,77 @@
+#include <windows.h>
+
+#include "wine/test.h"
+
+static void test_enum_modes(void)
+{
+    DEVMODE DevMode;
+    unsigned int i = 0;
+
+    DevMode.dmSize = sizeof(DEVMODE);
+    DevMode.dmDriverExtra = 0;
+
+    while (EnumDisplaySettings(NULL, i, &DevMode)) {
+        i++;
+    }
+    ok(i, "There should always be at least one mode");
+}
+
+static void test_change_modes(void)
+{
+    DEVMODE DevMode;
+    DEVMODE CurrentDevMode;
+    unsigned int i = 0;
+    LONG rc;
+    int smx, smy;
+    RECT r;
+
+    DevMode.dmSize = sizeof(DEVMODE);
+    DevMode.dmDriverExtra = 0;
+    CurrentDevMode.dmSize = sizeof(DEVMODE);
+    CurrentDevMode.dmDriverExtra = 0;
+
+    while (EnumDisplaySettings(NULL, i, &DevMode)) {
+        /* count the mode*/
+        i++;
+        /* set the mode*/
+        rc = ChangeDisplaySettings(&DevMode, 0);
+        ok(rc == DISP_CHANGE_SUCCESSFUL, 
+           "Mode change was not successful: rc=%ld", rc);
+        /* read the current mode back*/
+        rc = EnumDisplaySettings(NULL, (DWORD)-1, &CurrentDevMode);
+        ok(rc, "Get current mode failed");
+        /* compare requested size against current size */
+        ok(DevMode.dmPelsWidth==CurrentDevMode.dmPelsWidth, 
+           "width requested (%ld) does not match current (%ld)", 
+           DevMode.dmPelsWidth, CurrentDevMode.dmPelsWidth);
+        ok(DevMode.dmPelsHeight==CurrentDevMode.dmPelsHeight, 
+           "height requested (%ld) does not match current (%ld)", 
+           DevMode.dmPelsHeight, CurrentDevMode.dmPelsHeight);
+        /* get screen size from sysmetrics */
+        smx = GetSystemMetrics(SM_CXSCREEN);
+        smy = GetSystemMetrics(SM_CYSCREEN);
+        /* compare requested size against current size */
+        ok(DevMode.dmPelsWidth==smx, 
+           "width requested (%ld) does not match sysmetrics (%d)", 
+           DevMode.dmPelsWidth, smx);
+        ok(DevMode.dmPelsHeight==smy, 
+           "height requested (%ld) does not match sysmetrics (%d)", 
+           DevMode.dmPelsHeight, smy);
+    }
+    ok(i, "There should always be at least one mode");
+}
+
+static void test_reset_mode(void)
+{
+    LONG rc;
+    rc = ChangeDisplaySettings(NULL, 0);
+    ok(rc == DISP_CHANGE_SUCCESSFUL, 
+       "Reset to current mode was not successful: rc=%ld", rc);
+}
+
+START_TEST(displaysettings)
+{
+    test_enum_modes();
+    test_change_modes();
+    test_reset_mode();
+}


More information about the wine-patches mailing list