https://git.reactos.org/?p=reactos.git;a=commitdiff;h=57a9fca04b2c2f2ec3f45220782110f79bfe26f2

commit 57a9fca04b2c2f2ec3f45220782110f79bfe26f2
Author:     Hermès Bélusca-Maïto <[email protected]>
AuthorDate: Sun Oct 7 20:27:49 2018 +0200
Commit:     Hermès Bélusca-Maïto <[email protected]>
CommitDate: Sun Oct 7 20:32:26 2018 +0200

    [USER32_APITEST] Add a test for PrivateExtractIcons(A/W) that shows that 
this API can accept unexpanded file paths.
    CORE-15150
---
 modules/rostests/apitests/user32/CMakeLists.txt    |  1 +
 .../rostests/apitests/user32/PrivateExtractIcons.c | 51 ++++++++++++++++++++++
 modules/rostests/apitests/user32/testlist.c        |  2 +
 3 files changed, 54 insertions(+)

diff --git a/modules/rostests/apitests/user32/CMakeLists.txt 
b/modules/rostests/apitests/user32/CMakeLists.txt
index 6b1ad32939..4d901a4c9d 100644
--- a/modules/rostests/apitests/user32/CMakeLists.txt
+++ b/modules/rostests/apitests/user32/CMakeLists.txt
@@ -22,6 +22,7 @@ list(APPEND SOURCE
     LoadImage.c
     LookupIconIdFromDirectoryEx.c
     NextDlgItem.c
+    PrivateExtractIcons.c
     RealGetWindowClass.c
     RedrawWindow.c
     RegisterClassEx.c
diff --git a/modules/rostests/apitests/user32/PrivateExtractIcons.c 
b/modules/rostests/apitests/user32/PrivateExtractIcons.c
new file mode 100644
index 0000000000..b2b3ef33de
--- /dev/null
+++ b/modules/rostests/apitests/user32/PrivateExtractIcons.c
@@ -0,0 +1,51 @@
+/*
+ * PROJECT:         ReactOS api tests
+ * LICENSE:         LGPLv2.1+ - See COPYING.LIB in the top level directory
+ * PURPOSE:         Test for PrivateExtractIcons
+ * PROGRAMMER:      Hermes Belusca-Maito
+ */
+
+#include "precomp.h"
+
+static struct
+{
+    PCWSTR FilePath;
+    UINT cIcons;        // Return value from PrivateExtractIconsW
+    BOOL bhIconValid;   // Whether or not the returned icon handle is not NULL.
+} IconTests[] =
+{
+    /* Executables with icons */
+    {L"notepad.exe", 1, TRUE},
+    {L"%SystemRoot%\\System32\\cmd.exe", 1, TRUE},
+
+    /* Executable without icon */
+    {L"%SystemRoot%\\System32\\autochk.exe", 0, FALSE},
+
+    /* Existing file */
+    {L"%SystemRoot%\\System32\\shell32.dll", 1, TRUE},
+
+    /* Non-existing files */
+    {L"%SystemRoot%\\non-existent-file.sdf", 0xFFFFFFFF, FALSE},
+};
+
+START_TEST(PrivateExtractIcons)
+{
+    HICON ahIcon;
+    UINT i, aIconId, cIcons;
+
+    for (i = 0; i < _countof(IconTests); ++i)
+    {
+        /* Always test extraction of the FIRST icon (index 0) */
+        ahIcon = (HICON)0xdeadbeef;
+        aIconId = 0xdeadbeef;
+        cIcons = PrivateExtractIconsW(IconTests[i].FilePath, 0, 16, 16, 
&ahIcon, &aIconId, 1, 0);
+        ok(cIcons == IconTests[i].cIcons, "PrivateExtractIconsW(%u): got %u, 
expected %u\n", i, cIcons, IconTests[i].cIcons);
+        ok(ahIcon != (HICON)0xdeadbeef, "PrivateExtractIconsW(%u): icon not 
set\n", i);
+        ok((IconTests[i].bhIconValid && ahIcon) || (!IconTests[i].bhIconValid 
&& !ahIcon),
+            "PrivateExtractIconsW(%u): icon expected to be %s, but got 0x%p\n",
+            i, IconTests[i].bhIconValid ? "valid" : "not valid", ahIcon);
+        ok(aIconId != 0xdeadbeef, "PrivateExtractIconsW(%u): id not set\n", i);
+        if (ahIcon && ahIcon != (HICON)0xdeadbeef)
+            DestroyIcon(ahIcon);
+    }
+}
diff --git a/modules/rostests/apitests/user32/testlist.c 
b/modules/rostests/apitests/user32/testlist.c
index f5214b8bd2..86a1bdbc84 100644
--- a/modules/rostests/apitests/user32/testlist.c
+++ b/modules/rostests/apitests/user32/testlist.c
@@ -24,6 +24,7 @@ extern void func_InitializeLpkHooks(void);
 extern void func_LoadImage(void);
 extern void func_LookupIconIdFromDirectoryEx(void);
 extern void func_NextDlgItem(void);
+extern void func_PrivateExtractIcons(void);
 extern void func_RealGetWindowClass(void);
 extern void func_RedrawWindow(void);
 extern void func_RegisterHotKey(void);
@@ -65,6 +66,7 @@ const struct test winetest_testlist[] =
     { "LoadImage", func_LoadImage },
     { "LookupIconIdFromDirectoryEx", func_LookupIconIdFromDirectoryEx },
     { "NextDlgItem", func_NextDlgItem },
+    { "PrivateExtractIcons", func_PrivateExtractIcons },
     { "RealGetWindowClass", func_RealGetWindowClass },
     { "RedrawWindow", func_RedrawWindow },
     { "RegisterHotKey", func_RegisterHotKey },

Reply via email to