Author: fireball
Date: Thu Aug 5 21:28:34 2010
New Revision: 48467
URL:
http://svn.reactos.org/svn/reactos?rev=48467&view=rev
Log:
- Sync ole32 and oleaut32 regtests to Wine-1.3.
Modified:
trunk/rostests/winetests/ole32/compobj.c
trunk/rostests/winetests/ole32/dragdrop.c
trunk/rostests/winetests/ole32/ole2.c
trunk/rostests/winetests/oleaut32/olepicture.c
trunk/rostests/winetests/oleaut32/tmarshal.rc
trunk/rostests/winetests/oleaut32/typelib.c
Modified: trunk/rostests/winetests/ole32/compobj.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ole32/compobj.c…
==============================================================================
--- trunk/rostests/winetests/ole32/compobj.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/ole32/compobj.c [iso-8859-1] Thu Aug 5 21:28:34 2010
@@ -34,8 +34,6 @@
#include "ctxtcall.h"
#include "wine/test.h"
-
-extern const IID GUID_NULL;
/* functions that are not present on all versions of Windows */
HRESULT (WINAPI * pCoInitializeEx)(LPVOID lpReserved, DWORD dwCoInit);
Modified: trunk/rostests/winetests/ole32/dragdrop.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ole32/dragdrop.…
==============================================================================
--- trunk/rostests/winetests/ole32/dragdrop.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/ole32/dragdrop.c [iso-8859-1] Thu Aug 5 21:28:34 2010
@@ -31,8 +31,7 @@
#include "wine/test.h"
-static int droptarget_addref_called;
-static int droptarget_release_called;
+static int droptarget_refs;
/* helper macros to make tests a bit leaner */
#define ok_ole_success(hr, func) ok(hr == S_OK, func " failed with error
0x%08x\n", hr)
@@ -54,14 +53,14 @@
static ULONG WINAPI DropTarget_AddRef(IDropTarget* iface)
{
- droptarget_addref_called++;
- return 2;
+ droptarget_refs++;
+ return droptarget_refs;
}
static ULONG WINAPI DropTarget_Release(IDropTarget* iface)
{
- droptarget_release_called++;
- return 1;
+ droptarget_refs--;
+ return droptarget_refs;
}
static HRESULT WINAPI DropTarget_DragEnter(IDropTarget* iface,
@@ -314,10 +313,10 @@
hr = RegisterDragDrop((HWND)0xdeadbeef, &DropTarget);
ok(hr == DRAGDROP_E_INVALIDHWND, "RegisterDragDrop with garbage hwnd should
return DRAGDROP_E_INVALIDHWND instead of 0x%08x\n", hr);
- ok(droptarget_addref_called == 0, "DropTarget_AddRef shouldn't have been
called\n");
+ ok(droptarget_refs == 0, "DropTarget refs should be zero not %d\n",
droptarget_refs);
hr = RegisterDragDrop(hwnd, &DropTarget);
ok_ole_success(hr, "RegisterDragDrop");
- ok(droptarget_addref_called == 1, "DropTarget_AddRef should have been called
once, not %d times\n", droptarget_addref_called);
+ ok(droptarget_refs >= 1, "DropTarget refs should be at least one\n");
prop = GetPropA(hwnd, "OleDropTargetInterface");
ok(prop == &DropTarget, "expected IDropTarget pointer %p, got %p\n",
&DropTarget, prop);
@@ -325,15 +324,15 @@
hr = RegisterDragDrop(hwnd, &DropTarget);
ok(hr == DRAGDROP_E_ALREADYREGISTERED, "RegisterDragDrop with already registered
hwnd should return DRAGDROP_E_ALREADYREGISTERED instead of 0x%08x\n", hr);
- ok(droptarget_release_called == 0, "DropTarget_Release shouldn't have been
called\n");
+ ok(droptarget_refs >= 1, "DropTarget refs should be at least one\n");
OleUninitialize();
- ok(droptarget_release_called == 0, "DropTarget_Release shouldn't have been
called\n");
+ ok(droptarget_refs >= 1, "DropTarget refs should be at least one\n");
hr = RevokeDragDrop(hwnd);
ok_ole_success(hr, "RevokeDragDrop");
- ok(droptarget_release_called == 1 ||
- broken(droptarget_release_called == 0), /* NT4 */
- "DropTarget_Release should have been called once, not %d times\n",
droptarget_release_called);
+ ok(droptarget_refs == 0 ||
+ broken(droptarget_refs == 1), /* NT4 */
+ "DropTarget refs should be zero not %d\n", droptarget_refs);
hr = RevokeDragDrop(NULL);
ok(hr == DRAGDROP_E_INVALIDHWND, "RevokeDragDrop with NULL hwnd should return
DRAGDROP_E_INVALIDHWND instead of 0x%08x\n", hr);
Modified: trunk/rostests/winetests/ole32/ole2.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ole32/ole2.c?re…
==============================================================================
--- trunk/rostests/winetests/ole32/ole2.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/ole32/ole2.c [iso-8859-1] Thu Aug 5 21:28:34 2010
@@ -1585,13 +1585,13 @@
Unknown_Release
};
-static IUnknown Unknown2 = { &UnknownVtbl };
+static IUnknown Unknown = { &UnknownVtbl };
static void test_OleLockRunning(void)
{
HRESULT hr;
- hr = OleLockRunning((LPUNKNOWN)&Unknown2, TRUE, FALSE);
+ hr = OleLockRunning((LPUNKNOWN)&Unknown, TRUE, FALSE);
ok(hr == S_OK, "OleLockRunning failed 0x%08x\n", hr);
}
Modified: trunk/rostests/winetests/oleaut32/olepicture.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/oleaut32/olepic…
==============================================================================
--- trunk/rostests/winetests/oleaut32/olepicture.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/oleaut32/olepicture.c [iso-8859-1] Thu Aug 5 21:28:34 2010
@@ -216,6 +216,13 @@
ok(hres == S_OK,"IPicture_get_Handle does not return S_OK, but 0x%08x\n",
hres);
ok(handle != 0, "IPicture_get_Handle returns a NULL handle, but it should be non
NULL\n");
+ if (handle)
+ {
+ BITMAP bmp;
+ GetObject((HGDIOBJ)handle, sizeof(BITMAP), &bmp);
+ todo_wine ok(bmp.bmBits != 0, "not a dib\n");
+ }
+
width = 0;
hres = IPicture_get_Width (pic, &width);
ok(hres == S_OK,"IPicture_get_Width does not return S_OK, but 0x%08x\n",
hres);
@@ -932,11 +939,11 @@
NoStatStreamImpl* const This=(NoStatStreamImpl*)iface;
if (ppvObject==0) return E_INVALIDARG;
*ppvObject = 0;
- if (memcmp(&IID_IUnknown, riid, sizeof(IID_IUnknown)) == 0)
+ if (IsEqualIID(&IID_IUnknown, riid))
{
*ppvObject = This;
}
- else if (memcmp(&IID_IStream, riid, sizeof(IID_IStream)) == 0)
+ else if (IsEqualIID(&IID_IStream, riid))
{
*ppvObject = This;
}
Modified: trunk/rostests/winetests/oleaut32/tmarshal.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/oleaut32/tmarsh…
==============================================================================
--- trunk/rostests/winetests/oleaut32/tmarshal.rc [iso-8859-1] (original)
+++ trunk/rostests/winetests/oleaut32/tmarshal.rc [iso-8859-1] Thu Aug 5 21:28:34 2010
@@ -28,10 +28,10 @@
#include "wine/wine_common_ver.rc"
/* @makedep: tmarshal.tlb */
-1 TYPELIB LOADONCALL DISCARDABLE tmarshal.tlb
+1 TYPELIB tmarshal.tlb
/* @makedep: test_tlb.tlb */
-2 TYPELIB LOADONCALL DISCARDABLE test_tlb.tlb
+2 TYPELIB test_tlb.tlb
/* @makedep: test_reg.tlb */
-3 TYPELIB LOADONCALL DISCARDABLE test_reg.tlb
+3 TYPELIB test_reg.tlb
Modified: trunk/rostests/winetests/oleaut32/typelib.c
URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/oleaut32/typeli…
==============================================================================
--- trunk/rostests/winetests/oleaut32/typelib.c [iso-8859-1] (original)
+++ trunk/rostests/winetests/oleaut32/typelib.c [iso-8859-1] Thu Aug 5 21:28:34 2010
@@ -56,7 +56,18 @@
#define ok_ole_success(hr, func) ok(hr == S_OK, #func " failed with error
0x%08x\n", hr)
+static HRESULT WINAPI (*pRegisterTypeLibForUser)(ITypeLib*,OLECHAR*,OLECHAR*);
+static HRESULT WINAPI (*pUnRegisterTypeLibForUser)(REFGUID,WORD,WORD,LCID,SYSKIND);
+
static const WCHAR wszStdOle2[] =
{'s','t','d','o','l','e','2','.','t','l','b',0};
+
+static void init_function_pointers(void)
+{
+ HMODULE hmod = GetModuleHandleA("oleaut32.dll");
+
+ pRegisterTypeLibForUser = (void *)GetProcAddress(hmod,
"RegisterTypeLibForUser");
+ pUnRegisterTypeLibForUser = (void *)GetProcAddress(hmod,
"UnRegisterTypeLibForUser");
+}
static void ref_count_test(LPCWSTR type_lib)
{
@@ -108,6 +119,7 @@
static WCHAR wszOLE_COLOR[] =
{'O','L','E','_','C','O','L','O','R',0};
static WCHAR wszClone[] =
{'C','l','o','n','e',0};
static WCHAR wszclone[] =
{'c','l','o','n','e',0};
+ static WCHAR wszJunk[] = {'J','u','n','k',0};
hr = LoadTypeLib(wszStdOle2, &pTypeLib);
ok_ole_success(hr, LoadTypeLib);
@@ -282,6 +294,17 @@
ok(bindptr.lpfuncdesc != NULL, "bindptr.lpfuncdesc should not have been set to
NULL\n");
ITypeInfo_ReleaseFuncDesc(pTypeInfo, bindptr.lpfuncdesc);
ITypeInfo_Release(pTypeInfo);
+
+ /* tests non-existent members */
+ desckind = 0xdeadbeef;
+ bindptr.lptcomp = (ITypeComp*)0xdeadbeef;
+ pTypeInfo = (ITypeInfo*)0xdeadbeef;
+ ulHash = LHashValOfNameSys(SYS_WIN32, LOCALE_NEUTRAL, wszJunk);
+ hr = ITypeComp_Bind(pTypeComp, wszJunk, ulHash, 0, &pTypeInfo, &desckind,
&bindptr);
+ ok_ole_success(hr, ITypeComp_Bind);
+ ok(desckind == DESCKIND_NONE, "desckind should have been DESCKIND_NONE, was:
%d\n", desckind);
+ ok(pTypeInfo == NULL, "pTypeInfo should have been NULL, was: %p\n",
pTypeInfo);
+ ok(bindptr.lptcomp == NULL, "bindptr should have been NULL, was: %p\n",
bindptr.lptcomp);
ITypeComp_Release(pTypeComp);
ITypeInfo_Release(pFontTypeInfo);
@@ -477,31 +500,69 @@
"ITypeInfo_GetIDsOfNames should have returned DISP_E_UNKNOWNNAME instead of
0x%08x\n",
hr);
- /* test invalid memberid */
- dispparams.cNamedArgs = 0;
dispparams.cArgs = 0;
dispparams.rgdispidNamedArgs = NULL;
dispparams.rgvarg = NULL;
+
+ /* test dispparams not NULL */
+
+ /* invalid member id -- wrong flags -- cNamedArgs not bigger than cArgs */
+ dispparams.cNamedArgs = 0;
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, 0xdeadbeef,
DISPATCH_PROPERTYGET, &dispparams, NULL, NULL, NULL);
+ ok(hr == DISP_E_MEMBERNOTFOUND, "ITypeInfo_Invoke should have returned
DISP_E_MEMBERNOTFOUND instead of 0x%08x\n", hr);
+ /* invalid member id -- correct flags -- cNamedArgs not bigger than cArgs */
hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, 0xdeadbeef, DISPATCH_METHOD,
&dispparams, NULL, NULL, NULL);
ok(hr == DISP_E_MEMBERNOTFOUND, "ITypeInfo_Invoke should have returned
DISP_E_MEMBERNOTFOUND instead of 0x%08x\n", hr);
+ /* invalid member id -- wrong flags -- cNamedArgs bigger than cArgs */
+ dispparams.cNamedArgs = 1;
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, 0xdeadbeef,
DISPATCH_PROPERTYGET, &dispparams, NULL, NULL, NULL);
+ ok(hr == E_INVALIDARG, "ITypeInfo_Invoke should have returned E_INVALIDARG
instead of 0x%08x\n", hr);
+ /* invalid member id -- correct flags -- cNamedArgs bigger than cArgs */
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, 0xdeadbeef, DISPATCH_METHOD,
&dispparams, NULL, NULL, NULL);
+ ok(hr == E_INVALIDARG, "ITypeInfo_Invoke should have returned E_INVALIDARG
instead of 0x%08x\n", hr);
+
+
hr = ITypeInfo_GetIDsOfNames(pTypeInfo, &pwszClone, 1, &dispidMember);
ok_ole_success(hr, ITypeInfo_GetIDsOfNames);
- /* test correct memberid, but wrong flags */
+ /* correct member id -- wrong flags -- cNamedArgs not bigger than cArgs */
+ dispparams.cNamedArgs = 0;
hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember,
DISPATCH_PROPERTYGET, &dispparams, NULL, NULL, NULL);
ok(hr == DISP_E_MEMBERNOTFOUND, "ITypeInfo_Invoke should have returned
DISP_E_MEMBERNOTFOUND instead of 0x%08x\n", hr);
-
- /* test NULL dispparams */
+ /* correct member id -- correct flags -- cNamedArgs not bigger than cArgs
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember, DISPATCH_METHOD,
&dispparams, NULL, NULL, NULL);
+ ok(hr == 0x8002000e, "ITypeInfo_Invoke should have returned 0x8002000e instead
of 0x%08x\n", hr); */
+
+ /* correct member id -- wrong flags -- cNamedArgs bigger than cArgs */
+ dispparams.cNamedArgs = 1;
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember,
DISPATCH_PROPERTYGET, &dispparams, NULL, NULL, NULL);
+ ok(hr == E_INVALIDARG, "ITypeInfo_Invoke should have returned E_INVALIDARG
instead of 0x%08x\n", hr);
+ /* correct member id -- correct flags -- cNamedArgs bigger than cArgs */
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember, DISPATCH_METHOD,
&dispparams, NULL, NULL, NULL);
+ ok(hr == E_INVALIDARG, "ITypeInfo_Invoke should have returned E_INVALIDARG
instead of 0x%08x\n", hr);
+
+ /* test NULL dispparams */
+
+ /* correct member id -- wrong flags -- cNamedArgs not bigger than cArgs */
+ dispparams.cNamedArgs = 0;
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember,
DISPATCH_PROPERTYGET, NULL, NULL, NULL, NULL);
+ ok(hr == E_INVALIDARG, "ITypeInfo_Invoke should have returned E_INVALIDARG
instead of 0x%08x\n", hr);
+ /* correct member id -- correct flags -- cNamedArgs not bigger than cArgs */
hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember, DISPATCH_METHOD,
NULL, NULL, NULL, NULL);
ok(hr == E_INVALIDARG, "ITypeInfo_Invoke should have returned E_INVALIDARG
instead of 0x%08x\n", hr);
- /* test dispparams->cNamedArgs being bigger than dispparams->cArgs */
+ /* correct member id -- wrong flags -- cNamedArgs bigger than cArgs */
dispparams.cNamedArgs = 1;
- hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember, DISPATCH_METHOD,
&dispparams, NULL, NULL, NULL);
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember,
DISPATCH_PROPERTYGET, NULL, NULL, NULL, NULL);
ok(hr == E_INVALIDARG, "ITypeInfo_Invoke should have returned E_INVALIDARG
instead of 0x%08x\n", hr);
+ /* correct member id -- correct flags -- cNamedArgs bigger than cArgs */
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember, DISPATCH_METHOD,
NULL, NULL, NULL, NULL);
+ ok(hr == E_INVALIDARG, "ITypeInfo_Invoke should have returned E_INVALIDARG
instead of 0x%08x\n", hr);
ITypeInfo_Release(pTypeInfo);
+
+
hr = ITypeLib_GetTypeInfoOfGuid(pTypeLib, &IID_IDispatch, &pTypeInfo);
ok_ole_success(hr, ITypeLib_GetTypeInfoOfGuid);
@@ -528,11 +589,41 @@
VariantClear(&var);
}
- /* test invoking a method with a [restricted] keyword */
- hr = ITypeInfo_Invoke(pTypeInfo, NULL, dispidMember, DISPATCH_METHOD,
&dispparams, NULL, NULL, NULL);
- todo_wine {
+ /* test invoking a method with a [restricted] keyword */
+
+ /* correct member id -- wrong flags -- cNamedArgs not bigger than cArgs */
+ dispparams.cNamedArgs = 0;
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember,
DISPATCH_PROPERTYGET, &dispparams, NULL, NULL, NULL);
ok(hr == DISP_E_MEMBERNOTFOUND, "ITypeInfo_Invoke should have returned
DISP_E_MEMBERNOTFOUND instead of 0x%08x\n", hr);
- }
+ /* correct member id -- correct flags -- cNamedArgs not bigger than cArgs */
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember, DISPATCH_METHOD,
&dispparams, NULL, NULL, NULL);
+ ok(hr == DISP_E_MEMBERNOTFOUND, "ITypeInfo_Invoke should have returned
DISP_E_MEMBERNOTFOUND instead of 0x%08x\n", hr);
+
+ /* correct member id -- wrong flags -- cNamedArgs bigger than cArgs */
+ dispparams.cNamedArgs = 1;
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember,
DISPATCH_PROPERTYGET, &dispparams, NULL, NULL, NULL);
+ ok(hr == DISP_E_MEMBERNOTFOUND, "ITypeInfo_Invoke should have returned
DISP_E_MEMBERNOTFOUND instead of 0x%08x\n", hr);
+ /* correct member id -- correct flags -- cNamedArgs bigger than cArgs */
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember, DISPATCH_METHOD,
&dispparams, NULL, NULL, NULL);
+ ok(hr == DISP_E_MEMBERNOTFOUND, "ITypeInfo_Invoke should have returned
DISP_E_MEMBERNOTFOUND instead of 0x%08x\n", hr);
+
+ /* test NULL dispparams */
+
+ /* correct member id -- wrong flags -- cNamedArgs not bigger than cArgs */
+ dispparams.cNamedArgs = 0;
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember,
DISPATCH_PROPERTYGET, NULL, NULL, NULL, NULL);
+ ok(hr == DISP_E_MEMBERNOTFOUND, "ITypeInfo_Invoke should have returned
DISP_E_MEMBERNOTFOUND instead of 0x%08x\n", hr);
+ /* correct member id -- correct flags -- cNamedArgs not bigger than cArgs */
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember, DISPATCH_METHOD,
NULL, NULL, NULL, NULL);
+ ok(hr == DISP_E_MEMBERNOTFOUND, "ITypeInfo_Invoke should have returned
DISP_E_MEMBERNOTFOUND instead of 0x%08x\n", hr);
+
+ /* correct member id -- wrong flags -- cNamedArgs bigger than cArgs */
+ dispparams.cNamedArgs = 1;
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember,
DISPATCH_PROPERTYGET, NULL, NULL, NULL, NULL);
+ ok(hr == DISP_E_MEMBERNOTFOUND, "ITypeInfo_Invoke should have returned
DISP_E_MEMBERNOTFOUND instead of 0x%08x\n", hr);
+ /* correct member id -- correct flags -- cNamedArgs bigger than cArgs */
+ hr = ITypeInfo_Invoke(pTypeInfo, (void *)0xdeadbeef, dispidMember, DISPATCH_METHOD,
NULL, NULL, NULL, NULL);
+ ok(hr == DISP_E_MEMBERNOTFOUND, "ITypeInfo_Invoke should have returned
DISP_E_MEMBERNOTFOUND instead of 0x%08x\n", hr);
ITypeInfo_Release(pTypeInfo);
ITypeLib_Release(pTypeLib);
@@ -2094,7 +2185,7 @@
}
-static void test_register_typelib(void)
+static void test_register_typelib(BOOL system_registration)
{
HRESULT hr;
WCHAR filename[MAX_PATH];
@@ -2124,13 +2215,32 @@
{ TKIND_DISPATCH, TYPEFLAG_FDISPATCHABLE }
};
+ trace("Starting %s typelib registration tests\n",
+ system_registration ? "system" : "user");
+
+ if (!system_registration && (!pRegisterTypeLibForUser ||
!pUnRegisterTypeLibForUser))
+ {
+ win_skip("User typelib registration functions are not available\n");
+ return;
+ }
+
filenameA = create_test_typelib(3);
MultiByteToWideChar(CP_ACP, 0, filenameA, -1, filename, MAX_PATH);
hr = LoadTypeLibEx(filename, REGKIND_NONE, &typelib);
ok(SUCCEEDED(hr), "got %08x\n", hr);
- hr = RegisterTypeLib(typelib, filename, NULL);
+ if (system_registration)
+ hr = RegisterTypeLib(typelib, filename, NULL);
+ else
+ hr = pRegisterTypeLibForUser(typelib, filename, NULL);
+ if (hr == TYPE_E_REGISTRYACCESS)
+ {
+ win_skip("Insufficient privileges to register typelib in the
registry\n");
+ ITypeLib_Release(typelib);
+ DeleteFileA(filenameA);
+ return;
+ }
ok(SUCCEEDED(hr), "got %08x\n", hr);
count = ITypeLib_GetTypeInfoCount(typelib);
@@ -2193,7 +2303,10 @@
ITypeInfo_Release(typeinfo);
}
- hr = UnRegisterTypeLib(&LIBID_register_test, 1, 0, LOCALE_NEUTRAL, sizeof(void*)
== 8 ? SYS_WIN64 : SYS_WIN32);
+ if (system_registration)
+ hr = UnRegisterTypeLib(&LIBID_register_test, 1, 0, LOCALE_NEUTRAL,
sizeof(void*) == 8 ? SYS_WIN64 : SYS_WIN32);
+ else
+ hr = pUnRegisterTypeLibForUser(&LIBID_register_test, 1, 0, LOCALE_NEUTRAL,
sizeof(void*) == 8 ? SYS_WIN64 : SYS_WIN32);
ok(SUCCEEDED(hr), "got %08x\n", hr);
ITypeLib_Release(typelib);
@@ -2203,6 +2316,8 @@
START_TEST(typelib)
{
const char *filename;
+
+ init_function_pointers();
ref_count_test(wszStdOle2);
test_TypeComp();
@@ -2218,7 +2333,8 @@
DeleteFile( filename );
}
- test_register_typelib();
+ test_register_typelib(TRUE);
+ test_register_typelib(FALSE);
test_create_typelibs();
}