Huw Davies : ole32/tests: Add a few more reference count tests.
Alexandre Julliard
julliard at winehq.org
Thu Apr 16 14:34:51 CDT 2009
Module: wine
Branch: master
Commit: 718831b77c5d8b6916b7456d8b311d638aca2adf
URL: http://source.winehq.org/git/wine.git/?a=commit;h=718831b77c5d8b6916b7456d8b311d638aca2adf
Author: Huw Davies <huw at codeweavers.com>
Date: Thu Apr 16 12:17:51 2009 +0100
ole32/tests: Add a few more reference count tests.
---
dlls/ole32/tests/clipboard.c | 43 ++++++++++++++++++++++++++++++++++++++++-
1 files changed, 41 insertions(+), 2 deletions(-)
diff --git a/dlls/ole32/tests/clipboard.c b/dlls/ole32/tests/clipboard.c
index c77ec95..c3db7b2 100644
--- a/dlls/ole32/tests/clipboard.c
+++ b/dlls/ole32/tests/clipboard.c
@@ -871,7 +871,7 @@ static inline ULONG count_refs(IDataObject *d)
static void test_consumer_refs(void)
{
HRESULT hr;
- IDataObject *src, *get1, *get2, *get3;
+ IDataObject *src, *src2, *get1, *get2, *get3;
ULONG refs, old_refs;
FORMATETC fmt;
STGMEDIUM med;
@@ -885,6 +885,8 @@ static void test_consumer_refs(void)
hr = DataObjectImpl_CreateText("data1", &src);
ok(hr == S_OK, "got %08x\n", hr);
+ hr = DataObjectImpl_CreateText("data2", &src2);
+ ok(hr == S_OK, "got %08x\n", hr);
hr = OleSetClipboard(src);
ok(hr == S_OK, "got %08x\n", hr);
@@ -931,7 +933,6 @@ static void test_consumer_refs(void)
ok(hr == S_OK, "got %08x\n", hr);
old_refs = count_refs(src);
- trace("old_refs %d\n", old_refs);
hr = OleGetClipboard(&get1);
ok(hr == S_OK, "got %08x\n", hr);
@@ -963,6 +964,44 @@ static void test_consumer_refs(void)
refs = count_refs(src);
ok(refs == 1, "%d\n", refs);
+ /* Now set a second src object before the call to GetData
+ and show that GetData calls that second src. */
+
+ hr = OleSetClipboard(src);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ old_refs = count_refs(src);
+
+ hr = OleGetClipboard(&get1);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ refs = count_refs(src);
+ ok(refs == old_refs, "%d %d\n", refs, old_refs);
+
+ hr = OleSetClipboard(src2);
+ ok(hr == S_OK, "got %08x\n", hr);
+
+ old_refs = count_refs(src2);
+
+ DataObjectImpl_GetData_calls = 0;
+ hr = IDataObject_GetData(get1, &fmt, &med);
+ ok(hr == S_OK, "got %08x\n", hr);
+ ok(DataObjectImpl_GetData_calls == 1, "GetData not called\n");
+ ReleaseStgMedium(&med);
+
+ refs = count_refs(src);
+ ok(refs == 1, "%d\n", refs);
+ refs = count_refs(src2);
+ ok(refs == old_refs + 1, "%d %d\n", refs, old_refs);
+
+ OleSetClipboard(NULL);
+
+ refs = count_refs(src2);
+ ok(refs == 2, "%d\n", refs);
+
+ IDataObject_Release(get1);
+
+ IDataObject_Release(src2);
IDataObject_Release(src);
OleUninitialize();
More information about the wine-cvs
mailing list