From 8ad729230c1fd7ac8591fb1c0285991b0b0256ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Wed, 14 Jul 2010 14:56:53 +0000 Subject: [PATCH] [W32KNAPI] - Test ONE_PARAM_ROUTINE_CREATEEMPTYCUROBJECT - Test NtUserGetIconInfo svn path=/trunk/; revision=48039 --- .../w32knapi/ntuser/NtUserCallOneParam.c | 21 +++++++ .../w32knapi/ntuser/NtUserGetIconInfo.c | 62 +++++++++++++++++++ rostests/apitests/w32knapi/osver.c | 1 + rostests/apitests/w32knapi/testlist.c | 2 + rostests/apitests/w32knapi/w32knapi.h | 2 + 5 files changed, 88 insertions(+) create mode 100644 rostests/apitests/w32knapi/ntuser/NtUserGetIconInfo.c diff --git a/rostests/apitests/w32knapi/ntuser/NtUserCallOneParam.c b/rostests/apitests/w32knapi/ntuser/NtUserCallOneParam.c index 72b83a07901..519d8e8887c 100644 --- a/rostests/apitests/w32knapi/ntuser/NtUserCallOneParam.c +++ b/rostests/apitests/w32knapi/ntuser/NtUserCallOneParam.c @@ -25,6 +25,26 @@ Test_OneParamRoutine_WindowFromDC(PTESTINFO pti) /* 0x1f */ 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 */ { @@ -66,6 +86,7 @@ Test_NtUserCallOneParam(PTESTINFO pti) { 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 */ diff --git a/rostests/apitests/w32knapi/ntuser/NtUserGetIconInfo.c b/rostests/apitests/w32knapi/ntuser/NtUserGetIconInfo.c new file mode 100644 index 00000000000..d0e1ec018a3 --- /dev/null +++ b/rostests/apitests/w32knapi/ntuser/NtUserGetIconInfo.c @@ -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 diff --git a/rostests/apitests/w32knapi/osver.c b/rostests/apitests/w32knapi/osver.c index d9639b1f197..18e0dc44867 100644 --- a/rostests/apitests/w32knapi/osver.c +++ b/rostests/apitests/w32knapi/osver.c @@ -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 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}; diff --git a/rostests/apitests/w32knapi/testlist.c b/rostests/apitests/w32knapi/testlist.c index b38e66bf0b5..aa87801236e 100644 --- a/rostests/apitests/w32knapi/testlist.c +++ b/rostests/apitests/w32knapi/testlist.c @@ -50,6 +50,7 @@ #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" @@ -114,6 +115,7 @@ TESTENTRY TestList[] = { 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 }, diff --git a/rostests/apitests/w32knapi/w32knapi.h b/rostests/apitests/w32knapi/w32knapi.h index 2821787814a..4b15d05c9ff 100644 --- a/rostests/apitests/w32knapi/w32knapi.h +++ b/rostests/apitests/w32knapi/w32knapi.h @@ -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 gONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT; 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 _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]