Huw Davies : ole32/tests: Add tests for automatic cache entry creation.
Alexandre Julliard
julliard at winehq.org
Tue Jun 6 15:23:33 CDT 2017
Module: wine
Branch: master
Commit: 51cca0b118bb113c21b0b09d0cc186a4025ca28b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=51cca0b118bb113c21b0b09d0cc186a4025ca28b
Author: Huw Davies <huw at codeweavers.com>
Date: Tue Jun 6 11:46:52 2017 +0100
ole32/tests: Add tests for automatic cache entry creation.
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ole32/tests/ole2.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 49 insertions(+), 1 deletion(-)
diff --git a/dlls/ole32/tests/ole2.c b/dlls/ole32/tests/ole2.c
index 6c6bea8..2db6de9 100644
--- a/dlls/ole32/tests/ole2.c
+++ b/dlls/ole32/tests/ole2.c
@@ -36,6 +36,7 @@
DEFINE_GUID(CLSID_Picture_Metafile,0x315,0,0,0xc0,0,0,0,0,0,0,0x46);
DEFINE_GUID(CLSID_Picture_Dib,0x316,0,0,0xc0,0,0,0,0,0,0,0x46);
+DEFINE_GUID(CLSID_Picture_EnhMetafile,0x319,0,0,0xc0,0,0,0,0,0,0,0x46);
#define ok_ole_success(hr, func) ok(hr == S_OK, func " failed with error 0x%08x\n", hr)
@@ -1520,7 +1521,7 @@ static const IUnknownVtbl UnknownVtbl =
static IUnknown unknown = { &UnknownVtbl };
-static void check_enum_cache(IOleCache2 *cache, STATDATA *expect, int num)
+static void check_enum_cache(IOleCache2 *cache, const STATDATA *expect, int num)
{
IEnumSTATDATA *enum_stat;
STATDATA stat;
@@ -2253,6 +2254,52 @@ static void test_data_cache_bitmap(void)
IOleCache2_Release( cache );
}
+/* The CLSID_Picture_ classes automatically create appropriate cache entries */
+static void test_data_cache_init(void)
+{
+ HRESULT hr;
+ IOleCache2 *cache;
+ IPersistStorage *persist;
+ int i;
+ CLSID clsid;
+ static const STATDATA enum_expect[] =
+ {
+ {{ CF_DIB, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }, 0, NULL, 1 },
+ {{ CF_BITMAP, 0, DVASPECT_CONTENT, -1, TYMED_GDI }, 0, NULL, 1 },
+ {{ CF_METAFILEPICT, 0, DVASPECT_CONTENT, -1, TYMED_MFPICT }, 0, NULL, 1 },
+ {{ CF_ENHMETAFILE, 0, DVASPECT_CONTENT, -1, TYMED_ENHMF }, 0, NULL, 1 }
+ };
+ static const struct
+ {
+ const CLSID *clsid;
+ int enum_start, enum_num;
+ } data[] =
+ {
+ { &CLSID_NULL, 0, 0 },
+ { &CLSID_WineTestOld, 0, 0 },
+ { &CLSID_Picture_Dib, 0, 2 },
+ { &CLSID_Picture_Metafile, 2, 1 },
+ { &CLSID_Picture_EnhMetafile, 3, 1 }
+ };
+
+ for (i = 0; i < sizeof(data) / sizeof(data[0]); i++)
+ {
+ hr = CreateDataCache( NULL, data[i].clsid, &IID_IOleCache2, (void **)&cache );
+ ok( hr == S_OK, "got %08x\n", hr );
+
+ check_enum_cache( cache, enum_expect + data[i].enum_start , data[i].enum_num );
+
+ IOleCache2_QueryInterface( cache, &IID_IPersistStorage, (void **) &persist );
+ hr = IPersistStorage_GetClassID( persist, &clsid );
+ ok( hr == S_OK, "got %08x\n", hr );
+ ok( IsEqualCLSID( &clsid, data[i].clsid ), "class id mismatch %s %s\n", wine_dbgstr_guid( &clsid ),
+ wine_dbgstr_guid( data[i].clsid ) );
+
+ IPersistStorage_Release( persist );
+ IOleCache2_Release( cache );
+ }
+}
+
static void test_default_handler(void)
{
HRESULT hr;
@@ -3006,6 +3053,7 @@ START_TEST(ole2)
test_data_cache_dib_contents_stream( 0 );
test_data_cache_dib_contents_stream( 1 );
test_data_cache_bitmap();
+ test_data_cache_init();
test_default_handler();
test_runnable();
test_OleRun();
More information about the wine-cvs
mailing list