3 Test_GetCurrentObject(PTESTINFO pti
)
10 hWnd
= CreateWindowW(L
"BUTTON", L
"TestWindow", WS_OVERLAPPEDWINDOW
| WS_VISIBLE
,
11 CW_USEDEFAULT
, CW_USEDEFAULT
, 100, 100,
12 NULL
, NULL
, g_hInstance
, 0);
17 SetLastError(ERROR_SUCCESS
);
18 RTEST(GetCurrentObject(NULL
, 0) == 0);
19 RTEST(GetLastError() == ERROR_INVALID_PARAMETER
);
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
);
30 /* Test invalid DC handle */
31 SetLastError(ERROR_SUCCESS
);
32 RTEST(GetCurrentObject((HDC
)-123, 0) == 0);
33 RTEST(GetLastError() == ERROR_INVALID_PARAMETER
);
35 SetLastError(ERROR_SUCCESS
);
36 RTEST(GetCurrentObject((HDC
)-123, OBJ_BITMAP
) == 0);
37 TEST(GetLastError() == ERROR_SUCCESS
);
39 /* Test invalid types */
40 SetLastError(ERROR_SUCCESS
);
41 RTEST(GetCurrentObject(hDC
, 0) == 0);
42 RTEST(GetLastError() == ERROR_INVALID_PARAMETER
);
44 SetLastError(ERROR_SUCCESS
);
45 RTEST(GetCurrentObject(hDC
, 3) == 0);
46 RTEST(GetLastError() == ERROR_INVALID_PARAMETER
);
48 SetLastError(ERROR_SUCCESS
);
49 RTEST(GetCurrentObject(hDC
, 4) == 0);
50 RTEST(GetLastError() == ERROR_INVALID_PARAMETER
);
52 SetLastError(ERROR_SUCCESS
);
53 RTEST(GetCurrentObject(hDC
, 8) == 0);
54 TEST(GetLastError() == ERROR_INVALID_PARAMETER
);
56 SetLastError(ERROR_SUCCESS
);
57 RTEST(GetCurrentObject(hDC
, 9) == 0);
58 RTEST(GetLastError() == ERROR_INVALID_PARAMETER
);
60 SetLastError(ERROR_SUCCESS
);
61 RTEST(GetCurrentObject(hDC
, 10) == 0);
62 RTEST(GetLastError() == ERROR_INVALID_PARAMETER
);
64 SetLastError(ERROR_SUCCESS
);
65 RTEST(GetCurrentObject(hDC
, 12) == 0);
66 RTEST(GetLastError() == ERROR_INVALID_PARAMETER
);
68 SetLastError(ERROR_SUCCESS
);
69 RTEST(GetCurrentObject(hDC
, 13) == 0);
70 RTEST(GetLastError() == ERROR_INVALID_PARAMETER
);
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
);
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
);
86 SetLastError(ERROR_SUCCESS
);
87 RTEST(GetCurrentObject(hDC
, OBJ_BRUSH
) == GetStockObject(WHITE_BRUSH
));
88 RTEST(GetLastError() == ERROR_SUCCESS
);
91 SetLastError(ERROR_SUCCESS
);
92 SelectObject(hDC
, GetStockObject(BLACK_BRUSH
));
93 RTEST(GetCurrentObject(hDC
, OBJ_BRUSH
) == GetStockObject(BLACK_BRUSH
));
94 RTEST(GetLastError() == ERROR_SUCCESS
);
96 /* Default colorspace */
97 SetLastError(ERROR_SUCCESS
);
98 RTEST(GetCurrentObject(hDC
, OBJ_COLORSPACE
) == GetStockObject(20));
99 RTEST(GetLastError() == ERROR_SUCCESS
);
102 SetLastError(ERROR_SUCCESS
);
103 RTEST(GetCurrentObject(hDC
, OBJ_FONT
) == GetStockObject(SYSTEM_FONT
));
104 RTEST(GetLastError() == ERROR_SUCCESS
);
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
);
112 /* Default palette */
113 SetLastError(ERROR_SUCCESS
);
114 RTEST(GetCurrentObject(hDC
, OBJ_PAL
) == GetStockObject(DEFAULT_PALETTE
));
115 RTEST(GetLastError() == ERROR_SUCCESS
);
118 SetLastError(ERROR_SUCCESS
);
119 RTEST(GetCurrentObject(hDC
, OBJ_PEN
) == GetStockObject(BLACK_PEN
));
120 RTEST(GetLastError() == ERROR_SUCCESS
);
123 SetLastError(ERROR_SUCCESS
);
124 SelectObject(hDC
, GetStockObject(WHITE_PEN
));
125 RTEST(GetCurrentObject(hDC
, OBJ_PEN
) == GetStockObject(WHITE_PEN
));
126 RTEST(GetLastError() == ERROR_SUCCESS
);
129 SetLastError(ERROR_SUCCESS
);
130 SelectObject(hDC
, GetStockObject(DC_PEN
));
131 RTEST(GetCurrentObject(hDC
, OBJ_PEN
) == GetStockObject(DC_PEN
));
132 RTEST(GetLastError() == ERROR_SUCCESS
);
134 ReleaseDC(hWnd
, hDC
);
137 return APISTATUS_NORMAL
;