Huw Davies : ole32/tests: Add tests for InitNew().

Alexandre Julliard julliard at winehq.org
Tue Jun 6 15:23:33 CDT 2017


Module: wine
Branch: master
Commit: 292f8266b951e8daef0067acb1ad3e98f218420d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=292f8266b951e8daef0067acb1ad3e98f218420d

Author: Huw Davies <huw at codeweavers.com>
Date:   Tue Jun  6 11:46:54 2017 +0100

ole32/tests: Add tests for InitNew().

Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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 2db6de9..b30f63b 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();




More information about the wine-cvs mailing list