[SHELL32_APITEST] -Add some tests for SHParseDisplayName for CORE-12882.
[reactos.git] / rostests / apitests / win32nt / ntgdi / NtGdiGetRandomRgn.c
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 }