1 /* 2 * PROJECT: ReactOS api tests 3 * LICENSE: GPL - See COPYING in the top level directory 4 * PURPOSE: Test for NtGdiGetBitmapBits 5 * PROGRAMMERS: 6 */ 7 8 #include <win32nt.h> 9 10 START_TEST(NtGdiGetBitmapBits) 11 { 12 BYTE Bits[50] = {0,1,2,3,4,5,6,7,8,9}; 13 HBITMAP hBitmap; 14 15 SetLastError(ERROR_SUCCESS); 16 ok_long(NtGdiGetBitmapBits(0, 0, 0), 0); 17 ok_long(GetLastError(), ERROR_INVALID_HANDLE); 18 19 /* Test NULL bitmap handle */ 20 SetLastError(ERROR_SUCCESS); 21 ok_long(NtGdiGetBitmapBits(0, 5, Bits), 0); 22 ok_long(GetLastError(), ERROR_INVALID_HANDLE); 23 24 /* Test invalid bitmap handle */ 25 hBitmap = (HBITMAP)CreatePen(PS_SOLID, 1, RGB(1,2,3)); 26 SetLastError(ERROR_SUCCESS); 27 ok_long(NtGdiGetBitmapBits(hBitmap, 5, Bits), 0); 28 ok_long(GetLastError(), ERROR_INVALID_HANDLE); 29 DeleteObject(hBitmap); 30 31 hBitmap = CreateBitmap(3, 3, 1, 8, NULL); 32 SetLastError(ERROR_SUCCESS); 33 34 /* test NULL pointer and count buffer size != 0 */ 35 ok_long(NtGdiGetBitmapBits(hBitmap, 5, NULL), 12); 36 37 /* test NULL pointer and buffer size == 0*/ 38 ok_long(NtGdiGetBitmapBits(hBitmap, 0, NULL), 12); 39 40 /* test bad pointer */ 41 ok_long(NtGdiGetBitmapBits(hBitmap, 5, (PBYTE)0x500), 0); 42 43 /* Test if we can set a number of bytes between lines */ 44 ok_long(NtGdiGetBitmapBits(hBitmap, 5, Bits), 5); 45 46 /* Test alignment */ 47 ok_long(NtGdiGetBitmapBits(hBitmap, 4, Bits+1), 4); 48 49 /* Test 1 byte too much */ 50 ok_long(NtGdiGetBitmapBits(hBitmap, 10, Bits), 10); 51 52 /* Test one row too much */ 53 ok_long(NtGdiGetBitmapBits(hBitmap, 12, Bits), 12); 54 55 ok_long(NtGdiGetBitmapBits(hBitmap, 13, Bits), 12); 56 57 ok_long(NtGdiGetBitmapBits(hBitmap, 100, Bits), 12); 58 59 /* Test huge bytes count */ 60 ok_long(NtGdiGetBitmapBits(hBitmap, 12345678, Bits), 12); 61 62 /* Test negative bytes count */ 63 ok_long(NtGdiGetBitmapBits(hBitmap, -5, Bits), 12); 64 65 ok_long(GetLastError(), ERROR_SUCCESS); 66 67 DeleteObject(hBitmap); 68 } 69