Vincent Povirk : ole32: Add a test for modifying read-only substorage objects.

Alexandre Julliard julliard at winehq.org
Thu Dec 10 10:00:56 CST 2009


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

Author: Vincent Povirk <vincent at codeweavers.com>
Date:   Fri Dec  4 15:32:16 2009 -0600

ole32: Add a test for modifying read-only substorage objects.

---

 dlls/ole32/tests/storage32.c |   23 +++++++++++++++++++++--
 1 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/dlls/ole32/tests/storage32.c b/dlls/ole32/tests/storage32.c
index b5ecf22..b658a46 100644
--- a/dlls/ole32/tests/storage32.c
+++ b/dlls/ole32/tests/storage32.c
@@ -1348,7 +1348,7 @@ static void test_parent_free(void)
 
 static void test_nonroot_transacted(void)
 {
-    IStorage *stg = NULL, *stg2 = NULL;
+    IStorage *stg = NULL, *stg2 = NULL, *stg3 = NULL;
     HRESULT r;
     IStream *stm = NULL;
     static const WCHAR stgname[] = { 'P','E','R','M','S','T','G',0 };
@@ -1398,7 +1398,26 @@ static void test_nonroot_transacted(void)
         IStorage_Release(stg2);
     }
 
-    IStream_Release(stg);
+    /* create a read-only transacted substorage */
+    r = IStorage_OpenStorage(stg, stgname, NULL, STGM_READ | STGM_SHARE_EXCLUSIVE | STGM_TRANSACTED, NULL, 0, &stg2);
+    ok(r==S_OK, "IStorage->OpenStorage failed, hr=%08x\n", r);
+
+    if (r == S_OK)
+    {
+        /* The storage can be modified. */
+        r = IStorage_CreateStorage(stg2, stgname, STGM_READWRITE | STGM_SHARE_EXCLUSIVE, 0, 0, &stg3);
+        todo_wine ok(r==S_OK, "IStorage->CreateStorage failed, hr=%08x\n", r);
+        if (r == S_OK)
+            IStream_Release(stg3);
+
+        /* But changes cannot be committed. */
+        r = IStorage_Commit(stg2, 0);
+        todo_wine ok(r==STG_E_ACCESSDENIED, "IStorage->Commit should fail, hr=%08x\n", r);
+
+        IStorage_Release(stg2);
+    }
+
+    IStorage_Release(stg);
 
     /* create a non-transacted file */
     r = StgCreateDocfile( filename, STGM_CREATE | STGM_SHARE_EXCLUSIVE |




More information about the wine-cvs mailing list