From b4c3a041650b248a992e53b1f981d6a7c61e9365 Mon Sep 17 00:00:00 2001 From: Juan Lang Date: Mon, 24 May 2010 12:10:40 -0700 Subject: [PATCH] ole32/tests: Test creating an IPropertySetStorage with an unknown format id. --- dlls/ole32/tests/stg_prop.c | 56 +++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/dlls/ole32/tests/stg_prop.c b/dlls/ole32/tests/stg_prop.c index 37e8e1031e2..4e5fde74745 100644 --- a/dlls/ole32/tests/stg_prop.c +++ b/dlls/ole32/tests/stg_prop.c @@ -59,6 +59,8 @@ static void testProps(void) PROPVARIANT var; CLIPDATA clipdata; unsigned char clipcontent[] = "foobar"; + GUID anyOldGuid = { 0x12345678,0xdead,0xbeef, { + 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 } }; if(!GetTempFileNameW(szDot, szPrefix, 0, filename)) return; @@ -290,6 +292,60 @@ static void testProps(void) IStorage_Release(storage); DeleteFileW(filename); + + /* Test creating a property set storage with a random GUID */ + hr = StgCreateDocfile(filename, + STGM_READWRITE | STGM_SHARE_EXCLUSIVE | STGM_CREATE, 0, &storage); + ok(hr == S_OK, "StgCreateDocfile failed: 0x%08x\n", hr); + + if(!pStgCreatePropSetStg) + { + IStorage_Release(storage); + DeleteFileW(filename); + return; + } + hr = pStgCreatePropSetStg(storage, 0, &propSetStorage); + ok(hr == S_OK, "StgCreatePropSetStg failed: 0x%08x\n", hr); + + hr = IPropertySetStorage_Create(propSetStorage, + &anyOldGuid, NULL, PROPSETFLAG_ANSI, + STGM_READWRITE | STGM_CREATE | STGM_SHARE_EXCLUSIVE, + &propertyStorage); + ok(hr == S_OK, "IPropertySetStorage_Create failed: 0x%08x\n", hr); + + spec.ulKind = PRSPEC_PROPID; + U(spec).propid = PID_FIRST_USABLE; + U(var).lVal = 1; + hr = IPropertyStorage_WriteMultiple(propertyStorage, 1, &spec, &var, 0); + ok(hr == S_OK, "WriteMultiple failed: 0x%08x\n", hr); + + IPropertyStorage_Release(propertyStorage); + IPropertySetStorage_Release(propSetStorage); + IStorage_Release(storage); + + /* now open it again */ + hr = StgOpenStorage(filename, NULL, STGM_READWRITE | STGM_SHARE_EXCLUSIVE, + NULL, 0, &storage); + ok(hr == S_OK, "StgOpenStorage failed: 0x%08x\n", hr); + + hr = pStgCreatePropSetStg(storage, 0, &propSetStorage); + ok(hr == S_OK, "StgCreatePropSetStg failed: 0x%08x\n", hr); + + hr = IPropertySetStorage_Open(propSetStorage, &anyOldGuid, + STGM_READWRITE | STGM_SHARE_EXCLUSIVE, &propertyStorage); + todo_wine + ok(hr == S_OK, "IPropertySetStorage_Open failed: 0x%08x\n", hr); + + spec.ulKind = PRSPEC_PROPID; + U(spec).propid = PID_FIRST_USABLE; + hr = IPropertyStorage_ReadMultiple(propertyStorage, 1, &spec, &var); + ok(hr == S_FALSE, "ReadMultiple failed: 0x%08x\n", hr); + + IPropertyStorage_Release(propertyStorage); + IPropertySetStorage_Release(propSetStorage); + IStorage_Release(storage); + + DeleteFileW(filename); } static void testCodepage(void)