[PATCH 7/7] ole32/tests: Add tests for InitNew().
Huw Davies
huw at codeweavers.com
Tue Jun 6 05:46:54 CDT 2017
Signed-off-by: Huw Davies <huw at codeweavers.com>
---
dlls/ole32/tests/ole2.c | 115 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 115 insertions(+)
diff --git a/dlls/ole32/tests/ole2.c b/dlls/ole32/tests/ole2.c
index 2db6de907b..b30f63b5ad 100644
--- a/dlls/ole32/tests/ole2.c
+++ b/dlls/ole32/tests/ole2.c
@@ -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();
--
2.12.0
More information about the wine-patches
mailing list