[W32KNAPI]
authorJérôme Gardou <jerome.gardou@reactos.org>
Wed, 14 Jul 2010 14:56:53 +0000 (14:56 +0000)
committerJérôme Gardou <jerome.gardou@reactos.org>
Wed, 14 Jul 2010 14:56:53 +0000 (14:56 +0000)
  - Test ONE_PARAM_ROUTINE_CREATEEMPTYCUROBJECT
  - Test NtUserGetIconInfo

svn path=/trunk/; revision=48039

rostests/apitests/w32knapi/ntuser/NtUserCallOneParam.c
rostests/apitests/w32knapi/ntuser/NtUserGetIconInfo.c [new file with mode: 0644]
rostests/apitests/w32knapi/osver.c
rostests/apitests/w32knapi/testlist.c
rostests/apitests/w32knapi/w32knapi.h

index 72b83a0..519d8e8 100644 (file)
@@ -25,6 +25,26 @@ Test_OneParamRoutine_WindowFromDC(PTESTINFO pti) /* 0x1f */
        return APISTATUS_NORMAL;
 }
 
        return APISTATUS_NORMAL;
 }
 
+INT
+Test_OneParamRoutine_CreateEmptyCurObject(PTESTINFO pti) /* XP/2k3 : 0x21, vista 0x25 */
+{
+       HICON hIcon ;
+
+       /* Test 0 */
+       hIcon = (HICON) NtUserCallOneParam(0, _ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT);
+       TEST(hIcon != NULL);
+
+       TEST(NtUserDestroyCursor(hIcon, 0) == TRUE);
+
+       /* Test Garbage */
+       hIcon = (HICON) NtUserCallOneParam(0xdeadbeef, _ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT);
+       TEST(hIcon != NULL);
+
+       TEST(NtUserDestroyCursor(hIcon, 0xbaadf00d) == TRUE);
+
+       return APISTATUS_NORMAL;
+}
+
 INT
 Test_OneParamRoutine_MapDesktopObject(PTESTINFO pti) /* 0x30 */
 {
 INT
 Test_OneParamRoutine_MapDesktopObject(PTESTINFO pti) /* 0x30 */
 {
@@ -66,6 +86,7 @@ Test_NtUserCallOneParam(PTESTINFO pti)
 {
        Test_OneParamRoutine_BeginDeferWindowPos(pti); /* 0x1e */
        Test_OneParamRoutine_WindowFromDC(pti); /* 0x1f */
 {
        Test_OneParamRoutine_BeginDeferWindowPos(pti); /* 0x1e */
        Test_OneParamRoutine_WindowFromDC(pti); /* 0x1f */
+       Test_OneParamRoutine_CreateEmptyCurObject(pti); /* XP/2k3 : 0x21, vista 0x25 */
        Test_OneParamRoutine_MapDesktopObject(pti); /* 0x30 */
 
        Test_OneParamRoutine_SwapMouseButtons(pti); /* 0x42 */
        Test_OneParamRoutine_MapDesktopObject(pti); /* 0x30 */
 
        Test_OneParamRoutine_SwapMouseButtons(pti); /* 0x42 */
diff --git a/rostests/apitests/w32knapi/ntuser/NtUserGetIconInfo.c b/rostests/apitests/w32knapi/ntuser/NtUserGetIconInfo.c
new file mode 100644 (file)
index 0000000..d0e1ec0
--- /dev/null
@@ -0,0 +1,62 @@
+INT
+Test_NtUserGetIconInfo(PTESTINFO pti)
+{
+       HICON hIcon;
+       ICONINFO iinfo;
+       HBITMAP mask, color;
+
+       ZeroMemory(&iinfo, sizeof(ICONINFO));
+
+       /* BASIC TESTS */
+       hIcon = (HICON) NtUserCallOneParam(0, _ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT);
+       TEST(hIcon != NULL);
+
+       /* Last param is unknown */
+       TEST(NtUserGetIconInfo(hIcon, &iinfo, NULL, NULL, NULL, FALSE) == FALSE);
+       TEST(NtUserGetIconInfo(hIcon, &iinfo, NULL, NULL, NULL, TRUE) == FALSE);
+
+       TEST(NtUserDestroyCursor(hIcon, 0) == TRUE);
+
+       mask = CreateBitmap(16,16,1,1,NULL);
+       color = CreateBitmap(16,16,1,16,NULL);
+
+       iinfo.hbmMask = mask;
+       iinfo.hbmColor = color ;
+       iinfo.fIcon = TRUE;
+       iinfo.xHotspot = 8;
+       iinfo.yHotspot = 8;
+
+       hIcon = CreateIconIndirect(&iinfo);
+       TEST(hIcon!=NULL);
+
+       // TODO : test last parameter...
+       TEST(NtUserGetIconInfo(hIcon, &iinfo, NULL, NULL, NULL, FALSE) == TRUE);
+
+       TEST(iinfo.hbmMask != NULL);
+       TEST(iinfo.hbmColor != NULL);
+       TEST(iinfo.fIcon == TRUE);
+       TEST(iinfo.yHotspot == 8);
+       TEST(iinfo.xHotspot == 8);
+
+       TEST(iinfo.hbmMask != mask);
+       TEST(iinfo.hbmColor != color);
+
+       /* Does it make a difference? */
+       TEST(NtUserGetIconInfo(hIcon, &iinfo, NULL, NULL, NULL, TRUE) == TRUE);
+
+       TEST(iinfo.hbmMask != NULL);
+       TEST(iinfo.hbmColor != NULL);
+       TEST(iinfo.fIcon == TRUE);
+       TEST(iinfo.yHotspot == 8);
+       TEST(iinfo.xHotspot == 8);
+
+       TEST(iinfo.hbmMask != mask);
+       TEST(iinfo.hbmColor != color);
+
+       DeleteObject(mask);
+       DeleteObject(color);
+
+       DestroyIcon(hIcon);
+
+       return APISTATUS_NORMAL;
+}
\ No newline at end of file
index d9639b1..18e0dc4 100644 (file)
@@ -6,6 +6,7 @@ UINT g_OsIdx;
 ASPI gNOPARAM_ROUTINE_CREATEMENU = {-1,-1,0x00,-1,0x00};
 ASPI gNOPARAM_ROUTINE_CREATEMENUPOPUP = {-1,-1,0x01,-1,0x01};
 ASPI gNOPARAM_ROUTINE_LOADUSERAPIHOOK = {-1,-1,0x1d,-1,0x0e};
 ASPI gNOPARAM_ROUTINE_CREATEMENU = {-1,-1,0x00,-1,0x00};
 ASPI gNOPARAM_ROUTINE_CREATEMENUPOPUP = {-1,-1,0x01,-1,0x01};
 ASPI gNOPARAM_ROUTINE_LOADUSERAPIHOOK = {-1,-1,0x1d,-1,0x0e};
+ASPI gONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT = {-1, -1, 0x21, 0x21, 0x25};
 ASPI gONEPARAM_ROUTINE_MAPDEKTOPOBJECT = {-1,-1,0x30,-1,0x31};
 ASPI gONEPARAM_ROUTINE_SWAPMOUSEBUTTON = {-1,-1,0x42,-1,0x44};
 
 ASPI gONEPARAM_ROUTINE_MAPDEKTOPOBJECT = {-1,-1,0x30,-1,0x31};
 ASPI gONEPARAM_ROUTINE_SWAPMOUSEBUTTON = {-1,-1,0x42,-1,0x44};
 
index b38e66b..aa87801 100644 (file)
@@ -50,6 +50,7 @@
 #include "ntuser/NtUserEnumDisplaySettings.c"
 #include "ntuser/NtUserFindExistingCursorIcon.c"
 #include "ntuser/NtUserGetClassInfo.c"
 #include "ntuser/NtUserEnumDisplaySettings.c"
 #include "ntuser/NtUserFindExistingCursorIcon.c"
 #include "ntuser/NtUserGetClassInfo.c"
+#include "ntuser/NtUserGetIconInfo.c"
 #include "ntuser/NtUserGetTitleBarInfo.c"
 #include "ntuser/NtUserProcessConnect.c"
 #include "ntuser/NtUserRedrawWindow.c"
 #include "ntuser/NtUserGetTitleBarInfo.c"
 #include "ntuser/NtUserProcessConnect.c"
 #include "ntuser/NtUserRedrawWindow.c"
@@ -114,6 +115,7 @@ TESTENTRY TestList[] =
        { L"NtUserEnumDisplaySettings", TEST_NtUserEnumDisplaySettings },
        { L"NtUserFindExistingCursorIcon", Test_NtUserFindExistingCursoricon },
        { L"NtUserGetClassInfo", Test_NtUserGetClassInfo },
        { L"NtUserEnumDisplaySettings", TEST_NtUserEnumDisplaySettings },
        { L"NtUserFindExistingCursorIcon", Test_NtUserFindExistingCursoricon },
        { L"NtUserGetClassInfo", Test_NtUserGetClassInfo },
+       { L"NtUserGetIconInfo", Test_NtUserGetIconInfo },
        { L"NtUserGetTitleBarInfo", Test_NtUserGetTitleBarInfo },
        { L"NtUserProcessConnect", Test_NtUserProcessConnect },
        { L"NtUserRedrawWindow", Test_NtUserRedrawWindow },
        { L"NtUserGetTitleBarInfo", Test_NtUserGetTitleBarInfo },
        { L"NtUserProcessConnect", Test_NtUserProcessConnect },
        { L"NtUserRedrawWindow", Test_NtUserRedrawWindow },
index 2821787..4b15d05 100644 (file)
@@ -47,6 +47,7 @@ typedef UINT ASPI[5];
 extern ASPI gNOPARAM_ROUTINE_CREATEMENU;
 extern ASPI gNOPARAM_ROUTINE_CREATEMENUPOPUP;
 extern ASPI gNOPARAM_ROUTINE_LOADUSERAPIHOOK;
 extern ASPI gNOPARAM_ROUTINE_CREATEMENU;
 extern ASPI gNOPARAM_ROUTINE_CREATEMENUPOPUP;
 extern ASPI gNOPARAM_ROUTINE_LOADUSERAPIHOOK;
+extern ASPI gONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT;
 extern ASPI gONEPARAM_ROUTINE_MAPDEKTOPOBJECT;
 extern ASPI gONEPARAM_ROUTINE_SWAPMOUSEBUTTON;
 extern ASPI gHWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW;
 extern ASPI gONEPARAM_ROUTINE_MAPDEKTOPOBJECT;
 extern ASPI gONEPARAM_ROUTINE_SWAPMOUSEBUTTON;
 extern ASPI gHWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW;
@@ -56,6 +57,7 @@ extern ASPI gHWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID;
 #define _NOPARAM_ROUTINE_CREATEMENU gNOPARAM_ROUTINE_CREATEMENU[g_OsIdx]
 #define _NOPARAM_ROUTINE_CREATEMENUPOPUP gNOPARAM_ROUTINE_CREATEMENUPOPUP[g_OsIdx]
 #define _NOPARAM_ROUTINE_LOADUSERAPIHOOK gNOPARAM_ROUTINE_LOADUSERAPIHOOK[g_OsIdx]
 #define _NOPARAM_ROUTINE_CREATEMENU gNOPARAM_ROUTINE_CREATEMENU[g_OsIdx]
 #define _NOPARAM_ROUTINE_CREATEMENUPOPUP gNOPARAM_ROUTINE_CREATEMENUPOPUP[g_OsIdx]
 #define _NOPARAM_ROUTINE_LOADUSERAPIHOOK gNOPARAM_ROUTINE_LOADUSERAPIHOOK[g_OsIdx]
+#define _ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT gONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT[g_OsIdx]
 #define _ONEPARAM_ROUTINE_MAPDEKTOPOBJECT gONEPARAM_ROUTINE_MAPDEKTOPOBJECT[g_OsIdx]
 #define _ONEPARAM_ROUTINE_SWAPMOUSEBUTTON gONEPARAM_ROUTINE_SWAPMOUSEBUTTON[g_OsIdx]
 #define _HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW gHWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW[g_OsIdx]
 #define _ONEPARAM_ROUTINE_MAPDEKTOPOBJECT gONEPARAM_ROUTINE_MAPDEKTOPOBJECT[g_OsIdx]
 #define _ONEPARAM_ROUTINE_SWAPMOUSEBUTTON gONEPARAM_ROUTINE_SWAPMOUSEBUTTON[g_OsIdx]
 #define _HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW gHWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW[g_OsIdx]