ole32/tests: Add tests for InitNew().

Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Huw Davies 2017-06-06 11:46:54 +01:00 committed by Alexandre Julliard
parent 33a720b7d7
commit 292f8266b9
1 changed files with 115 additions and 0 deletions

View File

@ -2300,6 +2300,120 @@ static void test_data_cache_init(void)
}
}
static void test_data_cache_initnew(void)
{
HRESULT hr;
IOleCache2 *cache;
IPersistStorage *persist;
IStorage *stg_dib, *stg_mf, *stg_wine;
CLSID clsid;
static const STATDATA initnew_expect[] =
{
{{ CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0, NULL, 1 },
{{ CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0, NULL, 1 },
};
static const STATDATA initnew2_expect[] =
{
{{ CF_METAFILEPICT, 0, DVASPECT_CONTENT, -1, TYMED_MFPICT }, 0, NULL, 1 },
{{ CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0, NULL, 2 },
{{ CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0, NULL, 2 },
};
static const STATDATA initnew3_expect[] =
{
{{ CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0, NULL, 1 },
{{ CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0, NULL, 1 },
{{ CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0, NULL, 2 },
{{ CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0, NULL, 2 },
{{ CF_METAFILEPICT, 0, DVASPECT_CONTENT, -1, TYMED_MFPICT }, 0, NULL, 3 },
};
static const STATDATA initnew4_expect[] =
{
{{ CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0, NULL, 2 },
{{ CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0, NULL, 2 },
{{ CF_METAFILEPICT, 0, DVASPECT_CONTENT, -1, TYMED_MFPICT }, 0, NULL, 3 },
{{ CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0, NULL, 4 },
{{ CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0, NULL, 4 },
};
hr = StgCreateDocfile( NULL, STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE | STGM_DELETEONRELEASE, 0, &stg_dib );
ok( hr == S_OK, "got %08x\n", hr);
hr = IStorage_SetClass( stg_dib, &CLSID_Picture_Dib );
ok( hr == S_OK, "got %08x\n", hr);
hr = StgCreateDocfile( NULL, STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE | STGM_DELETEONRELEASE, 0, &stg_mf );
ok( hr == S_OK, "got %08x\n", hr);
hr = IStorage_SetClass( stg_mf, &CLSID_Picture_Metafile );
ok( hr == S_OK, "got %08x\n", hr);
hr = StgCreateDocfile( NULL, STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE | STGM_DELETEONRELEASE, 0, &stg_wine );
ok( hr == S_OK, "got %08x\n", hr);
hr = IStorage_SetClass( stg_wine, &CLSID_WineTestOld );
ok( hr == S_OK, "got %08x\n", hr);
hr = CreateDataCache( NULL, &CLSID_WineTestOld, &IID_IOleCache2, (void **)&cache );
ok( hr == S_OK, "got %08x\n", hr );
IOleCache2_QueryInterface( cache, &IID_IPersistStorage, (void **) &persist );
hr = IPersistStorage_InitNew( persist, stg_dib );
ok( hr == S_OK, "got %08x\n", hr);
hr = IPersistStorage_GetClassID( persist, &clsid );
ok( hr == S_OK, "got %08x\n", hr );
ok( IsEqualCLSID( &clsid, &CLSID_Picture_Dib ), "got %s\n", wine_dbgstr_guid( &clsid ) );
check_enum_cache( cache, initnew_expect, 2 );
hr = IPersistStorage_InitNew( persist, stg_mf );
ok( hr == CO_E_ALREADYINITIALIZED, "got %08x\n", hr);
hr = IPersistStorage_HandsOffStorage( persist );
ok( hr == S_OK, "got %08x\n", hr);
hr = IPersistStorage_GetClassID( persist, &clsid );
ok( hr == S_OK, "got %08x\n", hr );
ok( IsEqualCLSID( &clsid, &CLSID_Picture_Dib ), "got %s\n", wine_dbgstr_guid( &clsid ) );
hr = IPersistStorage_InitNew( persist, stg_mf );
ok( hr == S_OK, "got %08x\n", hr);
hr = IPersistStorage_GetClassID( persist, &clsid );
ok( hr == S_OK, "got %08x\n", hr );
ok( IsEqualCLSID( &clsid, &CLSID_Picture_Metafile ), "got %s\n", wine_dbgstr_guid( &clsid ) );
check_enum_cache( cache, initnew2_expect, 3 );
hr = IPersistStorage_HandsOffStorage( persist );
ok( hr == S_OK, "got %08x\n", hr);
hr = IPersistStorage_InitNew( persist, stg_dib );
ok( hr == S_OK, "got %08x\n", hr);
hr = IPersistStorage_GetClassID( persist, &clsid );
ok( hr == S_OK, "got %08x\n", hr );
ok( IsEqualCLSID( &clsid, &CLSID_Picture_Dib ), "got %s\n", wine_dbgstr_guid( &clsid ) );
check_enum_cache( cache, initnew3_expect, 5 );
hr = IPersistStorage_HandsOffStorage( persist );
ok( hr == S_OK, "got %08x\n", hr);
hr = IPersistStorage_InitNew( persist, stg_wine );
ok( hr == S_OK, "got %08x\n", hr);
hr = IPersistStorage_GetClassID( persist, &clsid );
ok( hr == S_OK, "got %08x\n", hr );
ok( IsEqualCLSID( &clsid, &CLSID_WineTestOld ), "got %s\n", wine_dbgstr_guid( &clsid ) );
check_enum_cache( cache, initnew4_expect, 5 );
IStorage_Release( stg_wine );
IStorage_Release( stg_mf );
IStorage_Release( stg_dib );
IPersistStorage_Release( persist );
IOleCache2_Release( cache );
}
static void test_default_handler(void)
{
HRESULT hr;
@ -3054,6 +3168,7 @@ START_TEST(ole2)
test_data_cache_dib_contents_stream( 1 );
test_data_cache_bitmap();
test_data_cache_init();
test_data_cache_initnew();
test_default_handler();
test_runnable();
test_OleRun();