[PATCH 1/5 v2] ole32/tests: Some tests for OleRegGetUserType()
Nikolay Sivov
nsivov at codeweavers.com
Thu Dec 24 04:33:55 CST 2015
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
v2: fixed test failures on WinXP/Win2003
dlls/ole32/ole2.c | 3 +++
dlls/ole32/tests/compobj.c | 54 ++++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 55 insertions(+), 2 deletions(-)
diff --git a/dlls/ole32/ole2.c b/dlls/ole32/ole2.c
index 41fe4bd..7f532c3 100644
--- a/dlls/ole32/ole2.c
+++ b/dlls/ole32/ole2.c
@@ -685,6 +685,9 @@ HRESULT WINAPI OleRegGetUserType(
TRACE("(%s, %d, %p)\n", debugstr_guid(clsid), dwFormOfType, pszUserType);
+ if (!pszUserType)
+ return E_INVALIDARG;
+
*pszUserType = NULL;
hres = COM_OpenKeyForCLSID(clsid, NULL, KEY_READ, &clsidKey);
diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c
index 1913e1f..792d7dc 100644
--- a/dlls/ole32/tests/compobj.c
+++ b/dlls/ole32/tests/compobj.c
@@ -271,12 +271,12 @@ static const char actctx_manifest[] =
" progid=\"ProgId.ProgId\""
" miscStatusIcon=\"recomposeonresize\""
" />"
-" <comClass clsid=\"{0be35203-8f91-11ce-9de3-00aa004bb851}\""
+" <comClass description=\"CustomFont Description\" clsid=\"{0be35203-8f91-11ce-9de3-00aa004bb851}\""
" progid=\"CustomFont\""
" miscStatusIcon=\"recomposeonresize\""
" miscStatusContent=\"insideout\""
" />"
-" <comClass clsid=\"{0be35203-8f91-11ce-9de3-00aa004bb852}\""
+" <comClass description=\"StdFont Description\" clsid=\"{0be35203-8f91-11ce-9de3-00aa004bb852}\""
" progid=\"StdFont\""
" />"
" <comClass clsid=\"{62222222-1234-1234-1234-56789abcdef0}\" >"
@@ -2225,6 +2225,55 @@ static void test_OleRegGetMiscStatus(void)
}
}
+static void test_OleRegGetUserType(void)
+{
+ static const WCHAR stdfont_usertypeW[] = {'S','t','a','n','d','a','r','d',' ','F','o','n','t',0};
+ static const WCHAR stdfont2_usertypeW[] = {'C','L','S','I','D','_','S','t','d','F','o','n','t',0};
+ ULONG_PTR cookie;
+ HANDLE handle;
+ HRESULT hr;
+ WCHAR *str;
+ DWORD form;
+
+ for (form = 0; form <= USERCLASSTYPE_APPNAME+1; form++) {
+ hr = OleRegGetUserType(&CLSID_Testclass, form, NULL);
+ ok(hr == E_INVALIDARG, "form %u: got 0x%08x\n", form, hr);
+
+ str = (void*)0xdeadbeef;
+ hr = OleRegGetUserType(&CLSID_Testclass, form, &str);
+ ok(hr == REGDB_E_CLASSNOTREG, "form %u: got 0x%08x\n", form, hr);
+ ok(str == NULL, "form %u: got %p\n", form, str);
+
+ /* same string returned for StdFont for all form types */
+ str = NULL;
+ hr = OleRegGetUserType(&CLSID_StdFont, form, &str);
+ ok(hr == S_OK, "form %u: got 0x%08x\n", form, hr);
+ ok(!lstrcmpW(str, stdfont_usertypeW) || !lstrcmpW(str, stdfont2_usertypeW) /* winxp */,
+ "form %u, got %s\n", form, wine_dbgstr_w(str));
+ CoTaskMemFree(str);
+ }
+
+ if ((handle = activate_context(actctx_manifest, &cookie)))
+ {
+ for (form = 0; form <= USERCLASSTYPE_APPNAME+1; form++) {
+ str = (void*)0xdeadbeef;
+ hr = OleRegGetUserType(&CLSID_Testclass, form, &str);
+ ok(hr == REGDB_E_CLASSNOTREG, "form %u: got 0x%08x\n", form, hr);
+ ok(str == NULL, "form %u: got %s\n", form, wine_dbgstr_w(str));
+
+ /* same string returned for StdFont for all form types */
+ str = NULL;
+ hr = OleRegGetUserType(&CLSID_StdFont, form, &str);
+ ok(hr == S_OK, "form %u: got 0x%08x\n", form, hr);
+ ok(!lstrcmpW(str, stdfont_usertypeW) || !lstrcmpW(str, stdfont2_usertypeW) /* winxp */,
+ "form %u, got %s\n", form, wine_dbgstr_w(str));
+ CoTaskMemFree(str);
+ }
+
+ pDeactivateActCtx(0, cookie);
+ pReleaseActCtx(handle);
+ }
+}
static void test_CoCreateGuid(void)
{
HRESULT hr;
@@ -2722,4 +2771,5 @@ START_TEST(compobj)
test_CoCreateGuid();
test_CoWaitForMultipleHandles();
test_CoGetMalloc();
+ test_OleRegGetUserType();
}
--
2.6.4
More information about the wine-patches
mailing list