1
2 #include "precomp.h"
3
4 #define SIZEOF_DEVMODEW_300_W 188
5 #define SIZEOF_DEVMODEW_400_W 212
6 #define SIZEOF_DEVMODEW_500_W 220
7
8 #define SIZEOF_DEVMODEW_300_A 124
9 #define SIZEOF_DEVMODEW_400_A 148
10 #define SIZEOF_DEVMODEW_500_A 156
11
START_TEST(EnumDisplaySettings)12 START_TEST(EnumDisplaySettings)
13 {
14 DEVMODEW dmW;
15 DEVMODEA dmA;
16 HDC icDisplay;
17
18 /* TODO: test with a printer driver */
19
20 icDisplay = CreateICW(L"DISPLAY", NULL, NULL, NULL);
21 ok(icDisplay != NULL, "\n");
22
23 dmW.dmDriverExtra = 0x7777;
24
25 /* Try ridiculous size */
26 dmW.dmSize = 0x8888;
27 ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dmW), "\n");
28 ok(dmW.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dmW.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
29 ok(dmW.dmSize == SIZEOF_DEVMODEW_300_W, "%d\n", dmW.dmSize);
30 ok(dmW.dmDriverExtra == 0, "%d\n", dmW.dmDriverExtra);
31
32 /* Try a tiny size */
33 dmW.dmSize = 4;
34 ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dmW), "\n");
35 ok(dmW.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dmW.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
36 ok(dmW.dmSize == SIZEOF_DEVMODEW_300_W, "%d\n", dmW.dmSize);
37
38 /* Something in between */
39 dmW.dmSize = (SIZEOF_DEVMODEW_300_W + SIZEOF_DEVMODEW_400_W) / 2 ;
40 ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dmW), "\n");
41 ok(dmW.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dmW.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
42 ok(dmW.dmSize == SIZEOF_DEVMODEW_300_W, "%d\n", dmW.dmSize);
43
44 /* WINVER < 0x0400 */
45 dmW.dmSize = SIZEOF_DEVMODEW_300_W;
46 ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dmW), "\n");
47 ok(dmW.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dmW.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
48 ok(dmW.dmSize == SIZEOF_DEVMODEW_300_W, "%d\n", dmW.dmSize);
49
50 /* WINVER < 0x0500 */
51 dmW.dmSize = SIZEOF_DEVMODEW_400_W;
52 ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dmW), "\n");
53 ok(dmW.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dmW.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
54 ok(dmW.dmSize == SIZEOF_DEVMODEW_300_W, "%d\n", dmW.dmSize);
55
56 /* "Modern" windows */
57 dmW.dmSize = SIZEOF_DEVMODEW_500_W;
58 ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dmW), "\n");
59 ok(dmW.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dmW.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
60 ok(dmW.dmSize == SIZEOF_DEVMODEW_300_W, "%d\n", dmW.dmSize);
61
62 DeleteDC(icDisplay);
63
64 icDisplay = CreateICA("DISPLAY", NULL, NULL, NULL);
65 ok(icDisplay != NULL, "\n");
66
67 dmA.dmDriverExtra = 0x7777;
68
69 /* Try ridiculous size */
70 dmA.dmSize = 0x8888;
71 ok(EnumDisplaySettingsA(NULL, ENUM_CURRENT_SETTINGS, &dmA), "\n");
72 ok(dmA.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dmA.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
73 ok(dmA.dmSize == SIZEOF_DEVMODEW_300_A, "%d\n", dmA.dmSize);
74 ok(dmA.dmDriverExtra == 0, "%d\n", dmA.dmDriverExtra);
75
76 /* Try a tiny size */
77 dmA.dmSize = 4;
78 ok(EnumDisplaySettingsA(NULL, ENUM_CURRENT_SETTINGS, &dmA), "\n");
79 ok(dmA.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dmA.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
80 ok(dmA.dmSize == SIZEOF_DEVMODEW_300_A, "%d\n", dmA.dmSize);
81
82 /* Something in between */
83 dmA.dmSize = (SIZEOF_DEVMODEW_300_A + SIZEOF_DEVMODEW_400_A) / 2 ;
84 ok(EnumDisplaySettingsA(NULL, ENUM_CURRENT_SETTINGS, &dmA), "\n");
85 ok(dmA.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dmA.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
86 ok(dmA.dmSize == SIZEOF_DEVMODEW_300_A, "%d\n", dmA.dmSize);
87
88 /* WINVER < 0x0400 */
89 dmA.dmSize = SIZEOF_DEVMODEW_300_A;
90 ok(EnumDisplaySettingsA(NULL, ENUM_CURRENT_SETTINGS, &dmA), "\n");
91 ok(dmA.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dmA.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
92 ok(dmA.dmSize == SIZEOF_DEVMODEW_300_A, "%d\n", dmA.dmSize);
93
94 /* WINVER < 0x0500 */
95 dmA.dmSize = SIZEOF_DEVMODEW_400_A;
96 ok(EnumDisplaySettingsA(NULL, ENUM_CURRENT_SETTINGS, &dmA), "\n");
97 ok(dmA.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dmA.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
98 ok(dmA.dmSize == SIZEOF_DEVMODEW_300_A, "%d\n", dmA.dmSize);
99
100 /* "Modern" windows */
101 dmA.dmSize = SIZEOF_DEVMODEW_500_A;
102 ok(EnumDisplaySettingsA(NULL, ENUM_CURRENT_SETTINGS, &dmA), "\n");
103 ok(dmA.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dmA.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
104 ok(dmA.dmSize == SIZEOF_DEVMODEW_300_A, "%d\n", dmA.dmSize);
105
106 DeleteDC(icDisplay);
107 }
108