[RAPPS] Stopped GCC whining (fixed GCC build)
[reactos.git] / rostests / apitests / user32 / LookupIconIdFromDirectoryEx.c
1
2 #include <apitest.h>
3
4 #include <wingdi.h>
5 #include <winuser.h>
6
7 #include "resource.h"
8
9 START_TEST(LookupIconIdFromDirectoryEx)
10 {
11 HRSRC hResource;
12 HGLOBAL hMem;
13 HMODULE hMod;
14 int wResId;
15 DEVMODEW dm;
16 DWORD dwOrigBpp;
17 UINT i;
18 BYTE* lpResource;
19
20 /* This tests assumes that default icon size is 32x32 */
21
22 struct
23 {
24 DWORD bpp;
25 int wResId;
26 int cxDesired;
27 int cyDesired;
28 UINT flags;
29 }
30 TestData[] =
31 {
32 {8, 1, 0, 0, 0},
33 {8, 1, 48, 48, 0},
34 {8, 2, 32, 32, 0},
35 {8, 3, 24, 24, 0},
36 {8, 4, 16, 16, 0},
37 {8, 1, 0, 0, LR_MONOCHROME},
38 {8, 1, 48, 48, LR_MONOCHROME},
39 {8, 2, 32, 32, LR_MONOCHROME},
40 {8, 3, 24, 24, LR_MONOCHROME},
41 {8, 4, 16, 16, LR_MONOCHROME},
42 {8, 2, 0, 0, LR_DEFAULTSIZE},
43 {8, 1, 48, 48, LR_DEFAULTSIZE},
44 /* Non exact sizes */
45 {8, 1, 41, 41, 0},
46 {8, 1, 40, 40, 0},
47 /* Non square sizes */
48 {8, 1, 16, 48, 0},
49 {8, 1, 48, 16, 0},
50 {16, 5, 0, 0, 0},
51 {16, 5, 48, 48, 0},
52 {16, 6, 32, 32, 0},
53 {16, 7, 24, 24, 0},
54 {16, 1, 0, 0, LR_MONOCHROME},
55 {16, 1, 48, 48, LR_MONOCHROME},
56 {16, 2, 32, 32, LR_MONOCHROME},
57 {16, 3, 24, 24, LR_MONOCHROME},
58 {16, 4, 16, 16, LR_MONOCHROME},
59 {16, 6, 0, 0, LR_DEFAULTSIZE},
60 {16, 5, 48, 48, LR_DEFAULTSIZE},
61 {24, 5, 0, 0, 0},
62 {24, 5, 48, 48, 0},
63 {24, 6, 32, 32, 0},
64 {24, 7, 24, 24, 0},
65 {24, 8, 16, 16, 0},
66 {16, 8, 16, 16, 0},
67 {24, 1, 0, 0, LR_MONOCHROME},
68 {24, 1, 48, 48, LR_MONOCHROME},
69 {24, 2, 32, 32, LR_MONOCHROME},
70 {24, 3, 24, 24, LR_MONOCHROME},
71 {24, 4, 16, 16, LR_MONOCHROME},
72 {24, 6, 0, 0, LR_DEFAULTSIZE},
73 {24, 5, 48, 48, LR_DEFAULTSIZE},
74 {32, 9, 0, 0, 0},
75 {32, 9, 48, 48, 0},
76 {32, 10, 32, 32, 0},
77 {32, 11, 24, 24, 0},
78 {32, 12, 16, 16, 0},
79 {32, 1, 0, 0, LR_MONOCHROME},
80 {32, 1, 48, 48, LR_MONOCHROME},
81 {32, 2, 32, 32, LR_MONOCHROME},
82 {32, 3, 24, 24, LR_MONOCHROME},
83 {32, 4, 16, 16, LR_MONOCHROME},
84 {32, 10, 0, 0, LR_DEFAULTSIZE},
85 {32, 9, 48, 48, LR_DEFAULTSIZE},
86 };
87
88 hMod = GetModuleHandle(NULL);
89 ok(hMod != NULL, "\n");
90 /* Find our cursor directory resource */
91 hResource = FindResourceA(hMod,
92 MAKEINTRESOURCE(IDI_TEST),
93 RT_GROUP_ICON);
94 ok(hResource != NULL, "\n");
95
96 hMem = LoadResource(hMod, hResource);
97 ok(hMem != NULL, "\n");
98
99 lpResource = LockResource(hMem);
100 ok(lpResource != NULL, "\n");
101
102 dm.dmSize = sizeof(dm);
103 dm.dmDriverExtra = 0;
104
105 ok(EnumDisplaySettingsW(NULL, ENUM_CURRENT_SETTINGS, &dm), "\n");
106
107 dwOrigBpp = dm.dmBitsPerPel;
108
109 for (i = 0; i < sizeof(TestData)/sizeof(TestData[0]); i++)
110 {
111 dm.dmBitsPerPel = TestData[i].bpp;
112 if (ChangeDisplaySettingsExW(NULL, &dm, NULL, 0, NULL) != DISP_CHANGE_SUCCESSFUL)
113 {
114 skip("Unable to change bpp to %lu.\n", dm.dmBitsPerPel);
115 continue;
116 }
117 wResId = LookupIconIdFromDirectoryEx(lpResource, TRUE, TestData[i].cxDesired, TestData[i].cyDesired, TestData[i].flags);
118 ok(wResId == TestData[i].wResId, "Got %d, expected %d for %dx%dx%lu, flags %x.\n",
119 wResId,
120 TestData[i].wResId,
121 TestData[i].cxDesired,
122 TestData[i].cyDesired,
123 TestData[i].bpp,
124 TestData[i].flags);
125 }
126
127 /* Restore */
128 dm.dmBitsPerPel = dwOrigBpp;
129 ok(ChangeDisplaySettingsExW(NULL, &dm, NULL, 0, NULL) == DISP_CHANGE_SUCCESSFUL, "\n");
130
131 FreeResource(hMem);
132 }