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:
parent
33a720b7d7
commit
292f8266b9
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue