[REACTOS]
[reactos.git] / rostests / apitests / user32 / EnumDisplaySettings.c
1 #include <apitest.h>
2
3 #include <wingdi.h>
4 #include <winuser.h>
5
6 #define SIZEOF_DEVMODEW_300 188
7 #define SIZEOF_DEVMODEW_400 212
8 #define SIZEOF_DEVMODEW_500 220
9
10 START_TEST(EnumDisplaySettings)
11 {
12 DEVMODEW dm;
13 HDC icDisplay;
14
15 /* TODO: test with a printer driver */
16
17 icDisplay = CreateICW(L"DISPLAY", NULL, NULL, NULL);
18 ok(icDisplay != NULL, "\n");
19
20 dm.dmDriverExtra = 0x7777;
21
22 /* Try ridiculous size */
23 dm.dmSize = 0x8888;
24 ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm), "\n");
25 ok(dm.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dm.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
26 ok(dm.dmSize == SIZEOF_DEVMODEW_300, "%d\n", dm.dmSize);
27 ok(dm.dmDriverExtra == 0, "%d\n", dm.dmDriverExtra);
28
29 /* Try a tiny size */
30 dm.dmSize = 4;
31 ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm), "\n");
32 ok(dm.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dm.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
33 ok(dm.dmSize == SIZEOF_DEVMODEW_300, "%d\n", dm.dmSize);
34
35 /* Something in between */
36 dm.dmSize = (SIZEOF_DEVMODEW_300 + SIZEOF_DEVMODEW_400) / 2 ;
37 ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm), "\n");
38 ok(dm.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dm.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
39 ok(dm.dmSize == SIZEOF_DEVMODEW_300, "%d\n", dm.dmSize);
40
41 /* WINVER < 0x0400 */
42 dm.dmSize = SIZEOF_DEVMODEW_300;
43 ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm), "\n");
44 ok(dm.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dm.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
45 ok(dm.dmSize == SIZEOF_DEVMODEW_300, "%d\n", dm.dmSize);
46
47 /* WINVER < 0x0500 */
48 dm.dmSize = SIZEOF_DEVMODEW_400;
49 ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm), "\n");
50 ok(dm.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dm.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
51 ok(dm.dmSize == SIZEOF_DEVMODEW_300, "%d\n", dm.dmSize);
52
53 /* "Modern" windows */
54 dm.dmSize = SIZEOF_DEVMODEW_500;
55 ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm), "\n");
56 ok(dm.dmBitsPerPel == GetDeviceCaps(icDisplay, BITSPIXEL), "%lu, should be %d.\n", dm.dmBitsPerPel, GetDeviceCaps(icDisplay, BITSPIXEL));
57 ok(dm.dmSize == SIZEOF_DEVMODEW_300, "%d\n", dm.dmSize);
58
59 DeleteDC(icDisplay);
60 }