2 * PROJECT: ReactOS api tests
3 * LICENSE: GPL - See COPYING in the top level directory
4 * PURPOSE: Test for NtGdiSetBitmapBits
5 * PROGRAMMERS: Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
10 START_TEST(NtGdiSetBitmapBits
)
12 BYTE Bits
[100] = {0,1,2,3,4,5,6,7,8,9};
18 SetLastError(0xDEADFACE);
19 ok_long(NtGdiSetBitmapBits(0, 0, 0), 0);
20 ok_long(GetLastError(), 0xDEADFACE);
22 /* Test NULL bitnap handle */
23 SetLastError(0xDEADFACE);
24 ok_long(NtGdiSetBitmapBits(0, 5, Bits
), 0);
25 ok_long(GetLastError(), ERROR_INVALID_HANDLE
);
27 /* Test invalid bitmap handle */
28 hBitmap
= (HBITMAP
)CreatePen(PS_SOLID
, 1, RGB(1,2,3));
29 SetLastError(0xDEADFACE);
30 ok_long(NtGdiSetBitmapBits(hBitmap
, 5, Bits
), 0);
31 ok_long(GetLastError(), ERROR_INVALID_HANDLE
);
32 DeleteObject(hBitmap
);
34 hBitmap
= CreateBitmap(3, 3, 1, 8, NULL
);
35 ok(hBitmap
!= NULL
, "hBitmap was NULL.\n");
37 /* test NULL pointer and count buffer size != 0 */
38 SetLastError(0xDEADFACE);
39 ok_long(NtGdiSetBitmapBits(hBitmap
, 5, NULL
), 0);
40 ok_long(GetLastError(), 0xDEADFACE);
42 /* test NULL pointer and buffer size == 0*/
43 SetLastError(0xDEADFACE);
44 ok_long(NtGdiSetBitmapBits(hBitmap
, 0, NULL
), 0);
45 ok_long(GetLastError(), 0xDEADFACE);
47 /* test bad pointer */
48 SetLastError(0xDEADFACE);
49 ok_long(NtGdiSetBitmapBits(hBitmap
, 5, (PBYTE
)0x500), 0);
50 ok_long(GetLastError(), 0xDEADFACE);
52 /* Test if we can set a number of bytes between lines */
53 SetLastError(0xDEADFACE);
54 ok_long(NtGdiSetBitmapBits(hBitmap
, 5, Bits
), 5);
55 ok_long(GetLastError(), 0xDEADFACE);
58 SetLastError(0xDEADFACE);
59 ok_long(NtGdiSetBitmapBits(hBitmap
, 4, Bits
+1), 4);
60 ok_long(GetLastError(), 0xDEADFACE);
62 /* Test 1 byte too much */
63 SetLastError(0xDEADFACE);
64 ok_long(NtGdiSetBitmapBits(hBitmap
, 10, Bits
), 10);
65 ok_long(GetLastError(), 0xDEADFACE);
67 /* Test one row too much */
68 SetLastError(0xDEADFACE);
69 ok_long(NtGdiSetBitmapBits(hBitmap
, 12, Bits
), 12);
70 ok_long(GetLastError(), 0xDEADFACE);
72 SetLastError(0xDEADFACE);
73 ok_long(NtGdiSetBitmapBits(hBitmap
, 13, Bits
), 12);
74 ok_long(GetLastError(), 0xDEADFACE);
76 SetLastError(0xDEADFACE);
77 ok_long(NtGdiSetBitmapBits(hBitmap
, 100, Bits
), 12);
78 ok_long(GetLastError(), 0xDEADFACE);
80 /* Test huge bytes count */
81 SetLastError(0xDEADFACE);
82 ok_long(NtGdiSetBitmapBits(hBitmap
, 12345678, Bits
), 0);
83 ok_long(GetLastError(), 0xDEADFACE);
85 SetLastError(0xDEADFACE);
86 ok_long(NtGdiSetBitmapBits(hBitmap
, 0x100, Bits
), 0xC);
87 ok_long(GetLastError(), 0xDEADFACE);
89 SetLastError(0xDEADFACE);
90 ok_long(NtGdiSetBitmapBits(hBitmap
, 564, Bits
), 0xC);
91 ok_long(GetLastError(), 0xDEADFACE);
93 SetLastError(0xDEADFACE);
94 ok_long(NtGdiSetBitmapBits(hBitmap
, 565, Bits
), 0);
95 ok_long(GetLastError(), 0xDEADFACE);
98 BYTE dummy
[256] = { 1 };
100 SetLastError(0xDEADFACE);
101 ok_long(NtGdiSetBitmapBits(hBitmap
, 564, Bits
), 0xC);
102 ok_long(GetLastError(), 0xDEADFACE);
104 SetLastError(0xDEADFACE);
105 ok_long(NtGdiSetBitmapBits(hBitmap
, 565, Bits
), 0);
106 ok_long(GetLastError(), 0xDEADFACE);
111 SetLastError(0xDEADFACE);
112 ok_long(NtGdiSetBitmapBits(hBitmap
, 0x7FFF, Bits
), 0);
113 ok_long(GetLastError(), 0xDEADFACE);
115 SetLastError(0xDEADFACE);
116 ok_long(NtGdiSetBitmapBits(hBitmap
, 0x8000, Bits
), 0);
117 ok_long(GetLastError(), 0xDEADFACE);
119 SetLastError(0xDEADFACE);
120 ok_long(NtGdiSetBitmapBits(hBitmap
, 0xFFFF, Bits
), 0);
121 ok_long(GetLastError(), 0xDEADFACE);
123 SetLastError(0xDEADFACE);
124 ok_long(NtGdiSetBitmapBits(hBitmap
, 0x10000, Bits
), 0);
125 ok_long(GetLastError(), 0xDEADFACE);
127 /* Test negative bytes count */
128 SetLastError(0xDEADFACE);
129 ok_long(NtGdiSetBitmapBits(hBitmap
, -5, Bits
), 0);
130 ok_long(GetLastError(), 0xDEADFACE);
132 DeleteObject(hBitmap
);
134 /* ------------------------- */
136 hBitmap
= CreateBitmap(16, 16, 1, 1, NULL
);
137 ok(hBitmap
!= NULL
, "hBitmap was NULL.\n");
139 FillMemory(Bits
, sizeof(Bits
), 0x55);
140 SetLastError(0xDEADFACE);
141 ok_long(NtGdiGetBitmapBits(hBitmap
, 0, Bits
), 0);
142 ok_long(GetLastError(), 0xDEADFACE);
143 ok_int(Bits
[0], 0x55);
145 FillMemory(Bits
, sizeof(Bits
), 0x55);
147 SetLastError(0xDEADFACE);
148 ok_long(NtGdiGetBitmapBits(hBitmap
, 1, Bits
), 1);
149 ok_long(GetLastError(), 0xDEADFACE);
151 ok_int(Bits
[1], 0x55);
153 FillMemory(Bits
, sizeof(Bits
), 0x55);
154 SetLastError(0xDEADFACE);
155 ok_long(NtGdiGetBitmapBits(hBitmap
, 2, Bits
), 2);
156 ok_long(GetLastError(), 0xDEADFACE);
159 ok_int(Bits
[2], 0x55);
161 FillMemory(Bits
, sizeof(Bits
), 0x33);
162 SetLastError(0xDEADFACE);
163 ok_long(NtGdiSetBitmapBits(hBitmap
, 10, Bits
), 10);
164 ok_long(GetLastError(), 0xDEADFACE);
166 FillMemory(Bits
, sizeof(Bits
), 0xAA);
167 SetLastError(0xDEADFACE);
168 ok_long(NtGdiSetBitmapBits(hBitmap
, 1, Bits
), 1);
169 ok_long(GetLastError(), 0xDEADFACE);
170 FillMemory(Bits
, sizeof(Bits
), 0x55);
171 SetLastError(0xDEADFACE);
172 ok_long(NtGdiGetBitmapBits(hBitmap
, 1, Bits
), 1);
173 ok_long(GetLastError(), 0xDEADFACE);
174 ok_int(Bits
[0], 0xAA);
175 ok_int(Bits
[1], 0x55);
176 SetLastError(0xDEADFACE);
177 ok_long(NtGdiGetBitmapBits(hBitmap
, 2, Bits
), 2);
178 ok_long(GetLastError(), 0xDEADFACE);
179 ok_int(Bits
[0], 0xAA);
180 ok_int(Bits
[1], 0x33);
181 ok_int(Bits
[2], 0x55);
183 FillMemory(Bits
, sizeof(Bits
), 0xAA);
184 SetLastError(0xDEADFACE);
185 ok_long(NtGdiSetBitmapBits(hBitmap
, 2, Bits
), 2);
186 ok_long(GetLastError(), 0xDEADFACE);
187 FillMemory(Bits
, sizeof(Bits
), 0x55);
188 SetLastError(0xDEADFACE);
189 ok_long(NtGdiGetBitmapBits(hBitmap
, 2, Bits
), 2);
190 ok_long(GetLastError(), 0xDEADFACE);
191 ok_int(Bits
[0], 0xAA);
192 ok_int(Bits
[1], 0xAA);
193 ok_int(Bits
[2], 0x55);
194 SetLastError(0xDEADFACE);
195 ok_long(NtGdiGetBitmapBits(hBitmap
, 3, Bits
), 3);
196 ok_long(GetLastError(), 0xDEADFACE);
197 ok_int(Bits
[0], 0xAA);
198 ok_int(Bits
[1], 0xAA);
199 ok_int(Bits
[2], 0x33);
200 ok_int(Bits
[3], 0x55);
202 FillMemory(Bits
, sizeof(Bits
), 0xAA);
203 SetLastError(0xDEADFACE);
204 ok_long(NtGdiSetBitmapBits(hBitmap
, 3, Bits
), 3);
205 ok_long(GetLastError(), 0xDEADFACE);
206 FillMemory(Bits
, sizeof(Bits
), 0x55);
207 SetLastError(0xDEADFACE);
208 ok_long(NtGdiGetBitmapBits(hBitmap
, 3, Bits
), 3);
209 ok_long(GetLastError(), 0xDEADFACE);
210 ok_int(Bits
[0], 0xAA);
211 ok_int(Bits
[1], 0xAA);
212 ok_int(Bits
[2], 0xAA);
213 ok_int(Bits
[3], 0x55);
214 SetLastError(0xDEADFACE);
215 ok_long(NtGdiGetBitmapBits(hBitmap
, 4, Bits
), 4);
216 ok_long(GetLastError(), 0xDEADFACE);
217 ok_int(Bits
[0], 0xAA);
218 ok_int(Bits
[1], 0xAA);
219 ok_int(Bits
[2], 0xAA);
220 ok_int(Bits
[3], 0x33);
221 ok_int(Bits
[4], 0x55);
223 SetLastError(0xDEADFACE);
224 ok_long(NtGdiSetBitmapBits(hBitmap
, 564, Bits
), 0x20);
225 ok_long(GetLastError(), 0xDEADFACE);
227 SetLastError(0xDEADFACE);
228 ok_long(NtGdiSetBitmapBits(hBitmap
, 565, Bits
), 0);
229 ok_long(GetLastError(), 0xDEADFACE);
231 DeleteObject(hBitmap
);
233 /* ------------------------- */
235 hDC
= CreateCompatibleDC(NULL
);
237 ZeroMemory(&bmi
, sizeof(bmi
));
238 bmi
.bmiHeader
.biSize
= sizeof(BITMAPINFOHEADER
);
239 bmi
.bmiHeader
.biWidth
= 15;
240 bmi
.bmiHeader
.biHeight
= 15; /* positive */
241 bmi
.bmiHeader
.biPlanes
= 1;
242 bmi
.bmiHeader
.biBitCount
= 24;
243 hBitmap
= CreateDIBSection(hDC
, &bmi
, DIB_RGB_COLORS
, &pvBits
, NULL
, 0);
244 ok(hBitmap
!= NULL
, "hBitmap was NULL.\n");
246 FillMemory(Bits
, sizeof(Bits
), 0x55);
247 SetLastError(0xDEADFACE);
248 ok_long(NtGdiGetBitmapBits(hBitmap
, 0, Bits
), 0);
249 ok_long(GetLastError(), 0xDEADFACE);
250 ok_int(Bits
[0], 0x55);
252 FillMemory(Bits
, sizeof(Bits
), 0x55);
253 SetLastError(0xDEADFACE);
254 ok_long(NtGdiGetBitmapBits(hBitmap
, 1, Bits
), 1);
255 ok_long(GetLastError(), 0xDEADFACE);
257 ok_int(Bits
[1], 0x55);
259 FillMemory(Bits
, sizeof(Bits
), 0x55);
260 SetLastError(0xDEADFACE);
261 ok_long(NtGdiGetBitmapBits(hBitmap
, 2, Bits
), 2);
262 ok_long(GetLastError(), 0xDEADFACE);
265 ok_int(Bits
[2], 0x55);
267 FillMemory(Bits
, sizeof(Bits
), 0x33);
268 SetLastError(0xDEADFACE);
269 ok_long(NtGdiSetBitmapBits(hBitmap
, 10, Bits
), 10);
270 ok_long(GetLastError(), 0xDEADFACE);
272 FillMemory(Bits
, sizeof(Bits
), 0xAA);
273 SetLastError(0xDEADFACE);
274 ok_long(NtGdiSetBitmapBits(hBitmap
, 1, Bits
), 1);
275 ok_long(GetLastError(), 0xDEADFACE);
276 FillMemory(Bits
, sizeof(Bits
), 0x55);
277 SetLastError(0xDEADFACE);
278 ok_long(NtGdiGetBitmapBits(hBitmap
, 1, Bits
), 1);
279 ok_long(GetLastError(), 0xDEADFACE);
280 ok_int(Bits
[0], 0xAA);
281 ok_int(Bits
[1], 0x55);
282 SetLastError(0xDEADFACE);
283 ok_long(NtGdiGetBitmapBits(hBitmap
, 2, Bits
), 2);
284 ok_long(GetLastError(), 0xDEADFACE);
285 ok_int(Bits
[0], 0xAA);
286 ok_int(Bits
[1], 0x33);
287 ok_int(Bits
[2], 0x55);
289 FillMemory(Bits
, sizeof(Bits
), 0xAA);
290 SetLastError(0xDEADFACE);
291 ok_long(NtGdiSetBitmapBits(hBitmap
, 2, Bits
), 2);
292 ok_long(GetLastError(), 0xDEADFACE);
293 FillMemory(Bits
, sizeof(Bits
), 0x55);
294 SetLastError(0xDEADFACE);
295 ok_long(NtGdiGetBitmapBits(hBitmap
, 2, Bits
), 2);
296 ok_long(GetLastError(), 0xDEADFACE);
297 ok_int(Bits
[0], 0xAA);
298 ok_int(Bits
[1], 0xAA);
299 ok_int(Bits
[2], 0x55);
300 SetLastError(0xDEADFACE);
301 ok_long(NtGdiGetBitmapBits(hBitmap
, 3, Bits
), 3);
302 ok_long(GetLastError(), 0xDEADFACE);
303 ok_int(Bits
[0], 0xAA);
304 ok_int(Bits
[1], 0xAA);
305 ok_int(Bits
[2], 0x33);
306 ok_int(Bits
[3], 0x55);
308 FillMemory(Bits
, sizeof(Bits
), 0xAA);
309 SetLastError(0xDEADFACE);
310 ok_long(NtGdiSetBitmapBits(hBitmap
, 3, Bits
), 3);
311 ok_long(GetLastError(), 0xDEADFACE);
312 FillMemory(Bits
, sizeof(Bits
), 0x55);
313 SetLastError(0xDEADFACE);
314 ok_long(NtGdiGetBitmapBits(hBitmap
, 3, Bits
), 3);
315 ok_long(GetLastError(), 0xDEADFACE);
316 ok_int(Bits
[0], 0xAA);
317 ok_int(Bits
[1], 0xAA);
318 ok_int(Bits
[2], 0xAA);
319 ok_int(Bits
[3], 0x55);
320 SetLastError(0xDEADFACE);
321 ok_long(NtGdiGetBitmapBits(hBitmap
, 4, Bits
), 4);
322 ok_long(GetLastError(), 0xDEADFACE);
323 ok_int(Bits
[0], 0xAA);
324 ok_int(Bits
[1], 0xAA);
325 ok_int(Bits
[2], 0xAA);
326 ok_int(Bits
[3], 0x33);
327 ok_int(Bits
[4], 0x55);
329 SetLastError(0xDEADFACE);
330 ok_long(NtGdiSetBitmapBits(hBitmap
, 564, Bits
), 0x234);
331 ok_long(GetLastError(), 0xDEADFACE);
333 SetLastError(0xDEADFACE);
334 ok_long(NtGdiSetBitmapBits(hBitmap
, 565, Bits
), 0);
335 ok_long(GetLastError(), 0xDEADFACE);
337 DeleteObject(hBitmap
);
340 /* ------------------------- */
342 hDC
= CreateCompatibleDC(NULL
);
344 ZeroMemory(&bmi
, sizeof(bmi
));
345 bmi
.bmiHeader
.biSize
= sizeof(BITMAPINFOHEADER
);
346 bmi
.bmiHeader
.biWidth
= 15;
347 bmi
.bmiHeader
.biHeight
= -15; /* negative */
348 bmi
.bmiHeader
.biPlanes
= 1;
349 bmi
.bmiHeader
.biBitCount
= 24;
350 hBitmap
= CreateDIBSection(hDC
, &bmi
, DIB_RGB_COLORS
, &pvBits
, NULL
, 0);
351 ok(hBitmap
!= NULL
, "hBitmap was NULL.\n");
353 FillMemory(Bits
, sizeof(Bits
), 0x55);
354 SetLastError(0xDEADFACE);
355 ok_long(NtGdiGetBitmapBits(hBitmap
, 0, Bits
), 0);
356 ok_long(GetLastError(), 0xDEADFACE);
357 ok_int(Bits
[0], 0x55);
359 FillMemory(Bits
, sizeof(Bits
), 0x55);
360 SetLastError(0xDEADFACE);
361 ok_long(NtGdiGetBitmapBits(hBitmap
, 1, Bits
), 1);
362 ok_long(GetLastError(), 0xDEADFACE);
364 ok_int(Bits
[1], 0x55);
366 FillMemory(Bits
, sizeof(Bits
), 0x55);
367 SetLastError(0xDEADFACE);
368 ok_long(NtGdiGetBitmapBits(hBitmap
, 2, Bits
), 2);
369 ok_long(GetLastError(), 0xDEADFACE);
372 ok_int(Bits
[2], 0x55);
374 FillMemory(Bits
, sizeof(Bits
), 0x33);
375 SetLastError(0xDEADFACE);
376 ok_long(NtGdiSetBitmapBits(hBitmap
, 10, Bits
), 10);
377 ok_long(GetLastError(), 0xDEADFACE);
379 FillMemory(Bits
, sizeof(Bits
), 0xAA);
380 SetLastError(0xDEADFACE);
381 ok_long(NtGdiSetBitmapBits(hBitmap
, 1, Bits
), 1);
382 ok_long(GetLastError(), 0xDEADFACE);
383 FillMemory(Bits
, sizeof(Bits
), 0x55);
384 SetLastError(0xDEADFACE);
385 ok_long(NtGdiGetBitmapBits(hBitmap
, 1, Bits
), 1);
386 ok_long(GetLastError(), 0xDEADFACE);
387 ok_int(Bits
[0], 0xAA);
388 ok_int(Bits
[1], 0x55);
389 SetLastError(0xDEADFACE);
390 ok_long(NtGdiGetBitmapBits(hBitmap
, 2, Bits
), 2);
391 ok_long(GetLastError(), 0xDEADFACE);
392 ok_int(Bits
[0], 0xAA);
393 ok_int(Bits
[1], 0x33);
394 ok_int(Bits
[2], 0x55);
396 FillMemory(Bits
, sizeof(Bits
), 0xAA);
397 SetLastError(0xDEADFACE);
398 ok_long(NtGdiSetBitmapBits(hBitmap
, 2, Bits
), 2);
399 ok_long(GetLastError(), 0xDEADFACE);
400 FillMemory(Bits
, sizeof(Bits
), 0x55);
401 SetLastError(0xDEADFACE);
402 ok_long(NtGdiGetBitmapBits(hBitmap
, 2, Bits
), 2);
403 ok_long(GetLastError(), 0xDEADFACE);
404 ok_int(Bits
[0], 0xAA);
405 ok_int(Bits
[1], 0xAA);
406 ok_int(Bits
[2], 0x55);
407 SetLastError(0xDEADFACE);
408 ok_long(NtGdiGetBitmapBits(hBitmap
, 3, Bits
), 3);
409 ok_long(GetLastError(), 0xDEADFACE);
410 ok_int(Bits
[0], 0xAA);
411 ok_int(Bits
[1], 0xAA);
412 ok_int(Bits
[2], 0x33);
413 ok_int(Bits
[3], 0x55);
415 FillMemory(Bits
, sizeof(Bits
), 0xAA);
416 SetLastError(0xDEADFACE);
417 ok_long(NtGdiSetBitmapBits(hBitmap
, 3, Bits
), 3);
418 ok_long(GetLastError(), 0xDEADFACE);
419 FillMemory(Bits
, sizeof(Bits
), 0x55);
420 SetLastError(0xDEADFACE);
421 ok_long(NtGdiGetBitmapBits(hBitmap
, 3, Bits
), 3);
422 ok_long(GetLastError(), 0xDEADFACE);
423 ok_int(Bits
[0], 0xAA);
424 ok_int(Bits
[1], 0xAA);
425 ok_int(Bits
[2], 0xAA);
426 ok_int(Bits
[3], 0x55);
427 SetLastError(0xDEADFACE);
428 ok_long(NtGdiGetBitmapBits(hBitmap
, 4, Bits
), 4);
429 ok_long(GetLastError(), 0xDEADFACE);
430 ok_int(Bits
[0], 0xAA);
431 ok_int(Bits
[1], 0xAA);
432 ok_int(Bits
[2], 0xAA);
433 ok_int(Bits
[3], 0x33);
434 ok_int(Bits
[4], 0x55);
436 SetLastError(0xDEADFACE);
437 ok_long(NtGdiSetBitmapBits(hBitmap
, 564, Bits
), 0x234);
438 ok_long(GetLastError(), 0xDEADFACE);
440 SetLastError(0xDEADFACE);
441 ok_long(NtGdiSetBitmapBits(hBitmap
, 565, Bits
), 0);
442 ok_long(GetLastError(), 0xDEADFACE);
444 DeleteObject(hBitmap
);