Author: cwittich Date: Sun Jan 18 13:23:06 2009 New Revision: 38907
URL: http://svn.reactos.org/svn/reactos?rev=38907&view=rev Log: sync ole32 winetest to wine 1.1.13
Modified: trunk/rostests/winetests/ole32/compobj.c trunk/rostests/winetests/ole32/marshal.c trunk/rostests/winetests/ole32/moniker.c trunk/rostests/winetests/ole32/ole2.c trunk/rostests/winetests/ole32/storage32.c trunk/rostests/winetests/ole32/usrmarshal.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] Sun Jan 18 13:23:06 2009 @@ -29,6 +29,9 @@ #include "shlguid.h" #include "urlmon.h" /* for CLSID_FileProtocol */
+#include "initguid.h" +#include "ctxtcall.h" + #include "wine/test.h"
/* functions that are not present on all versions of Windows */ @@ -887,7 +890,7 @@ ok(hr == S_OK, "CoGetClassObject on local server object registered in same " "thread should return S_OK instead of 0x%08x\n", hr);
- thread = CreateThread(NULL, 0, revoke_class_object_thread, (LPVOID)cookie, 0, &tid); + thread = CreateThread(NULL, 0, revoke_class_object_thread, (LPVOID)(DWORD_PTR)cookie, 0, &tid); ok(thread != NULL, "CreateThread failed with error %d\n", GetLastError()); WaitForSingleObject(thread, INFINITE); GetExitCodeThread(thread, &exitcode); @@ -931,7 +934,7 @@
ok(!is_module_loaded("urlmon.dll"), "urlmon.dll shouldn't be loaded\n");
- hr = CoCreateInstance(&CLSID_FileProtocol, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)&pUnk); + hr = CoCreateInstance(&CLSID_FileProtocol, NULL, CLSCTX_INPROC_SERVER, &IID_IInternetProtocol, (void **)&pUnk); if (hr == REGDB_E_CLASSNOTREG) { trace("IE not installed so can't run CoFreeUnusedLibraries test\n"); @@ -967,6 +970,7 @@ HRESULT hr; ULONG refs; IComThreadingInfo *pComThreadingInfo; + IContextCallback *pContextCallback; APTTYPE apttype; THDTYPE thdtype;
@@ -996,6 +1000,15 @@ refs = IComThreadingInfo_Release(pComThreadingInfo); ok(refs == 0, "pComThreadingInfo should have 0 refs instead of %d refs\n", refs);
+ hr = pCoGetObjectContext(&IID_IContextCallback, (void **)&pContextCallback); + ok_ole_success(hr, "CoGetObjectContext(ContextCallback)"); + + if (hr == S_OK) + { + refs = IContextCallback_Release(pContextCallback); + ok(refs == 0, "pContextCallback should have 0 refs instead of %d refs\n", refs); + } + CoUninitialize();
pCoInitializeEx(NULL, COINIT_MULTITHREADED); @@ -1014,14 +1027,41 @@ refs = IComThreadingInfo_Release(pComThreadingInfo); ok(refs == 0, "pComThreadingInfo should have 0 refs instead of %d refs\n", refs);
- CoUninitialize(); + hr = pCoGetObjectContext(&IID_IContextCallback, (void **)&pContextCallback); + ok_ole_success(hr, "CoGetObjectContext(ContextCallback)"); + + if (hr == S_OK) + { + refs = IContextCallback_Release(pContextCallback); + ok(refs == 0, "pContextCallback should have 0 refs instead of %d refs\n", refs); + } + + CoUninitialize(); +} + +static void test_CoInitializeEx(void) +{ + HRESULT hr; + + hr = pCoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + ok(hr == S_OK, "CoInitializeEx failed with error 0x%08x\n", hr); + + /* Calling OleInitialize for the first time should yield S_OK even with + * apartment already initialized by previous CoInitialize(Ex) calls. */ + hr = OleInitialize(NULL); + todo_wine ok(hr == S_OK, "OleInitialize failed with error 0x%08x\n", hr); + + /* Subsequent calls to OleInitialize should return S_FALSE */ + hr = OleInitialize(NULL); + ok(hr == S_FALSE, "Expected S_FALSE, hr = 0x%08x\n", hr); + + /* Cleanup */ + CoUninitialize(); + OleUninitialize(); }
START_TEST(compobj) { - skip("ROS-HACK: Skipping compobj tests\n"); - return; - HMODULE hOle32 = GetModuleHandle("ole32"); pCoGetObjectContext = (void*)GetProcAddress(hOle32, "CoGetObjectContext"); if (!(pCoInitializeEx = (void*)GetProcAddress(hOle32, "CoInitializeEx"))) @@ -1048,4 +1088,5 @@ test_registered_object_thread_affinity(); test_CoFreeUnusedLibraries(); test_CoGetObjectContext(); -} + test_CoInitializeEx(); +}
Modified: trunk/rostests/winetests/ole32/marshal.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ole32/marshal.c?... ============================================================================== --- trunk/rostests/winetests/ole32/marshal.c [iso-8859-1] (original) +++ trunk/rostests/winetests/ole32/marshal.c [iso-8859-1] Sun Jan 18 13:23:06 2009 @@ -2056,15 +2056,18 @@
if (mshctx == MSHCTX_INPROC) { - DWORD expected_size = sizeof(DWORD) + sizeof(void *) + sizeof(DWORD) + sizeof(GUID); + DWORD expected_size = 3*sizeof(DWORD) + sizeof(GUID); ok(size == expected_size, "size should have been %d instead of %d\n", expected_size, size);
ok(*(DWORD *)marshal_data == mshlflags, "expected 0x%x, but got 0x%x for mshctx\n", mshlflags, *(DWORD *)marshal_data); marshal_data += sizeof(DWORD); ok(*(void **)marshal_data == ptr, "expected %p, but got %p for mshctx\n", ptr, *(void **)marshal_data); marshal_data += sizeof(void *); - ok(*(DWORD *)marshal_data == 0, "expected 0x0, but got 0x%x\n", *(DWORD *)marshal_data); - marshal_data += sizeof(DWORD); + if (sizeof(void*) == 4) + { + ok(*(DWORD *)marshal_data == 0, "expected 0x0, but got 0x%x\n", *(DWORD *)marshal_data); + marshal_data += sizeof(DWORD); + } trace("got guid data: {%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\n", ((GUID *)marshal_data)->Data1, ((GUID *)marshal_data)->Data2, ((GUID *)marshal_data)->Data3, ((GUID *)marshal_data)->Data4[0], ((GUID *)marshal_data)->Data4[1], ((GUID *)marshal_data)->Data4[2], ((GUID *)marshal_data)->Data4[3],
Modified: trunk/rostests/winetests/ole32/moniker.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ole32/moniker.c?... ============================================================================== --- trunk/rostests/winetests/ole32/moniker.c [iso-8859-1] (original) +++ trunk/rostests/winetests/ole32/moniker.c [iso-8859-1] Sun Jan 18 13:23:06 2009 @@ -1332,6 +1332,9 @@ ok_ole_success(hr, CreateBindCtx);
/* IsRunning test */ + hr = IMoniker_IsRunning(moniker, NULL, NULL, NULL); + ok(hr == E_NOTIMPL, "IMoniker_IsRunning should return E_NOTIMPL, not 0x%08x\n", hr); + hr = IMoniker_IsRunning(moniker, bindctx, NULL, NULL); ok(hr == E_NOTIMPL, "IMoniker_IsRunning should return E_NOTIMPL, not 0x%08x\n", hr);
@@ -1461,6 +1464,10 @@ ok_ole_success(hr, CreateBindCtx);
/* IsRunning test */ + hr = IMoniker_IsRunning(moniker, NULL, NULL, NULL); + todo_wine + ok(hr == E_INVALIDARG, "IMoniker_IsRunning should return E_INVALIDARG, not 0x%08x\n", hr); + hr = IMoniker_IsRunning(moniker, bindctx, NULL, NULL); ok(hr == S_FALSE, "IMoniker_IsRunning should return S_FALSE, not 0x%08x\n", hr);
@@ -1593,6 +1600,10 @@ ok_ole_success(hr, CreateBindCtx);
/* IsRunning test */ + hr = IMoniker_IsRunning(moniker, NULL, NULL, NULL); + todo_wine + ok(hr == E_INVALIDARG, "IMoniker_IsRunning should return E_INVALIDARG, not 0x%08x\n", hr); + hr = IMoniker_IsRunning(moniker, bindctx, NULL, NULL); todo_wine ok(hr == S_FALSE, "IMoniker_IsRunning should return S_FALSE, not 0x%08x\n", hr); @@ -1750,7 +1761,7 @@ hr = IBindCtx_GetBindOptions(pBindCtx, (BIND_OPTS *)&bind_opts); ok_ole_success(hr, "IBindCtx_GetBindOptions"); ok(bind_opts.cbStruct == sizeof(bind_opts) || - bind_opts.cbStruct == 36, /* Vista */ + bind_opts.cbStruct == sizeof(bind_opts) + sizeof(void*), /* Vista */ "bind_opts.cbStruct was %d\n", bind_opts.cbStruct);
bind_opts.cbStruct = sizeof(BIND_OPTS);
Modified: trunk/rostests/winetests/ole32/ole2.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ole32/ole2.c?rev... ============================================================================== --- trunk/rostests/winetests/ole32/ole2.c [iso-8859-1] (original) +++ trunk/rostests/winetests/ole32/ole2.c [iso-8859-1] Sun Jan 18 13:23:06 2009 @@ -1384,7 +1384,6 @@ hr);
hr = IOleObject_GetMiscStatus(pObject, DVASPECT_CONTENT, &dwStatus); - todo_wine ok(hr == REGDB_E_CLASSNOTREG, "IOleObject_GetMiscStatus should have returned REGDB_E_CLASSNOTREG instead of 0x%08x\n", hr);
hr = IOleObject_GetUserClassID(pObject, &clsid);
Modified: trunk/rostests/winetests/ole32/storage32.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ole32/storage32.... ============================================================================== --- trunk/rostests/winetests/ole32/storage32.c [iso-8859-1] (original) +++ trunk/rostests/winetests/ole32/storage32.c [iso-8859-1] Sun Jan 18 13:23:06 2009 @@ -803,6 +803,56 @@ DeleteFileW(filename); }
+static void test_writeclassstg(void) +{ + static const WCHAR szPrefix[] = { 's','t','g',0 }; + static const WCHAR szDot[] = { '.',0 }; + WCHAR filename[MAX_PATH]; + IStorage *stg = NULL; + HRESULT r; + CLSID temp_cls; + + if(!GetTempFileNameW(szDot, szPrefix, 0, filename)) + return; + + DeleteFileW(filename); + + /* create the file */ + r = StgCreateDocfile( filename, STGM_CREATE | STGM_SHARE_EXCLUSIVE | + STGM_READWRITE, 0, &stg); + ok(r==S_OK, "StgCreateDocfile failed\n"); + + r = ReadClassStg( NULL, NULL ); + ok(r == E_INVALIDARG, "ReadClassStg should return E_INVALIDARG instead of 0x%08X\n", r); + + r = ReadClassStg( stg, NULL ); + ok(r == E_INVALIDARG, "ReadClassStg should return E_INVALIDARG instead of 0x%08X\n", r); + + temp_cls.Data1 = 0xdeadbeef; + r = ReadClassStg( stg, &temp_cls ); + ok(r == S_OK, "ReadClassStg failed with 0x%08X\n", r); + + ok(IsEqualCLSID(&temp_cls, &CLSID_NULL), "ReadClassStg returned wrong clsid\n"); + + r = WriteClassStg( NULL, NULL ); + ok(r == E_INVALIDARG, "WriteClassStg should return E_INVALIDARG instead of 0x%08X\n", r); + + r = WriteClassStg( stg, NULL ); + ok(r == STG_E_INVALIDPOINTER, "WriteClassStg should return STG_E_INVALIDPOINTER instead of 0x%08X\n", r); + + r = WriteClassStg( stg, &test_stg_cls ); + ok( r == S_OK, "WriteClassStg failed with 0x%08X\n", r); + + r = ReadClassStg( stg, &temp_cls ); + ok( r == S_OK, "ReadClassStg failed with 0x%08X\n", r); + ok(IsEqualCLSID(&temp_cls, &test_stg_cls), "ReadClassStg returned wrong clsid\n"); + + r = IStorage_Release( stg ); + ok (r == 0, "storage not released\n"); + + DeleteFileW(filename); +} + static void test_streamenum(void) { static const WCHAR szPrefix[] = { 's','t','g',0 }; @@ -1229,4 +1279,5 @@ test_transact(); test_ReadClassStm(); test_access(); -} + test_writeclassstg(); +}
Modified: trunk/rostests/winetests/ole32/usrmarshal.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/ole32/usrmarshal... ============================================================================== --- trunk/rostests/winetests/ole32/usrmarshal.c [iso-8859-1] (original) +++ trunk/rostests/winetests/ole32/usrmarshal.c [iso-8859-1] Sun Jan 18 13:23:06 2009 @@ -33,6 +33,17 @@ unsigned char * __RPC_USER HMETAFILE_UserMarshal(ULONG *, unsigned char *, HMETAFILE *); unsigned char * __RPC_USER HMETAFILE_UserUnmarshal(ULONG *, unsigned char *, HMETAFILE *); void __RPC_USER HMETAFILE_UserFree(ULONG *, HMETAFILE *); + +ULONG __RPC_USER HENHMETAFILE_UserSize(ULONG *, ULONG, HENHMETAFILE *); +unsigned char * __RPC_USER HENHMETAFILE_UserMarshal (ULONG *, unsigned char *, HENHMETAFILE *); +unsigned char * __RPC_USER HENHMETAFILE_UserUnmarshal(ULONG *, unsigned char *, HENHMETAFILE *); +void __RPC_USER HENHMETAFILE_UserFree(ULONG *, HENHMETAFILE *); + +ULONG __RPC_USER HMETAFILEPICT_UserSize(ULONG *, ULONG, HMETAFILEPICT *); +unsigned char * __RPC_USER HMETAFILEPICT_UserMarshal (ULONG *, unsigned char *, HMETAFILEPICT *); +unsigned char * __RPC_USER HMETAFILEPICT_UserUnmarshal(ULONG *, unsigned char *, HMETAFILEPICT *); +void __RPC_USER HMETAFILEPICT_UserFree(ULONG *, HMETAFILEPICT *); +
static const char cf_marshaled[] = {