ole32/tests: Link to storage API directly.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Nikolay Sivov 2020-09-09 12:44:30 +03:00 committed by Alexandre Julliard
parent a4f27c3c77
commit 0562c64dd2
2 changed files with 26 additions and 88 deletions

View File

@ -24,22 +24,6 @@
#define PID_BEHAVIOR 0x80000003
#endif
static HRESULT (WINAPI *pFmtIdToPropStgName)(const FMTID *, LPOLESTR);
static HRESULT (WINAPI *pPropStgNameToFmtId)(const LPOLESTR, FMTID *);
static HRESULT (WINAPI *pStgCreatePropSetStg)(IStorage *, DWORD, IPropertySetStorage **);
static HRESULT (WINAPI *pStgCreatePropStg)(IUnknown *, REFFMTID, const CLSID *, DWORD, DWORD, IPropertyStorage **);
static HRESULT (WINAPI *pStgOpenPropStg)(IUnknown *, REFFMTID, DWORD, DWORD, IPropertyStorage **);
static void init_function_pointers(void)
{
HMODULE hmod = GetModuleHandleA("ole32.dll");
pFmtIdToPropStgName = (void*)GetProcAddress(hmod, "FmtIdToPropStgName");
pPropStgNameToFmtId = (void*)GetProcAddress(hmod, "PropStgNameToFmtId");
pStgCreatePropSetStg = (void*)GetProcAddress(hmod, "StgCreatePropSetStg");
pStgCreatePropStg = (void*)GetProcAddress(hmod, "StgCreatePropStg");
pStgOpenPropStg = (void*)GetProcAddress(hmod, "StgOpenPropStg");
}
/* FIXME: this creates an ANSI storage, try to find conditions under which
* Unicode translation fails
*/
@ -79,13 +63,7 @@ static void testPropsHelper(IPropertySetStorage **propSetStorage)
if(propSetStorage)
{
if(!pStgCreatePropSetStg)
{
IStorage_Release(storage);
DeleteFileW(filename);
return;
}
hr = pStgCreatePropSetStg(storage, 0, propSetStorage);
hr = StgCreatePropSetStg(storage, 0, propSetStorage);
ok(hr == S_OK, "StgCreatePropSetStg failed: 0x%08x\n", hr);
hr = IPropertySetStorage_Create(*propSetStorage,
@ -100,14 +78,7 @@ static void testPropsHelper(IPropertySetStorage **propSetStorage)
STGM_CREATE | STGM_READWRITE | STGM_SHARE_EXCLUSIVE, 0, 0, &stream);
ok(hr == S_OK, "IStorage_CreateStream failed: 0x%08x\n", hr);
if(!pStgCreatePropStg)
{
IStorage_Release(storage);
IUnknown_Release(stream);
DeleteFileW(filename);
return;
}
hr = pStgCreatePropStg((IUnknown *)stream, &FMTID_SummaryInformation,
hr = StgCreatePropStg((IUnknown *)stream, &FMTID_SummaryInformation,
NULL, PROPSETFLAG_ANSI, 0, &propertyStorage);
ok(hr == S_OK, "StgCreatePropStg failed: 0x%08x\n", hr);
}
@ -289,7 +260,7 @@ static void testPropsHelper(IPropertySetStorage **propSetStorage)
if(propSetStorage)
{
hr = pStgCreatePropSetStg(storage, 0, propSetStorage);
hr = StgCreatePropSetStg(storage, 0, propSetStorage);
ok(hr == S_OK, "StgCreatePropSetStg failed: 0x%08x\n", hr);
hr = IPropertySetStorage_Open(*propSetStorage, &FMTID_SummaryInformation,
@ -302,14 +273,7 @@ static void testPropsHelper(IPropertySetStorage **propSetStorage)
0, STGM_READWRITE | STGM_SHARE_EXCLUSIVE, 0, &stream);
ok(hr == S_OK, "IStorage_OpenStream failed: 0x%08x\n", hr);
if(!pStgOpenPropStg)
{
IStorage_Release(storage);
IUnknown_Release(stream);
DeleteFileW(filename);
return;
}
hr = pStgOpenPropStg((IUnknown *)stream, &FMTID_SummaryInformation,
hr = StgOpenPropStg((IUnknown *)stream, &FMTID_SummaryInformation,
PROPSETFLAG_DEFAULT, 0, &propertyStorage);
ok(hr == S_OK, "StgOpenPropStg failed: 0x%08x\n", hr);
}
@ -345,7 +309,7 @@ static void testPropsHelper(IPropertySetStorage **propSetStorage)
if(propSetStorage)
{
hr = pStgCreatePropSetStg(storage, 0, propSetStorage);
hr = StgCreatePropSetStg(storage, 0, propSetStorage);
ok(hr == S_OK, "StgCreatePropSetStg failed: 0x%08x\n", hr);
hr = IPropertySetStorage_Create(*propSetStorage,
@ -360,7 +324,7 @@ static void testPropsHelper(IPropertySetStorage **propSetStorage)
STGM_CREATE | STGM_READWRITE | STGM_SHARE_EXCLUSIVE, 0, 0, &stream);
ok(hr == S_OK, "IStorage_CreateStream failed: 0x%08x\n", hr);
hr = pStgCreatePropStg((IUnknown *)stream, &anyOldGuid, NULL,
hr = StgCreatePropStg((IUnknown *)stream, &anyOldGuid, NULL,
PROPSETFLAG_DEFAULT, 0, &propertyStorage);
ok(hr == S_OK, "StgCreatePropStg failed: 0x%08x\n", hr);
}
@ -387,7 +351,7 @@ static void testPropsHelper(IPropertySetStorage **propSetStorage)
if(propSetStorage)
{
hr = pStgCreatePropSetStg(storage, 0, propSetStorage);
hr = StgCreatePropSetStg(storage, 0, propSetStorage);
ok(hr == S_OK, "StgCreatePropSetStg failed: 0x%08x\n", hr);
hr = IPropertySetStorage_Open(*propSetStorage, &anyOldGuid,
@ -400,7 +364,7 @@ static void testPropsHelper(IPropertySetStorage **propSetStorage)
0, STGM_READWRITE | STGM_SHARE_EXCLUSIVE, 0, &stream);
ok(hr == S_OK, "IStorage_OpenStream failed: 0x%08x\n", hr);
hr = pStgOpenPropStg((IUnknown *)stream, &anyOldGuid,
hr = StgOpenPropStg((IUnknown *)stream, &anyOldGuid,
PROPSETFLAG_DEFAULT, 0, &propertyStorage);
ok(hr == S_OK, "StgOpenPropStg failed: 0x%08x\n", hr);
}
@ -451,13 +415,7 @@ static void testCodepage(void)
STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE, 0, &storage);
ok(hr == S_OK, "StgCreateDocfile failed: 0x%08x\n", hr);
if(!pStgCreatePropSetStg)
{
IStorage_Release(storage);
DeleteFileW(fileName);
return;
}
hr = pStgCreatePropSetStg(storage, 0, &propSetStorage);
hr = StgCreatePropSetStg(storage, 0, &propSetStorage);
ok(hr == S_OK, "StgCreatePropSetStg failed: 0x%08x\n", hr);
hr = IPropertySetStorage_Create(propSetStorage,
@ -540,7 +498,7 @@ static void testCodepage(void)
STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE, 0, &storage);
ok(hr == S_OK, "StgCreateDocfile failed: 0x%08x\n", hr);
hr = pStgCreatePropSetStg(storage, 0, &propSetStorage);
hr = StgCreatePropSetStg(storage, 0, &propSetStorage);
ok(hr == S_OK, "StgCreatePropSetStg failed: 0x%08x\n", hr);
hr = IPropertySetStorage_Create(propSetStorage,
@ -609,64 +567,60 @@ static void testFmtId(void)
FMTID fmtid;
HRESULT hr;
if (pFmtIdToPropStgName) {
hr = pFmtIdToPropStgName(NULL, name);
hr = FmtIdToPropStgName(NULL, name);
ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got 0x%08x\n", hr);
hr = pFmtIdToPropStgName(&FMTID_SummaryInformation, NULL);
hr = FmtIdToPropStgName(&FMTID_SummaryInformation, NULL);
ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got 0x%08x\n", hr);
hr = pFmtIdToPropStgName(&FMTID_SummaryInformation, name);
hr = FmtIdToPropStgName(&FMTID_SummaryInformation, name);
ok(hr == S_OK, "FmtIdToPropStgName failed: 0x%08x\n", hr);
ok(!memcmp(name, szSummaryInfo, (lstrlenW(szSummaryInfo) + 1) *
sizeof(WCHAR)), "Got wrong name for FMTID_SummaryInformation\n");
hr = pFmtIdToPropStgName(&FMTID_DocSummaryInformation, name);
hr = FmtIdToPropStgName(&FMTID_DocSummaryInformation, name);
ok(hr == S_OK, "FmtIdToPropStgName failed: 0x%08x\n", hr);
ok(!memcmp(name, szDocSummaryInfo, (lstrlenW(szDocSummaryInfo) + 1) *
sizeof(WCHAR)), "Got wrong name for FMTID_DocSummaryInformation\n");
hr = pFmtIdToPropStgName(&FMTID_UserDefinedProperties, name);
hr = FmtIdToPropStgName(&FMTID_UserDefinedProperties, name);
ok(hr == S_OK, "FmtIdToPropStgName failed: 0x%08x\n", hr);
ok(!memcmp(name, szDocSummaryInfo, (lstrlenW(szDocSummaryInfo) + 1) *
sizeof(WCHAR)), "Got wrong name for FMTID_DocSummaryInformation\n");
hr = pFmtIdToPropStgName(&IID_IPropertySetStorage, name);
hr = FmtIdToPropStgName(&IID_IPropertySetStorage, name);
ok(hr == S_OK, "FmtIdToPropStgName failed: 0x%08x\n", hr);
ok(!memcmp(name, szIID_IPropSetStg, (lstrlenW(szIID_IPropSetStg) + 1) *
sizeof(WCHAR)), "Got wrong name for IID_IPropertySetStorage\n");
}
if(pPropStgNameToFmtId) {
/* test args first */
hr = pPropStgNameToFmtId(NULL, NULL);
hr = PropStgNameToFmtId(NULL, NULL);
ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got 0x%08x\n", hr);
hr = pPropStgNameToFmtId(NULL, &fmtid);
hr = PropStgNameToFmtId(NULL, &fmtid);
ok(hr == STG_E_INVALIDNAME, "Expected STG_E_INVALIDNAME, got 0x%08x\n",
hr);
hr = pPropStgNameToFmtId(szDocSummaryInfo, NULL);
hr = PropStgNameToFmtId(szDocSummaryInfo, NULL);
ok(hr == E_INVALIDARG, "Expected E_INVALIDARG, got 0x%08x\n", hr);
/* test the known format IDs */
hr = pPropStgNameToFmtId(szSummaryInfo, &fmtid);
hr = PropStgNameToFmtId(szSummaryInfo, &fmtid);
ok(hr == S_OK, "PropStgNameToFmtId failed: 0x%08x\n", hr);
ok(!memcmp(&fmtid, &FMTID_SummaryInformation, sizeof(fmtid)),
"Got unexpected FMTID, expected FMTID_SummaryInformation\n");
hr = pPropStgNameToFmtId(szDocSummaryInfo, &fmtid);
hr = PropStgNameToFmtId(szDocSummaryInfo, &fmtid);
ok(hr == S_OK, "PropStgNameToFmtId failed: 0x%08x\n", hr);
ok(!memcmp(&fmtid, &FMTID_DocSummaryInformation, sizeof(fmtid)),
"Got unexpected FMTID, expected FMTID_DocSummaryInformation\n");
/* test another GUID */
hr = pPropStgNameToFmtId(szIID_IPropSetStg, &fmtid);
hr = PropStgNameToFmtId(szIID_IPropSetStg, &fmtid);
ok(hr == S_OK, "PropStgNameToFmtId failed: 0x%08x\n", hr);
ok(!memcmp(&fmtid, &IID_IPropertySetStorage, sizeof(fmtid)),
"Got unexpected FMTID, expected IID_IPropertySetStorage\n");
/* now check case matching */
CharUpperW(szDocSummaryInfo + 1);
hr = pPropStgNameToFmtId(szDocSummaryInfo, &fmtid);
hr = PropStgNameToFmtId(szDocSummaryInfo, &fmtid);
ok(hr == S_OK, "PropStgNameToFmtId failed: 0x%08x\n", hr);
ok(!memcmp(&fmtid, &FMTID_DocSummaryInformation, sizeof(fmtid)),
"Got unexpected FMTID, expected FMTID_DocSummaryInformation\n");
CharUpperW(szIID_IPropSetStg + 1);
hr = pPropStgNameToFmtId(szIID_IPropSetStg, &fmtid);
hr = PropStgNameToFmtId(szIID_IPropSetStg, &fmtid);
ok(hr == S_OK, "PropStgNameToFmtId failed: 0x%08x\n", hr);
ok(!memcmp(&fmtid, &IID_IPropertySetStorage, sizeof(fmtid)),
"Got unexpected FMTID, expected IID_IPropertySetStorage\n");
}
}
static void test_propertyset_storage_enum(void)
@ -785,7 +739,6 @@ todo_wine {
START_TEST(stg_prop)
{
init_function_pointers();
testProps();
testCodepage();
testFmtId();

View File

@ -446,23 +446,14 @@ static void test_create_storage_modes(void)
static void test_stgcreatestorageex(void)
{
HRESULT (WINAPI *pStgCreateStorageEx)(const WCHAR* pwcsName, DWORD grfMode, DWORD stgfmt, DWORD grfAttrs, STGOPTIONS* pStgOptions, void* reserved, REFIID riid, void** ppObjectOpen);
HMODULE hOle32 = GetModuleHandleA("ole32");
IStorage *stg = NULL;
STGOPTIONS stgoptions = {1, 0, 4096};
HRESULT r;
pStgCreateStorageEx = (void *) GetProcAddress(hOle32, "StgCreateStorageEx");
if (!pStgCreateStorageEx)
{
win_skip("skipping test on NT4\n");
return;
}
DeleteFileA(filenameA);
/* Verify that StgCreateStorageEx can accept an options param */
r = pStgCreateStorageEx( filename,
r = StgCreateStorageEx( filename,
STGM_SHARE_EXCLUSIVE | STGM_READWRITE,
STGFMT_DOCFILE,
0,
@ -471,19 +462,13 @@ static void test_stgcreatestorageex(void)
&IID_IStorage,
(void **) &stg);
ok(r==S_OK || r==STG_E_UNIMPLEMENTEDFUNCTION, "StgCreateStorageEx with options failed\n");
if (r==STG_E_UNIMPLEMENTEDFUNCTION)
{
/* We're on win98 which means all bets are off. Let's get out of here. */
win_skip("skipping test on win9x\n");
return;
}
r = IStorage_Release(stg);
ok(r == 0, "storage not released\n");
ok(DeleteFileA(filenameA), "failed to delete file\n");
/* Verify that StgCreateStorageEx can accept a NULL pStgOptions */
r = pStgCreateStorageEx( filename,
r = StgCreateStorageEx( filename,
STGM_SHARE_EXCLUSIVE | STGM_READWRITE,
STGFMT_STORAGE,
0,