reactos/modules/rostests/apitests/win32nt/ntgdi/NtGdiSelectPen.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

78 lines
2.1 KiB
C

/*
* PROJECT: ReactOS api tests
* LICENSE: GPL - See COPYING in the top level directory
* PURPOSE: Test for NtGdiSelectPen
* PROGRAMMERS:
*/
#include "../win32nt.h"
START_TEST(NtGdiSelectPen)
{
HDC hDC;
HPEN hPen, hOldPen;
LOGBRUSH logbrush;
hDC = GetDC(NULL);
ASSERT(hDC);
hPen = GetStockObject(WHITE_PEN);
/* Test NULL DC */
SetLastError(ERROR_SUCCESS);
hOldPen = NtGdiSelectPen(NULL, hPen);
TEST(hOldPen == NULL);
TEST(GetLastError() == ERROR_SUCCESS);
/* Test invalid DC */
SetLastError(ERROR_SUCCESS);
hOldPen = NtGdiSelectPen((HDC)((ULONG_PTR)hDC & 0x0000ffff), hPen);
TEST(hOldPen == NULL);
TEST(GetLastError() == ERROR_SUCCESS);
/* Test NULL pen */
SetLastError(ERROR_SUCCESS);
hOldPen = NtGdiSelectPen(hDC, NULL);
TEST(hOldPen == NULL);
TEST(GetLastError() == ERROR_SUCCESS);
/* Test invalid pen */
SetLastError(ERROR_SUCCESS);
hOldPen = NtGdiSelectPen(hDC, (HPEN)((ULONG_PTR)hPen & 0x0000ffff));
TEST(hOldPen == NULL);
TEST(GetLastError() == ERROR_SUCCESS);
/* Test valid pen */
SelectObject(hDC, GetStockObject(BLACK_PEN));
SetLastError(ERROR_SUCCESS);
hOldPen = NtGdiSelectPen(hDC, hPen);
TEST(hOldPen == GetStockObject(BLACK_PEN));
hOldPen = NtGdiSelectPen(hDC, hOldPen);
TEST(hOldPen == hPen);
TEST(GetLastError() == ERROR_SUCCESS);
/* Test extpen */
SetLastError(ERROR_SUCCESS);
logbrush.lbStyle = BS_SOLID;
logbrush.lbColor = RGB(0x12,0x34,0x56);
hPen = ExtCreatePen(PS_COSMETIC|PS_ALTERNATE, 1, &logbrush, 0, NULL);
ASSERT(hPen);
hOldPen = NtGdiSelectPen(hDC, hPen);
TEST(hOldPen != NULL);
hOldPen = NtGdiSelectPen(hDC, hOldPen);
TEST(hOldPen == hPen);
TEST(GetLastError() == ERROR_SUCCESS);
/* Test deleting pen */
SetLastError(ERROR_SUCCESS);
hOldPen = NtGdiSelectPen(hDC, hPen);
TEST(DeleteObject(hPen) == 1);
hOldPen = NtGdiSelectPen(hDC, hOldPen);
TEST(hOldPen == hPen);
TEST(GetLastError() == ERROR_SUCCESS);
/* Test that fallback pen is BLACK_PEN */
DeleteDC(hDC);
}