[PATCH 2/5] shell32/tests: Add tests for IShellItemImageFactory.

Jinoh Kang jinoh.kang.kr at gmail.com
Thu Mar 17 12:42:17 CDT 2022


Signed-off-by: Jinoh Kang <jinoh.kang.kr at gmail.com>
---

Notes:
    v1 -> v2: no changes
    
    v1 -> v2: mark test broken on Windows 7

 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..8caefde452f 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);
+                todo_wine 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




More information about the wine-devel mailing list