1 /* 2 * PROJECT: ReactOS api tests 3 * LICENSE: GPL - See COPYING in the top level directory 4 * PURPOSE: Test for NtGdiSelectBrush 5 * PROGRAMMERS: 6 */ 7 8 #include "../win32nt.h" 9 10 START_TEST(NtGdiSelectBrush) 11 { 12 HDC hDC; 13 HBRUSH hBrush, hOldBrush; 14 DC_ATTR *pdcattr; 15 16 hDC = CreateDCW(L"DISPLAY", NULL, NULL, NULL); 17 18 hBrush = GetStockObject(GRAY_BRUSH); 19 20 /* Test NULL DC */ 21 SetLastError(ERROR_SUCCESS); 22 hOldBrush = NtGdiSelectBrush(NULL, hBrush); 23 TEST(hOldBrush == NULL); 24 TEST(GetLastError() == ERROR_SUCCESS); 25 26 /* Test invalid DC */ 27 SetLastError(ERROR_SUCCESS); 28 hOldBrush = NtGdiSelectBrush((HDC)((ULONG_PTR)hDC & 0x0000ffff), hBrush); 29 TEST(hOldBrush == NULL); 30 TEST(GetLastError() == ERROR_SUCCESS); 31 32 /* Test NULL brush */ 33 SetLastError(ERROR_SUCCESS); 34 hOldBrush = NtGdiSelectBrush(hDC, NULL); 35 TEST(hOldBrush == NULL); 36 TEST(GetLastError() == ERROR_SUCCESS); 37 38 /* Test invalid brush */ 39 SetLastError(ERROR_SUCCESS); 40 hOldBrush = NtGdiSelectBrush(hDC, (HBRUSH)((ULONG_PTR)hBrush & 0x0000ffff)); 41 TEST(hOldBrush == NULL); 42 TEST(GetLastError() == ERROR_SUCCESS); 43 44 SetLastError(ERROR_SUCCESS); 45 hOldBrush = NtGdiSelectBrush(hDC, hBrush); 46 TEST(hOldBrush != NULL); 47 hOldBrush = NtGdiSelectBrush(hDC, hOldBrush); 48 TEST(hOldBrush == hBrush); 49 TEST(GetLastError() == ERROR_SUCCESS); 50 51 /* Begin with a white brush */ 52 NtGdiSelectBrush(hDC, GetStockObject(WHITE_BRUSH)); 53 /* Select a brush in user mode */ 54 SelectObject(hDC, GetStockObject(BLACK_BRUSH)); 55 /* See what we get returned */ 56 hOldBrush = NtGdiSelectBrush(hDC, GetStockObject(WHITE_BRUSH)); 57 TEST(hOldBrush == GetStockObject(BLACK_BRUSH)); 58 59 60 /* Begin with a white brush */ 61 NtGdiSelectBrush(hDC, GetStockObject(WHITE_BRUSH)); 62 63 pdcattr = GdiGetHandleUserData(hDC); 64 /* Change the brush in user mode, without setting flags */ 65 pdcattr->hbrush = (HBRUSH)12345; 66 67 hOldBrush = NtGdiSelectBrush(hDC, GetStockObject(BLACK_BRUSH)); 68 TEST(hOldBrush == (HBRUSH)12345); 69 70 71 DeleteDC(hDC); 72 } 73 74