reactos/modules/rostests/apitests/win32nt/ntgdi/NtGdiGetRandomRgn.c
Serge Gautherie a5c3bb5bce
[WIN32KNT_APITEST] 2 minor code improvements and a first fix (#5980)
- Update .rc filename; addendum to 7ad21a4 (r70458).
- Move one '#include "resource.h"' around to where it is needed.
  Addendum to e1b2e7a (r29284) then ec5e0ea (r48103).
- Adjust all '#include <win32nt.h>'
2023-11-16 21:57:10 +01:00

89 lines
2.8 KiB
C

/*
* PROJECT: ReactOS api tests
* LICENSE: GPL - See COPYING in the top level directory
* PURPOSE: Test for NtGdiGetRandomRgn
* PROGRAMMERS:
*/
#include "../win32nt.h"
START_TEST(NtGdiGetRandomRgn)
{
HINSTANCE hinst = GetModuleHandle(NULL);
HWND hWnd;
HDC hDC;
HRGN hrgn, hrgn2;
/* Create a window */
hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, 100, 100,
NULL, NULL, hinst, 0);
// UpdateWindow(hWnd);
hDC = GetDC(hWnd);
ok(hDC != NULL, "hDC was NULL.\n");
hrgn = CreateRectRgn(0,0,0,0);
hrgn2 = CreateRectRgn(3,3,10,10);
SetLastError(ERROR_SUCCESS);
ok_int(NtGdiGetRandomRgn(0, hrgn, 0), -1);
ok_long(GetLastError(), ERROR_INVALID_HANDLE);
SetLastError(ERROR_SUCCESS);
ok_int(NtGdiGetRandomRgn((HDC)2345, hrgn, 1), -1);
ok_long(GetLastError(), ERROR_INVALID_HANDLE);
SetLastError(ERROR_SUCCESS);
ok_int(NtGdiGetRandomRgn((HDC)2345, hrgn, 10), -1);
ok_long(GetLastError(), ERROR_INVALID_HANDLE);
SetLastError(ERROR_SUCCESS);
ok_int(NtGdiGetRandomRgn((HDC)2345, (HRGN)10, 10), -1);
ok_long(GetLastError(), ERROR_INVALID_HANDLE);
SetLastError(ERROR_SUCCESS);
ok_int(NtGdiGetRandomRgn((HDC)2345, 0, 1), -1);
ok_long(GetLastError(), ERROR_INVALID_HANDLE);
SetLastError(ERROR_SUCCESS);
ok_int(NtGdiGetRandomRgn(hDC, 0, 0), 0);
ok_int(NtGdiGetRandomRgn(hDC, 0, 1), 0);
ok_int(NtGdiGetRandomRgn(hDC, (HRGN)-5, 0), 0);
ok_int(NtGdiGetRandomRgn(hDC, (HRGN)-5, 1), 0);
ok_int(NtGdiGetRandomRgn(hDC, hrgn, 0), 0);
ok_int(NtGdiGetRandomRgn(hDC, hrgn, 1), 0);
ok_int(NtGdiGetRandomRgn(hDC, hrgn, 2), 0);
ok_int(NtGdiGetRandomRgn(hDC, hrgn, 3), 0);
ok_int(NtGdiGetRandomRgn(hDC, hrgn, 4), 1);
ok_int(NtGdiGetRandomRgn(hDC, hrgn, 5), 0);
ok_int(NtGdiGetRandomRgn(hDC, hrgn, 10), 0);
ok_int(NtGdiGetRandomRgn(hDC, hrgn, -10), 0);
ok_long(GetLastError(), ERROR_SUCCESS);
SelectClipRgn(hDC, hrgn2);
ok_int(NtGdiGetRandomRgn(hDC, 0, 1), -1);
ok_long(GetLastError(), ERROR_SUCCESS);
ok_int(NtGdiGetRandomRgn(hDC, hrgn, 1), 1);
ok_int(CombineRgn(hrgn, hrgn, hrgn, RGN_OR), SIMPLEREGION);
ok_int(CombineRgn(hrgn, hrgn, hrgn2, RGN_XOR), NULLREGION);
SetRectRgn(hrgn2,0,0,0,0);
SelectClipRgn(hDC, hrgn2);
ok_int(NtGdiGetRandomRgn(hDC, hrgn, 1), 1);
ok_int(CombineRgn(hrgn2, hrgn, hrgn2, RGN_XOR), NULLREGION);
ok_int(CombineRgn(hrgn2, hrgn, hrgn, RGN_OR), NULLREGION);
SelectClipRgn(hDC, NULL);
ok_int(NtGdiGetRandomRgn(hDC, hrgn, 1), 0);
ok_int(NtGdiGetRandomRgn(hDC, hrgn, 4), 1);
ok_long(GetLastError(), ERROR_SUCCESS);
ReleaseDC(hWnd, hDC);
DestroyWindow(hWnd);
}