Detlef Riekenberg : apphelp/tests: Add tests for ApphelpCheckShellObject.

Alexandre Julliard julliard at winehq.org
Wed Jul 25 16:06:52 CDT 2012


Module: wine
Branch: master
Commit: 084e33d2541e80d20d2a636f9a54d73a26ee8a7b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=084e33d2541e80d20d2a636f9a54d73a26ee8a7b

Author: Detlef Riekenberg <wine.dev at web.de>
Date:   Wed Jul 25 00:10:40 2012 +0200

apphelp/tests: Add tests for ApphelpCheckShellObject.

---

 configure                      |    1 +
 configure.ac                   |    1 +
 dlls/apphelp/tests/Makefile.in |    7 +++
 dlls/apphelp/tests/apphelp.c   |  116 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 125 insertions(+), 0 deletions(-)

diff --git a/configure b/configure
index 0cc7ae6..c4e70d5 100755
--- a/configure
+++ b/configure
@@ -15057,6 +15057,7 @@ wine_fn_config_test dlls/advpack/tests advpack_test
 wine_fn_config_dll amstream enable_amstream
 wine_fn_config_test dlls/amstream/tests amstream_test
 wine_fn_config_dll apphelp enable_apphelp
+wine_fn_config_test dlls/apphelp/tests apphelp_test
 wine_fn_config_dll appwiz.cpl enable_appwiz_cpl po
 wine_fn_config_dll atl enable_atl implib
 wine_fn_config_test dlls/atl/tests atl_test
diff --git a/configure.ac b/configure.ac
index aa2b026..a46a1af 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2462,6 +2462,7 @@ WINE_CONFIG_TEST(dlls/advpack/tests)
 WINE_CONFIG_DLL(amstream)
 WINE_CONFIG_TEST(dlls/amstream/tests)
 WINE_CONFIG_DLL(apphelp)
+WINE_CONFIG_TEST(dlls/apphelp/tests)
 WINE_CONFIG_DLL(appwiz.cpl,,[po])
 WINE_CONFIG_DLL(atl,,[implib])
 WINE_CONFIG_TEST(dlls/atl/tests)
diff --git a/dlls/apphelp/tests/Makefile.in b/dlls/apphelp/tests/Makefile.in
new file mode 100644
index 0000000..0fb6ef6
--- /dev/null
+++ b/dlls/apphelp/tests/Makefile.in
@@ -0,0 +1,7 @@
+TESTDLL   = apphelp.dll
+IMPORTS   = ole32
+
+C_SRCS = \
+	apphelp.c
+
+ at MAKE_TEST_RULES@
diff --git a/dlls/apphelp/tests/apphelp.c b/dlls/apphelp/tests/apphelp.c
new file mode 100644
index 0000000..5b5670c
--- /dev/null
+++ b/dlls/apphelp/tests/apphelp.c
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2012 Detlef Riekenberg
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define COBJMACROS
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <initguid.h>
+#include <exdisp.h>
+#include <shlobj.h>
+#include <urlmon.h>
+
+#include "wine/test.h"
+
+static HMODULE hdll;
+static BOOL (WINAPI *pApphelpCheckShellObject)(REFCLSID, BOOL, ULONGLONG *);
+
+DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
+
+DEFINE_GUID(test_Microsoft_Browser_Architecture, 0xa5e46e3a, 0x8849, 0x11d1, 0x9d, 0x8c, 0x00, 0xc0, 0x4f, 0xc9, 0x9d, 0x61);
+DEFINE_GUID(CLSID_MenuBand, 0x5b4dae26, 0xb807, 0x11d0, 0x98, 0x15, 0x00, 0xc0, 0x4f, 0xd9, 0x19, 0x72);
+DEFINE_GUID(test_UserAssist, 0xdd313e04, 0xfeff, 0x11d1, 0x8e, 0xcd, 0x00, 0x00, 0xf8, 0x7a, 0x47, 0x0c);
+
+static const CLSID * objects[] = {
+    &GUID_NULL,
+    /* used by IE */
+    &test_Microsoft_Browser_Architecture,
+    &CLSID_MenuBand,
+    &CLSID_ShellLink,
+    &CLSID_ShellWindows,
+    &CLSID_InternetSecurityManager,
+    &test_UserAssist,
+    NULL,};
+
+static const char *debugstr_guid(REFIID riid)
+{
+    static char buf[50];
+
+    sprintf(buf, "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
+            riid->Data1, riid->Data2, riid->Data3, riid->Data4[0],
+            riid->Data4[1], riid->Data4[2], riid->Data4[3], riid->Data4[4],
+            riid->Data4[5], riid->Data4[6], riid->Data4[7]);
+
+    return buf;
+}
+
+static void test_ApphelpCheckShellObject(void)
+{
+    ULONGLONG flags;
+    BOOL res;
+    int i;
+
+    if (!pApphelpCheckShellObject)
+    {
+        win_skip("ApphelpCheckShellObject not available\n");
+        return;
+    }
+
+    for (i = 0; objects[i]; i++)
+    {
+        flags = 0xdeadbeef;
+        SetLastError(0xdeadbeef);
+        res = pApphelpCheckShellObject(objects[i], FALSE, &flags);
+        ok(res && (flags == 0), "%s 0: got %d and 0x%x%08x with 0x%x (expected TRUE and 0)\n",
+            debugstr_guid(objects[i]), res, (ULONG)(flags >> 32), (ULONG)flags, GetLastError());
+
+        flags = 0xdeadbeef;
+        SetLastError(0xdeadbeef);
+        res = pApphelpCheckShellObject(objects[i], TRUE, &flags);
+        ok(res && (flags == 0), "%s 1: got %d and 0x%x%08x with 0x%x (expected TRUE and 0)\n",
+            debugstr_guid(objects[i]), res, (ULONG)(flags >> 32), (ULONG)flags, GetLastError());
+
+    }
+
+    /* NULL as pointer to flags is checked */
+    SetLastError(0xdeadbeef);
+    res = pApphelpCheckShellObject(&GUID_NULL, FALSE, NULL);
+    ok(res, "%s 0: got %d with 0x%x (expected != FALSE)\n", debugstr_guid(&GUID_NULL), res, GetLastError());
+
+    /* NULL as CLSID* crash on Windows */
+    if (0)
+    {
+        flags = 0xdeadbeef;
+        SetLastError(0xdeadbeef);
+        res = pApphelpCheckShellObject(NULL, FALSE, &flags);
+        trace("NULL as CLSID*: got %d and 0x%x%08x with 0x%x\n", res, (ULONG)(flags >> 32), (ULONG)flags, GetLastError());
+    }
+}
+
+START_TEST(apphelp)
+{
+
+    hdll = LoadLibrary("apphelp.dll");
+    if (!hdll) {
+        win_skip("apphelp.dll not available\n");
+        return;
+    }
+    pApphelpCheckShellObject = (void *) GetProcAddress(hdll, "ApphelpCheckShellObject");
+
+    test_ApphelpCheckShellObject();
+}




More information about the wine-cvs mailing list