Fix copy paste error in file header
[reactos.git] / rostests / apitests / gdi32api / tests / GetCurrentObject.c
1
2 INT
3 Test_GetCurrentObject(PTESTINFO pti)
4 {
5 HWND hWnd;
6 HDC hDC;
7 HBITMAP hBmp;
8
9 /* Create a window */
10 hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
11 CW_USEDEFAULT, CW_USEDEFAULT, 100, 100,
12 NULL, NULL, g_hInstance, 0);
13 /* Get the DC */
14 hDC = GetDC(hWnd);
15
16 /* Test NULL DC */
17 SetLastError(ERROR_SUCCESS);
18 RTEST(GetCurrentObject(NULL, 0) == 0);
19 RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
20
21 SetLastError(ERROR_SUCCESS);
22 RTEST(GetCurrentObject(NULL, OBJ_BITMAP) == 0);
23 RTEST(GetCurrentObject(NULL, OBJ_BRUSH) == 0);
24 RTEST(GetCurrentObject(NULL, OBJ_COLORSPACE) == 0);
25 RTEST(GetCurrentObject(NULL, OBJ_FONT) == 0);
26 RTEST(GetCurrentObject(NULL, OBJ_PAL) == 0);
27 RTEST(GetCurrentObject(NULL, OBJ_PEN) == 0);
28 RTEST(GetLastError() == ERROR_SUCCESS);
29
30 /* Test invalid DC handle */
31 SetLastError(ERROR_SUCCESS);
32 RTEST(GetCurrentObject((HDC)-123, 0) == 0);
33 RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
34
35 SetLastError(ERROR_SUCCESS);
36 RTEST(GetCurrentObject((HDC)-123, OBJ_BITMAP) == 0);
37 TEST(GetLastError() == ERROR_SUCCESS);
38
39 /* Test invalid types */
40 SetLastError(ERROR_SUCCESS);
41 RTEST(GetCurrentObject(hDC, 0) == 0);
42 RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
43
44 SetLastError(ERROR_SUCCESS);
45 RTEST(GetCurrentObject(hDC, 3) == 0);
46 RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
47
48 SetLastError(ERROR_SUCCESS);
49 RTEST(GetCurrentObject(hDC, 4) == 0);
50 RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
51
52 SetLastError(ERROR_SUCCESS);
53 RTEST(GetCurrentObject(hDC, 8) == 0);
54 TEST(GetLastError() == ERROR_INVALID_PARAMETER);
55
56 SetLastError(ERROR_SUCCESS);
57 RTEST(GetCurrentObject(hDC, 9) == 0);
58 RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
59
60 SetLastError(ERROR_SUCCESS);
61 RTEST(GetCurrentObject(hDC, 10) == 0);
62 RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
63
64 SetLastError(ERROR_SUCCESS);
65 RTEST(GetCurrentObject(hDC, 12) == 0);
66 RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
67
68 SetLastError(ERROR_SUCCESS);
69 RTEST(GetCurrentObject(hDC, 13) == 0);
70 RTEST(GetLastError() == ERROR_INVALID_PARAMETER);
71
72 /* Default bitmap */
73 SetLastError(ERROR_SUCCESS);
74 hBmp = GetCurrentObject(hDC, OBJ_BITMAP);
75 RTEST(GDI_HANDLE_GET_TYPE(hBmp) == GDI_OBJECT_TYPE_BITMAP);
76 RTEST(GetLastError() == ERROR_SUCCESS);
77
78 /* Other bitmap */
79 SetLastError(ERROR_SUCCESS);
80 SelectObject(hDC, GetStockObject(21));
81 RTEST(hBmp == GetCurrentObject(hDC, OBJ_BITMAP));
82 RTEST(GDI_HANDLE_GET_TYPE(hBmp) == GDI_OBJECT_TYPE_BITMAP);
83 RTEST(GetLastError() == ERROR_SUCCESS);
84
85 /* Default brush */
86 SetLastError(ERROR_SUCCESS);
87 RTEST(GetCurrentObject(hDC, OBJ_BRUSH) == GetStockObject(WHITE_BRUSH));
88 RTEST(GetLastError() == ERROR_SUCCESS);
89
90 /* Other brush */
91 SetLastError(ERROR_SUCCESS);
92 SelectObject(hDC, GetStockObject(BLACK_BRUSH));
93 RTEST(GetCurrentObject(hDC, OBJ_BRUSH) == GetStockObject(BLACK_BRUSH));
94 RTEST(GetLastError() == ERROR_SUCCESS);
95
96 /* Default colorspace */
97 SetLastError(ERROR_SUCCESS);
98 RTEST(GetCurrentObject(hDC, OBJ_COLORSPACE) == GetStockObject(20));
99 RTEST(GetLastError() == ERROR_SUCCESS);
100
101 /* Default font */
102 SetLastError(ERROR_SUCCESS);
103 RTEST(GetCurrentObject(hDC, OBJ_FONT) == GetStockObject(SYSTEM_FONT));
104 RTEST(GetLastError() == ERROR_SUCCESS);
105
106 /* Other font */
107 SetLastError(ERROR_SUCCESS);
108 SelectObject(hDC, GetStockObject(DEFAULT_GUI_FONT));
109 RTEST(GetCurrentObject(hDC, OBJ_FONT) == GetStockObject(DEFAULT_GUI_FONT));
110 RTEST(GetLastError() == ERROR_SUCCESS);
111
112 /* Default palette */
113 SetLastError(ERROR_SUCCESS);
114 RTEST(GetCurrentObject(hDC, OBJ_PAL) == GetStockObject(DEFAULT_PALETTE));
115 RTEST(GetLastError() == ERROR_SUCCESS);
116
117 /* Default pen */
118 SetLastError(ERROR_SUCCESS);
119 RTEST(GetCurrentObject(hDC, OBJ_PEN) == GetStockObject(BLACK_PEN));
120 RTEST(GetLastError() == ERROR_SUCCESS);
121
122 /* Other pen */
123 SetLastError(ERROR_SUCCESS);
124 SelectObject(hDC, GetStockObject(WHITE_PEN));
125 RTEST(GetCurrentObject(hDC, OBJ_PEN) == GetStockObject(WHITE_PEN));
126 RTEST(GetLastError() == ERROR_SUCCESS);
127
128 /* DC pen */
129 SetLastError(ERROR_SUCCESS);
130 SelectObject(hDC, GetStockObject(DC_PEN));
131 RTEST(GetCurrentObject(hDC, OBJ_PEN) == GetStockObject(DC_PEN));
132 RTEST(GetLastError() == ERROR_SUCCESS);
133
134 ReleaseDC(hWnd, hDC);
135 DestroyWindow(hWnd);
136
137 return APISTATUS_NORMAL;
138 }
139