892c4f860c0926fb6feed2314d591467186b74a0
[reactos.git] / rostests / apitests / w32knapi / ntuser / NtUserSelectPalette.c
1
2
3 FORCEINLINE
4 PALETTEENTRY
5 PALENTRY(BYTE r, BYTE g, BYTE b)
6 {
7 PALETTEENTRY ret;
8
9 ret.peRed = r;
10 ret.peGreen = g;
11 ret.peBlue = b;
12 ret.peFlags = 0;
13 return ret;
14 }
15
16 INT
17 Test_NtUserSelectPalette(PTESTINFO pti)
18 {
19 HPALETTE hPal, hOldPal;
20 HWND hWnd;
21 HDC hDC, hCompDC;
22 struct
23 {
24 LOGPALETTE logpal;
25 PALETTEENTRY entry[20];
26 } pal;
27
28 ZeroMemory(&pal, sizeof(pal));
29
30 pal.logpal.palVersion = 0x300;
31 pal.logpal.palNumEntries = 6;
32 pal.entry[0] = PALENTRY(0,0,0);
33 pal.entry[1] = PALENTRY(255,255,255);
34 pal.entry[2] = PALENTRY(128,128,128);
35 pal.entry[3] = PALENTRY(128,0,0);
36 pal.entry[4] = PALENTRY(0,128,0);
37 pal.entry[5] = PALENTRY(0,0,128);
38
39 hPal = CreatePalette(&pal.logpal);
40 ASSERT(hPal);
41 TEST(DeletePalette(hPal) == 1);
42 hPal = CreatePalette(&pal.logpal);
43 ASSERT(hPal);
44
45 /* Create a window */
46 hWnd = CreateWindowW(L"BUTTON", L"TestWindow", WS_OVERLAPPEDWINDOW | WS_VISIBLE,
47 CW_USEDEFAULT, CW_USEDEFAULT, 100, 100,
48 NULL, NULL, g_hInstance, 0);
49 hDC = GetDC(hWnd);
50 ASSERT(hDC);
51 hCompDC = CreateCompatibleDC(hDC);
52 ASSERT(hCompDC);
53
54 /* Test NULL DC */
55 SetLastError(ERROR_SUCCESS);
56 hOldPal = NtUserSelectPalette(NULL, hPal, 0);
57 TEST(hOldPal == 0);
58 TEST(GetLastError() == ERROR_SUCCESS);
59
60 /* Test invalid DC */
61 SetLastError(ERROR_SUCCESS);
62 hOldPal = NtUserSelectPalette((HDC)-1, hPal, 0);
63 TEST(hOldPal == 0);
64 TEST(GetLastError() == ERROR_SUCCESS);
65
66 /* Test NULL palette */
67 SetLastError(ERROR_SUCCESS);
68 hOldPal = NtUserSelectPalette(hDC, NULL, 0);
69 TEST(hOldPal == 0);
70 TEST(GetLastError() == ERROR_SUCCESS);
71
72 /* Test invalid palette */
73 SetLastError(ERROR_SUCCESS);
74 hOldPal = NtUserSelectPalette(hDC, (HPALETTE)-1, 0);
75 TEST(hOldPal == 0);
76 TEST(GetLastError() == ERROR_SUCCESS);
77
78 /* Test valid palette */
79 hOldPal = NtUserSelectPalette(hDC, hPal, 0);
80 TEST(hOldPal != 0);
81 TEST(hOldPal == GetStockObject(DEFAULT_PALETTE));
82
83 /* We cannot Delete the palette */
84 TEST(DeletePalette(hPal) == 0);
85
86 /* We can still select the Palette into a compatible DC */
87 hOldPal = NtUserSelectPalette(hCompDC, hPal, 0);
88 TEST(hOldPal != 0);
89
90
91 return APISTATUS_NORMAL;
92 }