Author: tkreuzer
Date: Thu Aug 23 04:19:00 2007
New Revision: 28457
URL:
http://svn.reactos.org/svn/reactos?rev=28457&view=rev
Log:
some tests for NtGdiDoPalette
Added:
trunk/rostests/apitests/w32knapi/ntgdi/NtGdiDoPalette.c
Modified:
trunk/rostests/apitests/w32knapi/testlist.c
Added: trunk/rostests/apitests/w32knapi/ntgdi/NtGdiDoPalette.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/w32knapi/ntgdi/N…
==============================================================================
--- trunk/rostests/apitests/w32knapi/ntgdi/NtGdiDoPalette.c (added)
+++ trunk/rostests/apitests/w32knapi/ntgdi/NtGdiDoPalette.c Thu Aug 23 04:19:00 2007
@@ -1,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;
+}
Modified: trunk/rostests/apitests/w32knapi/testlist.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/apitests/w32knapi/testlis…
==============================================================================
--- trunk/rostests/apitests/w32knapi/testlist.c (original)
+++ trunk/rostests/apitests/w32knapi/testlist.c Thu Aug 23 04:19:00 2007
@@ -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 @@
{ 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 },