Vincent Povirk : ole32: Add tests for StgConvertVariantToProperty.
Alexandre Julliard
julliard at winehq.org
Mon Oct 8 13:39:56 CDT 2012
Module: wine
Branch: master
Commit: 718f09562900d9597bcfcaba54b80c7d280026cb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=718f09562900d9597bcfcaba54b80c7d280026cb
Author: Vincent Povirk <vincent at codeweavers.com>
Date: Thu Oct 4 16:19:07 2012 -0500
ole32: Add tests for StgConvertVariantToProperty.
---
dlls/ole32/tests/propvariant.c | 93 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 93 insertions(+), 0 deletions(-)
diff --git a/dlls/ole32/tests/propvariant.c b/dlls/ole32/tests/propvariant.c
index 5f7adba..2de480a 100644
--- a/dlls/ole32/tests/propvariant.c
+++ b/dlls/ole32/tests/propvariant.c
@@ -408,9 +408,102 @@ static void test_propertytovariant(void)
PropVariantClear(&propvar);
}
+static void test_varianttoproperty(void)
+{
+ HANDLE hole32;
+ PROPVARIANT propvar;
+ SERIALIZEDPROPERTYVALUE *propvalue, *own_propvalue;
+ SERIALIZEDPROPERTYVALUE* (__stdcall *pStgConvertVariantToProperty)(
+ const PROPVARIANT*,USHORT,SERIALIZEDPROPERTYVALUE*,ULONG*,PROPID,BOOLEAN,ULONG*);
+ ULONG len;
+ static const WCHAR test_string[] = {'t','e','s','t',0};
+ BSTR test_string_bstr;
+
+ hole32 = GetModuleHandleA("ole32");
+
+ pStgConvertVariantToProperty = (void*)GetProcAddress(hole32, "StgConvertVariantToProperty");
+
+ if (!pStgConvertVariantToProperty)
+ {
+ win_skip("StgConvertVariantToProperty not available\n");
+ return;
+ }
+
+ own_propvalue = HeapAlloc(GetProcessHeap(), 0, sizeof(SERIALIZEDPROPERTYVALUE) + 20);
+
+ PropVariantInit(&propvar);
+
+ propvar.vt = VT_I4;
+ U(propvar).lVal = 0xfeabcdef;
+
+ len = 0xdeadbeef;
+ propvalue = pStgConvertVariantToProperty(&propvar, CP_WINUNICODE, NULL, &len,
+ 0, FALSE, 0);
+
+ ok(propvalue == NULL, "got nonnull propvalue\n");
+ todo_wine ok(len == 8, "unexpected length %d\n", len);
+
+ if (len == 0xdeadbeef)
+ {
+ return;
+ }
+
+ len = 20;
+ propvalue = pStgConvertVariantToProperty(&propvar, CP_WINUNICODE, own_propvalue, &len,
+ 0, FALSE, 0);
+
+ ok(propvalue == own_propvalue, "unexpected propvalue %p\n", propvalue);
+ ok(len == 8, "unexpected length %d\n", len);
+ ok(!memcmp(propvalue, serialized_i4, 8), "got wrong data\n");
+
+ propvar.vt = VT_EMPTY;
+ len = 20;
+ own_propvalue->dwType = 0xdeadbeef;
+ propvalue = pStgConvertVariantToProperty(&propvar, CP_WINUNICODE, own_propvalue, &len,
+ 0, FALSE, 0);
+
+ ok(propvalue == own_propvalue, "unexpected propvalue %p\n", propvalue);
+ ok(len == 0, "unexpected length %d\n", len);
+ ok(propvalue->dwType == 0xdeadbeef, "unexpected type %d\n", propvalue->dwType);
+
+ propvar.vt = VT_NULL;
+ len = 20;
+ propvalue = pStgConvertVariantToProperty(&propvar, CP_WINUNICODE, own_propvalue, &len,
+ 0, FALSE, 0);
+
+ ok(propvalue == own_propvalue, "unexpected propvalue %p\n", propvalue);
+ ok(len == 4, "unexpected length %d\n", len);
+ ok(!memcmp(propvalue, serialized_null, 4), "got wrong data\n");
+
+ test_string_bstr = SysAllocString(test_string);
+
+ propvar.vt = VT_BSTR;
+ U(propvar).bstrVal = test_string_bstr;
+ len = 20;
+ propvalue = pStgConvertVariantToProperty(&propvar, CP_WINUNICODE, own_propvalue, &len,
+ 0, FALSE, 0);
+
+ ok(propvalue == own_propvalue, "unexpected propvalue %p\n", propvalue);
+ ok(len == 20, "unexpected length %d\n", len);
+ ok(!memcmp(propvalue, serialized_bstr_wc, 20), "got wrong data\n");
+
+ len = 20;
+ propvalue = pStgConvertVariantToProperty(&propvar, CP_UTF8, own_propvalue, &len,
+ 0, FALSE, 0);
+
+ ok(propvalue == own_propvalue, "unexpected propvalue %p\n", propvalue);
+ ok(len == 16, "unexpected length %d\n", len);
+ ok(!memcmp(propvalue, serialized_bstr_mb, 16), "got wrong data\n");
+
+ SysFreeString(test_string_bstr);
+
+ HeapFree(GetProcessHeap(), 0, own_propvalue);
+}
+
START_TEST(propvariant)
{
test_validtypes();
test_copy();
test_propertytovariant();
+ test_varianttoproperty();
}
More information about the wine-cvs
mailing list