Vincent Povirk : ole32: Add tests for IStorage_RenameElement.
Alexandre Julliard
julliard at winehq.org
Wed Nov 11 08:33:23 CST 2009
Module: wine
Branch: master
Commit: bc3fa10773a42725fd379bc8eaafdba8138090cf
URL: http://source.winehq.org/git/wine.git/?a=commit;h=bc3fa10773a42725fd379bc8eaafdba8138090cf
Author: Vincent Povirk <vincent at codeweavers.com>
Date: Tue Nov 10 14:09:19 2009 -0600
ole32: Add tests for IStorage_RenameElement.
---
dlls/ole32/tests/storage32.c | 81 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 81 insertions(+), 0 deletions(-)
diff --git a/dlls/ole32/tests/storage32.c b/dlls/ole32/tests/storage32.c
index 480fa17..e4783e8 100644
--- a/dlls/ole32/tests/storage32.c
+++ b/dlls/ole32/tests/storage32.c
@@ -1044,6 +1044,7 @@ static void test_substorage_share(void)
HRESULT r;
static const WCHAR stgname[] = { 'P','E','R','M','S','T','G',0 };
static const WCHAR stmname[] = { 'C','O','N','T','E','N','T','S',0 };
+ static const WCHAR othername[] = { 'N','E','W','N','A','M','E',0 };
DeleteFileA(filenameA);
@@ -1070,6 +1071,11 @@ static void test_substorage_share(void)
if (r == S_OK)
IStorage_Release(stg3);
+ /* cannot rename the storage while it's open */
+ r = IStorage_RenameElement(stg, stgname, othername);
+ todo_wine ok(r==STG_E_ACCESSDENIED, "IStorage->RenameElement should fail %08x\n", r);
+ if (SUCCEEDED(r)) IStorage_RenameElement(stg, othername, stgname);
+
#if 0
/* This crashes on Wine. */
@@ -1105,6 +1111,11 @@ static void test_substorage_share(void)
if (r == S_OK)
IStorage_Release(stm2);
+ /* cannot rename the stream while it's open */
+ r = IStorage_RenameElement(stg, stmname, othername);
+ todo_wine ok(r==STG_E_ACCESSDENIED, "IStorage->RenameElement should fail %08x\n", r);
+ if (SUCCEEDED(r)) IStorage_RenameElement(stg, othername, stmname);
+
/* destroying an object while it's open invalidates it */
r = IStorage_DestroyElement(stg, stmname);
ok(r==S_OK, "IStorage->DestroyElement failed, hr=%08x\n", r);
@@ -2319,6 +2330,75 @@ cleanup:
DeleteFileW(file2_name);
}
+static void test_rename(void)
+{
+ IStorage *stg, *stg2;
+ IStream *stm;
+ HRESULT r;
+ static const WCHAR stgname[] = { 'P','E','R','M','S','T','G',0 };
+ static const WCHAR stgname2[] = { 'S','T','G',0 };
+ static const WCHAR stmname[] = { 'C','O','N','T','E','N','T','S',0 };
+ static const WCHAR stmname2[] = { 'E','N','T','S',0 };
+
+ DeleteFileA(filenameA);
+
+ /* create the file */
+ r = StgCreateDocfile( filename, STGM_CREATE | STGM_SHARE_EXCLUSIVE |
+ STGM_READWRITE, 0, &stg);
+ ok(r==S_OK, "StgCreateDocfile failed\n");
+
+ /* create a substorage */
+ r = IStorage_CreateStorage(stg, stgname, STGM_READWRITE | STGM_SHARE_EXCLUSIVE, 0, 0, &stg2);
+ ok(r==S_OK, "IStorage->CreateStorage failed, hr=%08x\n", r);
+
+ /* create a stream in the substorage */
+ r = IStorage_CreateStream(stg2, stmname, STGM_READWRITE | STGM_SHARE_EXCLUSIVE, 0, 0, &stm);
+ ok(r==S_OK, "IStorage->CreateStream failed, hr=%08x\n", r);
+ IStream_Release(stm);
+
+ /* rename the stream */
+ r = IStorage_RenameElement(stg2, stmname, stmname2);
+ ok(r==S_OK, "IStorage->RenameElement failed, hr=%08x\n", r);
+
+ /* cannot open stream with old name */
+ r = IStorage_OpenStream(stg2, stmname, NULL, STGM_READWRITE | STGM_SHARE_EXCLUSIVE, 0, &stm);
+ ok(r==STG_E_FILENOTFOUND, "IStorage_OpenStream should fail, hr=%08x\n", r);
+ if (SUCCEEDED(r)) IStream_Release(stm);
+
+ /* can open stream with new name */
+ r = IStorage_OpenStream(stg2, stmname2, NULL, STGM_READWRITE | STGM_SHARE_EXCLUSIVE, 0, &stm);
+ ok(r==S_OK, "IStorage_OpenStream failed, hr=%08x\n", r);
+ if (SUCCEEDED(r)) IStream_Release(stm);
+
+ IStorage_Release(stg2);
+
+ /* rename the storage */
+ IStorage_RenameElement(stg, stgname, stgname2);
+
+ /* cannot open storage with old name */
+ r = IStorage_OpenStorage(stg, stgname, NULL, STGM_READWRITE | STGM_SHARE_EXCLUSIVE, NULL, 0, &stg2);
+ ok(r==STG_E_FILENOTFOUND, "IStorage_OpenStream should fail, hr=%08x\n", r);
+ if (SUCCEEDED(r)) IStorage_Release(stg2);
+
+ /* can open storage with new name */
+ r = IStorage_OpenStorage(stg, stgname2, NULL, STGM_READWRITE | STGM_SHARE_EXCLUSIVE, NULL, 0, &stg2);
+ ok(r==S_OK, "IStorage_OpenStream should fail, hr=%08x\n", r);
+ if (SUCCEEDED(r))
+ {
+ /* opened storage still has the stream */
+ r = IStorage_OpenStream(stg2, stmname2, NULL, STGM_READWRITE | STGM_SHARE_EXCLUSIVE, 0, &stm);
+ ok(r==S_OK, "IStorage_OpenStream failed, hr=%08x\n", r);
+ if (SUCCEEDED(r)) IStream_Release(stm);
+
+ IStorage_Release(stg2);
+ }
+
+ IStorage_Release(stg);
+
+ r = DeleteFileA(filenameA);
+ ok( r == TRUE, "deleted file\n");
+}
+
START_TEST(storage32)
{
CHAR temp[MAX_PATH];
@@ -2354,4 +2434,5 @@ START_TEST(storage32)
test_copyto_snbexclusions();
test_copyto_iidexclusions_storage();
test_copyto_iidexclusions_stream();
+ test_rename();
}
More information about the wine-cvs
mailing list