From e270fbfd8d9bc917a7a1bb63348604c49fd028a4 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Wed, 21 Mar 2018 13:10:09 +0100 Subject: [PATCH] [PROPSYS_WINETEST] Sync with Wine Staging 3.3. CORE-14434 --- .../rostests/winetests/propsys/propstore.c | 18 +-- modules/rostests/winetests/propsys/propsys.c | 124 +++++++++++++++--- 2 files changed, 116 insertions(+), 26 deletions(-) diff --git a/modules/rostests/winetests/propsys/propstore.c b/modules/rostests/winetests/propsys/propstore.c index 78c1979bffb..01500dd3f91 100644 --- a/modules/rostests/winetests/propsys/propstore.c +++ b/modules/rostests/winetests/propsys/propstore.c @@ -18,24 +18,20 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#define WIN32_NO_STATUS -#define _INC_WINDOWS -#define COM_NO_WINDOWS_H - #define COBJMACROS #include -//#include +#include #define NONAMELESSUNION -#include -#include -#include -#include -#include +#include "windef.h" +#include "winbase.h" +#include "objbase.h" +#include "propsys.h" +#include "wine/test.h" -#include +#include "initguid.h" DEFINE_GUID(PKEY_WineTest, 0x7b317433, 0xdfa3, 0x4c44, 0xad, 0x3e, 0x2f, 0x80, 0x4b, 0x90, 0xdb, 0xf4); diff --git a/modules/rostests/winetests/propsys/propsys.c b/modules/rostests/winetests/propsys/propsys.c index f226c164eb6..a6c70235274 100644 --- a/modules/rostests/winetests/propsys/propsys.c +++ b/modules/rostests/winetests/propsys/propsys.c @@ -19,27 +19,20 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#define WIN32_NO_STATUS -#define _INC_WINDOWS -#define COM_NO_WINDOWS_H - #define COBJMACROS -//#include +#include #include #define NONAMELESSUNION -#include -#include -#include -#include -//#include "objbase.h" -#include -#include -#include -#include -#include +#include "windef.h" +#include "winbase.h" +#include "objbase.h" +#include "initguid.h" +#include "propsys.h" +#include "propvarutil.h" +#include "wine/test.h" DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0); DEFINE_GUID(dummy_guid, 0xdeadbeef, 0xdead, 0xbeef, 0xde, 0xad, 0xbe, 0xef, 0xca, 0xfe, 0xba, 0xbe); @@ -1101,6 +1094,106 @@ static void test_PropVariantToBoolean(void) ok(val == TRUE, "Unexpected value %d\n", val); } +static void test_PropVariantToStringWithDefault(void) +{ + PROPVARIANT propvar; + static WCHAR default_value[] = {'t', 'e', 's', 't', 0}; + static WCHAR wstr_test2[] = {'t', 'e', 's', 't', '2', 0}; + static WCHAR wstr_empty[] = {0}; + static WCHAR wstr_space[] = {' ', 0}; + static CHAR str_test2[] = "test2"; + static CHAR str_empty[] = ""; + static CHAR str_space[] = " "; + LPCWSTR result; + + propvar.vt = VT_EMPTY; + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(result == default_value, "Unexpected value %s\n", wine_dbgstr_w(result)); + + propvar.vt = VT_NULL; + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(result == default_value, "Unexpected value %s\n", wine_dbgstr_w(result)); + + propvar.vt = VT_BOOL; + propvar.u.boolVal = VARIANT_TRUE; + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(result == default_value, "Unexpected value %s\n", wine_dbgstr_w(result)); + + propvar.vt = VT_I4; + propvar.u.lVal = 15; + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(result == default_value, "Unexpected value %s\n", wine_dbgstr_w(result)); + + /* VT_LPWSTR */ + + propvar.vt = VT_LPWSTR; + propvar.u.pwszVal = NULL; + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(result == default_value, "Unexpected value %s\n", wine_dbgstr_w(result)); + + propvar.vt = VT_LPWSTR; + propvar.u.pwszVal = wstr_empty; + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(result == wstr_empty, "Unexpected value %s\n", wine_dbgstr_w(result)); + + propvar.vt = VT_LPWSTR; + propvar.u.pwszVal = wstr_space; + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(result == wstr_space, "Unexpected value %s\n", wine_dbgstr_w(result)); + + propvar.vt = VT_LPWSTR; + propvar.u.pwszVal = wstr_test2; + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(result == wstr_test2, "Unexpected value %s\n", wine_dbgstr_w(result)); + + /* VT_LPSTR */ + + propvar.vt = VT_LPSTR; + propvar.u.pszVal = NULL; + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(result == default_value, "Unexpected value %s\n", wine_dbgstr_w(result)); + + propvar.vt = VT_LPSTR; + propvar.u.pszVal = str_empty; + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(result == default_value, "Unexpected value %s\n", wine_dbgstr_w(result)); + + propvar.vt = VT_LPSTR; + propvar.u.pszVal = str_space; + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(result == default_value, "Unexpected value %s\n", wine_dbgstr_w(result)); + + propvar.vt = VT_LPSTR; + propvar.u.pszVal = str_test2; + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(result == default_value, "Unexpected value %s\n", wine_dbgstr_w(result)); + + /* VT_BSTR */ + + propvar.vt = VT_BSTR; + propvar.u.bstrVal = NULL; + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(!lstrcmpW(result, wstr_empty), "Unexpected value %s\n", wine_dbgstr_w(result)); + + propvar.vt = VT_BSTR; + propvar.u.bstrVal = SysAllocString(wstr_empty); + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(!lstrcmpW(result, wstr_empty), "Unexpected value %s\n", wine_dbgstr_w(result)); + SysFreeString(propvar.u.bstrVal); + + propvar.vt = VT_BSTR; + propvar.u.bstrVal = SysAllocString(wstr_space); + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(!lstrcmpW(result, wstr_space), "Unexpected value %s\n", wine_dbgstr_w(result)); + SysFreeString(propvar.u.bstrVal); + + propvar.vt = VT_BSTR; + propvar.u.bstrVal = SysAllocString(wstr_test2); + result = PropVariantToStringWithDefault(&propvar, default_value); + ok(!lstrcmpW(result, wstr_test2), "Unexpected value %s\n", wine_dbgstr_w(result)); + SysFreeString(propvar.u.bstrVal); +} + static void test_PropVariantChangeType_LPWSTR(void) { PROPVARIANT dest, src; @@ -1150,4 +1243,5 @@ START_TEST(propsys) test_intconversions(); test_PropVariantChangeType_LPWSTR(); test_PropVariantToBoolean(); + test_PropVariantToStringWithDefault(); }