https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f41035d141dc2be927552…
commit f41035d141dc2be92755200b320cb41528da35fd
Author: Amine Khaldi <amine.khaldi(a)reactos.org>
AuthorDate: Sat Jan 20 13:06:43 2018 +0100
Commit: Amine Khaldi <amine.khaldi(a)reactos.org>
CommitDate: Sat Jan 20 13:06:43 2018 +0100
[PROPSYS_WINETEST] Sync with Wine 3.0. CORE-14225
---
modules/rostests/winetests/propsys/propsys.c | 212 +++++++++++++++++++++++++++
1 file changed, 212 insertions(+)
diff --git a/modules/rostests/winetests/propsys/propsys.c
b/modules/rostests/winetests/propsys/propsys.c
index 753953787c..f226c164eb 100644
--- a/modules/rostests/winetests/propsys/propsys.c
+++ b/modules/rostests/winetests/propsys/propsys.c
@@ -890,6 +890,217 @@ static void test_intconversions(void)
ok(llval == -7, "got wrong value %s\n", wine_dbgstr_longlong(llval));
}
+static void test_PropVariantToBoolean(void)
+{
+ static WCHAR str_0[] = {'0',0};
+ static WCHAR str_1[] = {'1',0};
+ static WCHAR str_7[] = {'7',0};
+ static WCHAR str_n7[] = {'-','7',0};
+ static WCHAR str_true[] = {'t','r','u','e',0};
+ static WCHAR str_true2[] =
{'#','T','R','U','E','#',0};
+ static WCHAR str_true_case[] = {'t','R','U','e',0};
+ static WCHAR str_false[] =
{'f','a','l','s','e',0};
+ static WCHAR str_false2[] =
{'#','F','A','L','S','E','#',0};
+ static WCHAR str_true_space[] =
{'t','r','u','e',' ',0};
+ static WCHAR str_yes[] = {'y','e','s',0};
+ PROPVARIANT propvar;
+ HRESULT hr;
+ BOOL val;
+
+ /* VT_BOOL */
+ propvar.vt = VT_BOOL;
+ propvar.u.boolVal = VARIANT_FALSE;
+ val = TRUE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == FALSE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_BOOL;
+ propvar.u.boolVal = 1;
+ val = TRUE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == FALSE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_BOOL;
+ propvar.u.boolVal = VARIANT_TRUE;
+ val = FALSE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == TRUE, "Unexpected value %d\n", val);
+
+ /* VT_EMPTY */
+ propvar.vt = VT_EMPTY;
+ propvar.u.boolVal = VARIANT_TRUE;
+ val = TRUE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == FALSE, "Unexpected value %d\n", val);
+
+ /* test integer conversion */
+ propvar.vt = VT_I4;
+ propvar.u.lVal = 0;
+ val = TRUE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == FALSE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_I4;
+ propvar.u.lVal = 1;
+ val = FALSE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == TRUE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_I4;
+ propvar.u.lVal = 67;
+ val = FALSE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == TRUE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_I4;
+ propvar.u.lVal = -67;
+ val = FALSE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == TRUE, "Unexpected value %d\n", val);
+
+ /* test string conversion */
+ propvar.vt = VT_LPWSTR;
+ propvar.u.pwszVal = str_0;
+ val = TRUE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == FALSE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPWSTR;
+ propvar.u.pwszVal = str_1;
+ val = FALSE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == TRUE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPWSTR;
+ propvar.u.pwszVal = str_7;
+ val = FALSE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == TRUE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPWSTR;
+ propvar.u.pwszVal = str_n7;
+ val = FALSE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == TRUE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPWSTR;
+ propvar.u.pwszVal = str_true;
+ val = FALSE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == TRUE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPWSTR;
+ propvar.u.pwszVal = str_true_case;
+ val = FALSE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == TRUE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPWSTR;
+ propvar.u.pwszVal = str_true2;
+ val = FALSE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == TRUE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPWSTR;
+ propvar.u.pwszVal = str_false;
+ val = TRUE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == FALSE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPWSTR;
+ propvar.u.pwszVal = str_false2;
+ val = TRUE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == FALSE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPWSTR;
+ propvar.u.pwszVal = str_true_space;
+ val = TRUE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == DISP_E_TYPEMISMATCH, "Unexpected hr %#x.\n", hr);
+ ok(val == FALSE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPWSTR;
+ propvar.u.pwszVal = str_yes;
+ val = TRUE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == DISP_E_TYPEMISMATCH, "Unexpected hr %#x.\n", hr);
+ ok(val == FALSE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPWSTR;
+ propvar.u.pwszVal = NULL;
+ val = TRUE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == DISP_E_TYPEMISMATCH, "Unexpected hr %#x.\n", hr);
+ ok(val == FALSE, "Unexpected value %d\n", val);
+
+ /* VT_LPSTR */
+ propvar.vt = VT_LPSTR;
+ propvar.u.pszVal = (char *)"#TruE#";
+ val = TRUE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == DISP_E_TYPEMISMATCH, "Unexpected hr %#x.\n", hr);
+ ok(val == FALSE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPSTR;
+ propvar.u.pszVal = (char *)"#TRUE#";
+ val = FALSE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == TRUE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPSTR;
+ propvar.u.pszVal = (char *)"tRUe";
+ val = FALSE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == TRUE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPSTR;
+ propvar.u.pszVal = (char *)"#FALSE#";
+ val = TRUE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == FALSE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPSTR;
+ propvar.u.pszVal = (char *)"fALSe";
+ val = TRUE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == FALSE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPSTR;
+ propvar.u.pszVal = (char *)"1";
+ val = FALSE;
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == TRUE, "Unexpected value %d\n", val);
+
+ propvar.vt = VT_LPSTR;
+ propvar.u.pszVal = (char *)"-1";
+ hr = PropVariantToBoolean(&propvar, &val);
+ ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
+ ok(val == TRUE, "Unexpected value %d\n", val);
+}
+
static void test_PropVariantChangeType_LPWSTR(void)
{
PROPVARIANT dest, src;
@@ -938,4 +1149,5 @@ START_TEST(propsys)
test_PropVariantCompare();
test_intconversions();
test_PropVariantChangeType_LPWSTR();
+ test_PropVariantToBoolean();
}