1 /* 2 * PROJECT: ReactOS api tests 3 * LICENSE: GPL - See COPYING in the top level directory 4 * PURPOSE: Test for NtGdiGetRandomRgn 5 * PROGRAMMERS: 6 */ 7 8 #include <win32nt.h> 9 10 START_TEST(NtGdiGetRandomRgn) 11 { 12 HINSTANCE hinst = GetModuleHandle(NULL); 13 HWND hWnd; 14 HDC hDC; 15 HRGN hrgn, hrgn2; 16 17 /* Create a window */ 18 hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 19 CW_USEDEFAULT, CW_USEDEFAULT, 100, 100, 20 NULL, NULL, hinst, 0); 21 // UpdateWindow(hWnd); 22 hDC = GetDC(hWnd); 23 24 ASSERT(hDC != NULL); 25 26 hrgn = CreateRectRgn(0,0,0,0); 27 hrgn2 = CreateRectRgn(3,3,10,10); 28 SetLastError(ERROR_SUCCESS); 29 RTEST(NtGdiGetRandomRgn(0, hrgn, 0) == -1); 30 RTEST(GetLastError() == ERROR_INVALID_HANDLE); 31 32 SetLastError(ERROR_SUCCESS); 33 RTEST(NtGdiGetRandomRgn((HDC)2345, hrgn, 1) == -1); 34 RTEST(GetLastError() == ERROR_INVALID_HANDLE); 35 36 SetLastError(ERROR_SUCCESS); 37 RTEST(NtGdiGetRandomRgn((HDC)2345, hrgn, 10) == -1); 38 RTEST(GetLastError() == ERROR_INVALID_HANDLE); 39 40 SetLastError(ERROR_SUCCESS); 41 RTEST(NtGdiGetRandomRgn((HDC)2345, (HRGN)10, 10) == -1); 42 RTEST(GetLastError() == ERROR_INVALID_HANDLE); 43 44 SetLastError(ERROR_SUCCESS); 45 RTEST(NtGdiGetRandomRgn((HDC)2345, 0, 1) == -1); 46 RTEST(GetLastError() == ERROR_INVALID_HANDLE); 47 48 SetLastError(ERROR_SUCCESS); 49 RTEST(NtGdiGetRandomRgn(hDC, 0, 0) == 0); 50 RTEST(NtGdiGetRandomRgn(hDC, 0, 1) == 0); 51 RTEST(NtGdiGetRandomRgn(hDC, (HRGN)-5, 0) == 0); 52 RTEST(NtGdiGetRandomRgn(hDC, (HRGN)-5, 1) == 0); 53 RTEST(NtGdiGetRandomRgn(hDC, hrgn, 0) == 0); 54 RTEST(NtGdiGetRandomRgn(hDC, hrgn, 1) == 0); 55 TEST(NtGdiGetRandomRgn(hDC, hrgn, 2) == 0); 56 RTEST(NtGdiGetRandomRgn(hDC, hrgn, 3) == 0); 57 RTEST(NtGdiGetRandomRgn(hDC, hrgn, 4) == 1); 58 RTEST(NtGdiGetRandomRgn(hDC, hrgn, 5) == 0); 59 RTEST(NtGdiGetRandomRgn(hDC, hrgn, 10) == 0); 60 RTEST(NtGdiGetRandomRgn(hDC, hrgn, -10) == 0); 61 RTEST(GetLastError() == ERROR_SUCCESS); 62 63 SelectClipRgn(hDC, hrgn2); 64 RTEST(NtGdiGetRandomRgn(hDC, 0, 1) == -1); 65 RTEST(GetLastError() == ERROR_SUCCESS); 66 RTEST(NtGdiGetRandomRgn(hDC, hrgn, 1) == 1); 67 RTEST(CombineRgn(hrgn, hrgn, hrgn, RGN_OR) == SIMPLEREGION); 68 RTEST(CombineRgn(hrgn, hrgn, hrgn2, RGN_XOR) == NULLREGION); 69 70 SetRectRgn(hrgn2,0,0,0,0); 71 SelectClipRgn(hDC, hrgn2); 72 RTEST(NtGdiGetRandomRgn(hDC, hrgn, 1) == 1); 73 74 RTEST(CombineRgn(hrgn2, hrgn, hrgn2, RGN_XOR) == NULLREGION); 75 RTEST(CombineRgn(hrgn2, hrgn, hrgn, RGN_OR) == NULLREGION); 76 77 SelectClipRgn(hDC, NULL); 78 RTEST(NtGdiGetRandomRgn(hDC, hrgn, 1) == 0); 79 80 81 RTEST(NtGdiGetRandomRgn(hDC, hrgn, 4) == 1); 82 83 RTEST(GetLastError() == ERROR_SUCCESS); 84 85 ReleaseDC(hWnd, hDC); 86 DestroyWindow(hWnd); 87 88 } 89