From: Jinoh Kang Subject: [PATCH v3 2/5] shell32/tests: Add tests for IShellItemImageFactory. Message-Id: <1acaf301-c2de-4b56-b302-412fca8facef@gmail.com> Date: Sat, 19 Mar 2022 02:38:37 +0900 In-Reply-To: <7580c1c6-cfa7-b72d-0b96-257c48b2071f@gmail.com> References: <7580c1c6-cfa7-b72d-0b96-257c48b2071f@gmail.com> Signed-off-by: Jinoh Kang --- Notes: v1 -> v2: mark test broken on Windows 7 v2 -> v3: remove erroneous todo_wine dlls/shell32/tests/shlfolder.c | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/dlls/shell32/tests/shlfolder.c b/dlls/shell32/tests/shlfolder.c index 7b81ef98110..e26db317f0a 100644 --- a/dlls/shell32/tests/shlfolder.c +++ b/dlls/shell32/tests/shlfolder.c @@ -4482,6 +4482,51 @@ static void test_GetUIObject(void) Cleanup(); } +static void test_IShellItemImageFactory(void) +{ + HRESULT ret; + IShellItem *shellitem; + LPITEMIDLIST pidl_desktop = NULL; + + if (!pSHCreateShellItem) + { + win_skip("SHCreateShellItem isn't available\n"); + return; + } + + ret = SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidl_desktop); + ok(ret == S_OK, "Got 0x%08lx\n", ret); + if (SUCCEEDED(ret)) + { + ret = pSHCreateShellItem(NULL, NULL, pidl_desktop, &shellitem); + ok(SUCCEEDED(ret), "SHCreateShellItem returned %lx\n", ret); + if (SUCCEEDED(ret)) + { + IShellItemImageFactory *siif; + ret = IShellItem_QueryInterface(shellitem, &IID_IShellItemImageFactory, (void **)&siif); + todo_wine ok(ret == S_OK, "QueryInterface returned %lx\n", ret); + if (SUCCEEDED(ret)) + { + HBITMAP hbm = NULL; + SIZE size = {32, 32}; + + ret = IShellItemImageFactory_GetImage(siif, size, SIIGBF_BIGGERSIZEOK, &hbm); + todo_wine ok(ret == S_OK || broken(ret == E_PENDING /* win7 */), "GetImage returned %lx\n", ret); + ok(FAILED(ret) == !hbm, "result = %lx but bitmap = %p\n", ret, hbm); + if (SUCCEEDED(ret) && hbm) + { + DWORD objtype = GetObjectType(hbm); + ok(objtype == OBJ_BITMAP, "Expected type OBJ_BITMAP, got %lu\n", objtype); + DeleteObject(hbm); + } + IShellItemImageFactory_Release(siif); + } + IShellItem_Release(shellitem); + } + ILFree(pidl_desktop); + } +} + static void test_CreateViewObject_contextmenu(void) { IShellFolder *desktop; @@ -5387,6 +5432,7 @@ START_TEST(shlfolder) test_ShellItemArrayEnumItems(); test_desktop_IPersist(); test_GetUIObject(); + test_IShellItemImageFactory(); test_CreateViewObject_contextmenu(); test_SHSimpleIDListFromPath(); test_ParseDisplayNamePBC(); -- 2.34.1