some tests for NtGdiDoPalette
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Thu, 23 Aug 2007 00:19:00 +0000 (00:19 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Thu, 23 Aug 2007 00:19:00 +0000 (00:19 +0000)
svn path=/trunk/; revision=28457

rostests/apitests/w32knapi/ntgdi/NtGdiDoPalette.c [new file with mode: 0644]
rostests/apitests/w32knapi/testlist.c

diff --git a/rostests/apitests/w32knapi/ntgdi/NtGdiDoPalette.c b/rostests/apitests/w32knapi/ntgdi/NtGdiDoPalette.c
new file mode 100644 (file)
index 0000000..9348581
--- /dev/null
@@ -0,0 +1,264 @@
+#include "../w32knapi.h"\r
+\r
+W32KAPI\r
+LONG\r
+APIENTRY \r
+NtGdiDoPalette(\r
+    IN HPALETTE hpal,\r
+    IN WORD iStart,\r
+    IN WORD cEntries,\r
+    IN PALETTEENTRY *pPalEntries,\r
+    IN DWORD iFunc,\r
+    IN BOOL bInbound\r
+)\r
+{\r
+       return (LONG)Syscall(L"NtGdiDoPalette", 6, &hpal);\r
+}\r
+\r
+HPALETTE\r
+CreateTestPalette()\r
+{\r
+       struct\r
+       {\r
+               LOGPALETTE logpal;\r
+               PALETTEENTRY entry[5];\r
+       } palstruct = \r
+       { {0x300,5,\r
+         { {1,2,3,0} }},\r
+         { {22,33,44,PC_RESERVED},\r
+           {11,55,77,PC_EXPLICIT},\r
+           {00,77,66,PC_RESERVED | PC_NOCOLLAPSE},\r
+           {12,34,56,78}} };\r
+\r
+       return CreatePalette((LOGPALETTE*)&palstruct);\r
+}\r
+\r
+INT\r
+Test_NtGdiDoPalette_GdiPalAnimate(PTESTINFO pti)\r
+{\r
+       HPALETTE hPal;\r
+       PALETTEENTRY palEntries[5] = {\r
+               {0,0,0,0},\r
+               {0xff,0xff,0xff,0},\r
+               {0x33,0x66,0x99,0},\r
+               {0x25,0x84,0x14,0},\r
+               {0x12,0x34,0x56,0x11}};\r
+       PALETTEENTRY palEntries2[5];\r
+\r
+       /* Test stock palette */\r
+       SetLastError(ERROR_SUCCESS);\r
+       RTEST(NtGdiDoPalette(GetStockObject(DEFAULT_PALETTE), 0, 1, palEntries, GdiPalAnimate, FALSE) == 0);\r
+       RTEST(GetLastError() == ERROR_SUCCESS);\r
+\r
+\r
+       /* Test pEntries = NULL */\r
+       hPal = CreateTestPalette();\r
+       RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalAnimate, TRUE) == 0);\r
+       RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalAnimate, FALSE) == 0);\r
+       DeleteObject(hPal);\r
+\r
+       /* Test PC_RESERVED */\r
+       hPal = CreateTestPalette();\r
+       RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalAnimate, TRUE) == 2);\r
+       DeleteObject(hPal);\r
+\r
+       hPal = CreateTestPalette();\r
+       RTEST(NtGdiDoPalette(hPal, 1, 5, palEntries, GdiPalAnimate, TRUE) == 2);\r
+       DeleteObject(hPal);\r
+\r
+       hPal = CreateTestPalette();\r
+       RTEST(NtGdiDoPalette(hPal, 2, 5, palEntries, GdiPalAnimate, TRUE) == 1);\r
+       DeleteObject(hPal);\r
+\r
+       hPal = CreateTestPalette();\r
+       RTEST(NtGdiDoPalette(hPal, 3, 5, palEntries, GdiPalAnimate, TRUE) == 1);\r
+       DeleteObject(hPal);\r
+\r
+       hPal = CreateTestPalette();\r
+       RTEST(NtGdiDoPalette(hPal, 4, 5, palEntries, GdiPalAnimate, TRUE) == 0);\r
+       DeleteObject(hPal);\r
+\r
+       hPal = CreateTestPalette();\r
+       RTEST(NtGdiDoPalette(hPal, 5, 5, palEntries, GdiPalAnimate, TRUE) == 0);\r
+       DeleteObject(hPal);\r
+\r
+       hPal = CreateTestPalette();\r
+       RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalAnimate, FALSE) == 2);\r
+       DeleteObject(hPal);\r
+\r
+       hPal = CreateTestPalette();\r
+       RTEST(NtGdiDoPalette(hPal, 3, 5, palEntries, GdiPalAnimate, FALSE) == 1);\r
+       DeleteObject(hPal);\r
+\r
+       /* Test if entries are set correctly */\r
+       hPal = CreateTestPalette();\r
+       NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalAnimate, TRUE);\r
+       NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalGetEntries, FALSE);\r
+       RTEST(palEntries2[0].peRed == 1);\r
+       RTEST(palEntries2[0].peGreen == 2);\r
+       RTEST(palEntries2[0].peBlue == 3);\r
+       RTEST(palEntries2[0].peFlags == 0);\r
+       RTEST(palEntries2[1].peRed == palEntries[1].peRed);\r
+       RTEST(palEntries2[1].peGreen == palEntries[1].peGreen);\r
+       RTEST(palEntries2[1].peBlue == palEntries[1].peBlue);\r
+       RTEST(palEntries2[1].peFlags == palEntries[1].peFlags);\r
+       RTEST(palEntries2[2].peRed == 11);\r
+       RTEST(palEntries2[2].peGreen == 55);\r
+       RTEST(palEntries2[2].peBlue == 77);\r
+       TEST(palEntries2[2].peFlags == PC_EXPLICIT);\r
+       RTEST(palEntries2[3].peRed == palEntries[3].peRed);\r
+       RTEST(palEntries2[3].peGreen == palEntries[3].peGreen);\r
+       RTEST(palEntries2[3].peBlue == palEntries[3].peBlue);\r
+       RTEST(palEntries2[3].peFlags == palEntries[3].peFlags);\r
+       DeleteObject(hPal);\r
+\r
+\r
+       return APISTATUS_NORMAL;\r
+}\r
+\r
+INT\r
+Test_NtGdiDoPalette_GdiPalSetEntries(PTESTINFO pti)\r
+{\r
+       HPALETTE hPal;\r
+       PALETTEENTRY palEntries[5] = {\r
+               {0,0,0,0},\r
+               {0xff,0xff,0xff,0},\r
+               {0x33,0x66,0x99,0},\r
+               {0x25,0x84,0x14,0},\r
+               {0x12,0x34,0x56,0x11}};\r
+       PALETTEENTRY palEntries2[5];\r
+\r
+       hPal = CreateTestPalette();\r
+\r
+       /* Test invalid handle */\r
+       SetLastError(ERROR_SUCCESS);\r
+       RTEST(NtGdiDoPalette((HPALETTE)23, 0, 1, palEntries, GdiPalSetEntries, TRUE) == 0);\r
+       RTEST(GetLastError() == ERROR_SUCCESS);\r
+\r
+       /* Test system palette */\r
+       RTEST(NtGdiDoPalette(GetStockObject(DEFAULT_PALETTE), 0, 1, palEntries, GdiPalSetEntries, TRUE) == 0);\r
+       RTEST(GetLastError() == ERROR_SUCCESS);\r
+\r
+       RTEST(NtGdiDoPalette(hPal, 0, 1, palEntries, GdiPalSetEntries, TRUE) == 1);\r
+       RTEST(NtGdiDoPalette(hPal, 0, 2, palEntries, GdiPalSetEntries, TRUE) == 2);\r
+       RTEST(NtGdiDoPalette(hPal, 0, 3, palEntries, GdiPalSetEntries, TRUE) == 3);\r
+       RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalSetEntries, TRUE) == 5);\r
+       RTEST(NtGdiDoPalette(hPal, 0, 6, palEntries, GdiPalSetEntries, TRUE) == 5);\r
+       RTEST(NtGdiDoPalette(hPal, 3, 6, palEntries, GdiPalSetEntries, TRUE) == 2);\r
+//     TEST(NtGdiDoPalette(hPal, 4, 23247, palEntries, GdiPalSetEntries, TRUE) == 0);\r
+\r
+       /* Test bInbound == FALSE */\r
+       NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalSetEntries, TRUE);\r
+       ZeroMemory(palEntries2, sizeof(palEntries2));\r
+       RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalSetEntries, FALSE) == 5);\r
+       /* we should get the old values returned in our buffer! */\r
+       TEST(memcmp(palEntries2, palEntries, sizeof(palEntries)) == 0);\r
+\r
+       /* check what we have in our palette now */\r
+       ZeroMemory(palEntries2, sizeof(palEntries2));\r
+       RTEST(NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalGetEntries, FALSE) == 5);\r
+       TEST(memcmp(palEntries2, palEntries, sizeof(palEntries)) == 0);\r
+\r
+       RTEST(NtGdiDoPalette(hPal, 0, 4, palEntries2, GdiPalSetEntries, TRUE) == 4);\r
+       RTEST(GetLastError() == ERROR_SUCCESS);\r
+\r
+       /* Test if entries are set correctly */\r
+       hPal = CreateTestPalette();\r
+       NtGdiDoPalette(hPal, 0, 5, palEntries, GdiPalSetEntries, TRUE);\r
+       NtGdiDoPalette(hPal, 0, 5, palEntries2, GdiPalGetEntries, FALSE);\r
+       RTEST(palEntries2[0].peRed == 0);\r
+       RTEST(palEntries2[0].peGreen == 0);\r
+       RTEST(palEntries2[0].peBlue == 0);\r
+       RTEST(palEntries2[0].peFlags == 0);\r
+\r
+       /* Test that the buffer was not changed */\r
+\r
+       /* Test pEntries = NULL */\r
+       RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalGetEntries, TRUE) == 0);\r
+\r
+       return APISTATUS_NORMAL;\r
+}\r
+\r
+INT\r
+Test_NtGdiDoPalette_GdiPalGetEntries(PTESTINFO pti)\r
+{\r
+       HPALETTE hPal;\r
+\r
+       hPal = CreateTestPalette();\r
+\r
+       /* Test pEntries = NULL */\r
+       RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalGetEntries, TRUE) == 0);\r
+       RTEST(NtGdiDoPalette(hPal, 0, 1, NULL, GdiPalGetEntries, FALSE) == 5);\r
+       RTEST(NtGdiDoPalette(hPal, 2, 1, NULL, GdiPalGetEntries, FALSE) == 5);\r
+       RTEST(NtGdiDoPalette(hPal, 20, 1, NULL, GdiPalGetEntries, FALSE) == 5);\r
+       RTEST(NtGdiDoPalette(hPal, -20, 1, NULL, GdiPalGetEntries, FALSE) == 5);\r
+       RTEST(NtGdiDoPalette(hPal, 2, 0, NULL, GdiPalGetEntries, FALSE) == 5);\r
+\r
+\r
+// Test flags 0xf0\r
+\r
+       return APISTATUS_NORMAL;\r
+}\r
+\r
+INT\r
+Test_NtGdiDoPalette_GetSystemPalette(PTESTINFO pti)\r
+{\r
+       return APISTATUS_NORMAL;\r
+}\r
+\r
+INT\r
+Test_NtGdiDoPalette_GetBIBColorTable(PTESTINFO pti)\r
+{\r
+       return APISTATUS_NORMAL;\r
+}\r
+\r
+INT\r
+Test_NtGdiDoPalette_SetDIBColorTable(PTESTINFO pti)\r
+{\r
+       return APISTATUS_NORMAL;\r
+}\r
+\r
+\r
+INT\r
+Test_NtGdiDoPalette(PTESTINFO pti)\r
+{\r
+       INT ret;\r
+\r
+       ret = Test_NtGdiDoPalette_GdiPalAnimate(pti);\r
+       if (ret != APISTATUS_NORMAL)\r
+       {\r
+               return ret;\r
+       }\r
+\r
+       ret = Test_NtGdiDoPalette_GdiPalSetEntries(pti);\r
+       if (ret != APISTATUS_NORMAL)\r
+       {\r
+               return ret;\r
+       }\r
+\r
+       ret = Test_NtGdiDoPalette_GdiPalGetEntries(pti);\r
+       if (ret != APISTATUS_NORMAL)\r
+       {\r
+               return ret;\r
+       }\r
+\r
+       ret = Test_NtGdiDoPalette_GetSystemPalette(pti);\r
+       if (ret != APISTATUS_NORMAL)\r
+       {\r
+               return ret;\r
+       }\r
+\r
+       ret = Test_NtGdiDoPalette_GetBIBColorTable(pti);\r
+       if (ret != APISTATUS_NORMAL)\r
+       {\r
+               return ret;\r
+       }\r
+\r
+       ret = Test_NtGdiDoPalette_SetDIBColorTable(pti);\r
+       if (ret != APISTATUS_NORMAL)\r
+       {\r
+               return ret;\r
+       }\r
+\r
+       return APISTATUS_NORMAL;\r
+}\r
index cebce05..bc1a9b1 100644 (file)
@@ -9,7 +9,7 @@
 #include "ntgdi/NtGdiArcInternal.c"\r
 #include "ntgdi/NtGdiCreateBitmap.c"\r
 #include "ntgdi/NtGdiCreateCompatibleBitmap.c"\r
-//#include "ntgdi/NtGdiDoPalette.c"\r
+#include "ntgdi/NtGdiDoPalette.c"\r
 #include "ntgdi/NtGdiGetBitmapBits.c"\r
 #include "ntgdi/NtGdiGetRandomRgn.c"\r
 #include "ntgdi/NtGdiSetBitmapBits.c"\r
@@ -29,7 +29,7 @@ TESTENTRY TestList[] =
        { L"NtGdiArcInternal", Test_NtGdiArcInternal },\r
        { L"NtGdiCreateBitmap", Test_NtGdiCreateBitmap },\r
        { L"NtGdiCreateCompatibleBitmap", Test_NtGdiCreateCompatibleBitmap },\r
-//     { L"NtGdiDoPalette", Test_NtGdiDoPalette },\r
+       { L"NtGdiDoPalette", Test_NtGdiDoPalette },\r
        { L"NtGdiGetBitmapBits", Test_NtGdiGetBitmapBits },\r
        { L"NtGdiGetRandomRgn", Test_NtGdiGetRandomRgn },\r
        { L"NtGdiSetBitmapBits", Test_NtGdiSetBitmapBits },\r