mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 19:21:38 +00:00
some tests for NtGdiDoPalette
svn path=/trunk/; revision=28457
This commit is contained in:
parent
d99309335f
commit
3385ef604e
2 changed files with 266 additions and 2 deletions
264
rostests/apitests/w32knapi/ntgdi/NtGdiDoPalette.c
Normal file
264
rostests/apitests/w32knapi/ntgdi/NtGdiDoPalette.c
Normal file
|
@ -0,0 +1,264 @@
|
|||
#include "../w32knapi.h"
|
||||
|
||||
W32KAPI
|
||||
LONG
|
||||
APIENTRY
|
||||
NtGdiDoPalette(
|
||||
IN HPALETTE hpal,
|
||||
IN WORD iStart,
|
||||
IN WORD cEntries,
|
||||
IN PALETTEENTRY *pPalEntries,
|
||||
IN DWORD iFunc,
|
||||
IN BOOL bInbound
|
||||
)
|
||||
{
|
||||
return (LONG)Syscall(L"NtGdiDoPalette", 6, &hpal);
|
||||
}
|
||||
|
||||
HPALETTE
|
||||
CreateTestPalette()
|
||||
{
|
||||
struct
|
||||
{
|
||||
LOGPALETTE logpal;
|
||||
PALETTEENTRY entry[5];
|
||||
} palstruct =
|
||||
{ {0x300,5,
|
||||
{ {1,2,3,0} }},
|
||||
{ {22,33,44,PC_RESERVED},
|
||||
{11,55,77,PC_EXPLICIT},
|
||||
{00,77,66,PC_RESERVED | PC_NOCOLLAPSE},
|
||||
{12,34,56,78}} };
|
||||
|
||||
return CreatePalette((LOGPALETTE*)&palstruct);
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NtGdiDoPalette_GdiPalAnimate(PTESTINFO pti)
|
||||
{
|
||||
HPALETTE hPal;
|
||||
PALETTEENTRY palEntries[5] = {
|
||||
{0,0,0,0},
|
||||
{0xff,0xff,0xff,0},
|
||||
{0x33,0x66,0x99,0},
|
||||
{0x25,0x84,0x14,0},
|
||||
{0x12,0x34,0x56,0x11}};
|
||||
PALETTEENTRY palEntries2[5];
|
||||
|
||||
/* Test stock palette */
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
RTEST(NtGdiDoPalette(GetStockObject(DEFAULT_PALETTE), 0, 1, palEntries, GdiPalAnimate, FALSE) == 0);
|
||||
RTEST(GetLastError() == ERROR_SUCCESS);
|
||||
|
||||
|
||||
/* Test pEntries = NULL */
|
||||
hPal = CreateTestPalette();
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalAnimate, TRUE) == 0);
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalAnimate, FALSE) == 0);
|
||||
DeleteObject(hPal);
|
||||
|
||||
/* Test PC_RESERVED */
|
||||
hPal = CreateTestPalette();
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalAnimate, TRUE) == 2);
|
||||
DeleteObject(hPal);
|
||||
|
||||
hPal = CreateTestPalette();
|
||||
RTEST(NtGdiDoPalette(hPal, 1, 5, palEntries, GdiPalAnimate, TRUE) == 2);
|
||||
DeleteObject(hPal);
|
||||
|
||||
hPal = CreateTestPalette();
|
||||
RTEST(NtGdiDoPalette(hPal, 2, 5, palEntries, GdiPalAnimate, TRUE) == 1);
|
||||
DeleteObject(hPal);
|
||||
|
||||
hPal = CreateTestPalette();
|
||||
RTEST(NtGdiDoPalette(hPal, 3, 5, palEntries, GdiPalAnimate, TRUE) == 1);
|
||||
DeleteObject(hPal);
|
||||
|
||||
hPal = CreateTestPalette();
|
||||
RTEST(NtGdiDoPalette(hPal, 4, 5, palEntries, GdiPalAnimate, TRUE) == 0);
|
||||
DeleteObject(hPal);
|
||||
|
||||
hPal = CreateTestPalette();
|
||||
RTEST(NtGdiDoPalette(hPal, 5, 5, palEntries, GdiPalAnimate, TRUE) == 0);
|
||||
DeleteObject(hPal);
|
||||
|
||||
hPal = CreateTestPalette();
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalAnimate, FALSE) == 2);
|
||||
DeleteObject(hPal);
|
||||
|
||||
hPal = CreateTestPalette();
|
||||
RTEST(NtGdiDoPalette(hPal, 3, 5, palEntries, GdiPalAnimate, FALSE) == 1);
|
||||
DeleteObject(hPal);
|
||||
|
||||
/* Test if entries are set correctly */
|
||||
hPal = CreateTestPalette();
|
||||
NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalAnimate, TRUE);
|
||||
NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalGetEntries, FALSE);
|
||||
RTEST(palEntries2[0].peRed == 1);
|
||||
RTEST(palEntries2[0].peGreen == 2);
|
||||
RTEST(palEntries2[0].peBlue == 3);
|
||||
RTEST(palEntries2[0].peFlags == 0);
|
||||
RTEST(palEntries2[1].peRed == palEntries[1].peRed);
|
||||
RTEST(palEntries2[1].peGreen == palEntries[1].peGreen);
|
||||
RTEST(palEntries2[1].peBlue == palEntries[1].peBlue);
|
||||
RTEST(palEntries2[1].peFlags == palEntries[1].peFlags);
|
||||
RTEST(palEntries2[2].peRed == 11);
|
||||
RTEST(palEntries2[2].peGreen == 55);
|
||||
RTEST(palEntries2[2].peBlue == 77);
|
||||
TEST(palEntries2[2].peFlags == PC_EXPLICIT);
|
||||
RTEST(palEntries2[3].peRed == palEntries[3].peRed);
|
||||
RTEST(palEntries2[3].peGreen == palEntries[3].peGreen);
|
||||
RTEST(palEntries2[3].peBlue == palEntries[3].peBlue);
|
||||
RTEST(palEntries2[3].peFlags == palEntries[3].peFlags);
|
||||
DeleteObject(hPal);
|
||||
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NtGdiDoPalette_GdiPalSetEntries(PTESTINFO pti)
|
||||
{
|
||||
HPALETTE hPal;
|
||||
PALETTEENTRY palEntries[5] = {
|
||||
{0,0,0,0},
|
||||
{0xff,0xff,0xff,0},
|
||||
{0x33,0x66,0x99,0},
|
||||
{0x25,0x84,0x14,0},
|
||||
{0x12,0x34,0x56,0x11}};
|
||||
PALETTEENTRY palEntries2[5];
|
||||
|
||||
hPal = CreateTestPalette();
|
||||
|
||||
/* Test invalid handle */
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
RTEST(NtGdiDoPalette((HPALETTE)23, 0, 1, palEntries, GdiPalSetEntries, TRUE) == 0);
|
||||
RTEST(GetLastError() == ERROR_SUCCESS);
|
||||
|
||||
/* Test system palette */
|
||||
RTEST(NtGdiDoPalette(GetStockObject(DEFAULT_PALETTE), 0, 1, palEntries, GdiPalSetEntries, TRUE) == 0);
|
||||
RTEST(GetLastError() == ERROR_SUCCESS);
|
||||
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 1, palEntries, GdiPalSetEntries, TRUE) == 1);
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 2, palEntries, GdiPalSetEntries, TRUE) == 2);
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 3, palEntries, GdiPalSetEntries, TRUE) == 3);
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalSetEntries, TRUE) == 5);
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 6, palEntries, GdiPalSetEntries, TRUE) == 5);
|
||||
RTEST(NtGdiDoPalette(hPal, 3, 6, palEntries, GdiPalSetEntries, TRUE) == 2);
|
||||
// TEST(NtGdiDoPalette(hPal, 4, 23247, palEntries, GdiPalSetEntries, TRUE) == 0);
|
||||
|
||||
/* Test bInbound == FALSE */
|
||||
NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalSetEntries, TRUE);
|
||||
ZeroMemory(palEntries2, sizeof(palEntries2));
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalSetEntries, FALSE) == 5);
|
||||
/* we should get the old values returned in our buffer! */
|
||||
TEST(memcmp(palEntries2, palEntries, sizeof(palEntries)) == 0);
|
||||
|
||||
/* check what we have in our palette now */
|
||||
ZeroMemory(palEntries2, sizeof(palEntries2));
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalGetEntries, FALSE) == 5);
|
||||
TEST(memcmp(palEntries2, palEntries, sizeof(palEntries)) == 0);
|
||||
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 4, palEntries2, GdiPalSetEntries, TRUE) == 4);
|
||||
RTEST(GetLastError() == ERROR_SUCCESS);
|
||||
|
||||
/* Test if entries are set correctly */
|
||||
hPal = CreateTestPalette();
|
||||
NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalSetEntries, TRUE);
|
||||
NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalGetEntries, FALSE);
|
||||
RTEST(palEntries2[0].peRed == 0);
|
||||
RTEST(palEntries2[0].peGreen == 0);
|
||||
RTEST(palEntries2[0].peBlue == 0);
|
||||
RTEST(palEntries2[0].peFlags == 0);
|
||||
|
||||
/* Test that the buffer was not changed */
|
||||
|
||||
/* Test pEntries = NULL */
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalGetEntries, TRUE) == 0);
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NtGdiDoPalette_GdiPalGetEntries(PTESTINFO pti)
|
||||
{
|
||||
HPALETTE hPal;
|
||||
|
||||
hPal = CreateTestPalette();
|
||||
|
||||
/* Test pEntries = NULL */
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalGetEntries, TRUE) == 0);
|
||||
RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalGetEntries, FALSE) == 5);
|
||||
RTEST(NtGdiDoPalette(hPal, 2, 1, NULL, GdiPalGetEntries, FALSE) == 5);
|
||||
RTEST(NtGdiDoPalette(hPal, 20, 1, NULL, GdiPalGetEntries, FALSE) == 5);
|
||||
RTEST(NtGdiDoPalette(hPal, -20, 1, NULL, GdiPalGetEntries, FALSE) == 5);
|
||||
RTEST(NtGdiDoPalette(hPal, 2, 0, NULL, GdiPalGetEntries, FALSE) == 5);
|
||||
|
||||
|
||||
// Test flags 0xf0
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NtGdiDoPalette_GetSystemPalette(PTESTINFO pti)
|
||||
{
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NtGdiDoPalette_GetBIBColorTable(PTESTINFO pti)
|
||||
{
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
INT
|
||||
Test_NtGdiDoPalette_SetDIBColorTable(PTESTINFO pti)
|
||||
{
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
||||
|
||||
|
||||
INT
|
||||
Test_NtGdiDoPalette(PTESTINFO pti)
|
||||
{
|
||||
INT ret;
|
||||
|
||||
ret = Test_NtGdiDoPalette_GdiPalAnimate(pti);
|
||||
if (ret != APISTATUS_NORMAL)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = Test_NtGdiDoPalette_GdiPalSetEntries(pti);
|
||||
if (ret != APISTATUS_NORMAL)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = Test_NtGdiDoPalette_GdiPalGetEntries(pti);
|
||||
if (ret != APISTATUS_NORMAL)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = Test_NtGdiDoPalette_GetSystemPalette(pti);
|
||||
if (ret != APISTATUS_NORMAL)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = Test_NtGdiDoPalette_GetBIBColorTable(pti);
|
||||
if (ret != APISTATUS_NORMAL)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = Test_NtGdiDoPalette_SetDIBColorTable(pti);
|
||||
if (ret != APISTATUS_NORMAL)
|
||||
{
|
||||
return ret;
|
||||
}
|
||||
|
||||
return APISTATUS_NORMAL;
|
||||
}
|
|
@ -9,7 +9,7 @@
|
|||
#include "ntgdi/NtGdiArcInternal.c"
|
||||
#include "ntgdi/NtGdiCreateBitmap.c"
|
||||
#include "ntgdi/NtGdiCreateCompatibleBitmap.c"
|
||||
//#include "ntgdi/NtGdiDoPalette.c"
|
||||
#include "ntgdi/NtGdiDoPalette.c"
|
||||
#include "ntgdi/NtGdiGetBitmapBits.c"
|
||||
#include "ntgdi/NtGdiGetRandomRgn.c"
|
||||
#include "ntgdi/NtGdiSetBitmapBits.c"
|
||||
|
@ -29,7 +29,7 @@ TESTENTRY TestList[] =
|
|||
{ L"NtGdiArcInternal", Test_NtGdiArcInternal },
|
||||
{ L"NtGdiCreateBitmap", Test_NtGdiCreateBitmap },
|
||||
{ L"NtGdiCreateCompatibleBitmap", Test_NtGdiCreateCompatibleBitmap },
|
||||
// { L"NtGdiDoPalette", Test_NtGdiDoPalette },
|
||||
{ L"NtGdiDoPalette", Test_NtGdiDoPalette },
|
||||
{ L"NtGdiGetBitmapBits", Test_NtGdiGetBitmapBits },
|
||||
{ L"NtGdiGetRandomRgn", Test_NtGdiGetRandomRgn },
|
||||
{ L"NtGdiSetBitmapBits", Test_NtGdiSetBitmapBits },
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue