oleaut32 1/3: Conformance test for vartest:VarAnd checks for correct result values

Benjamin Arai me at benjaminarai.com
Mon Aug 28 20:50:36 CDT 2006


Hi,

I broke the patch into three parts for clarity. 1/3 is a conformance
test exposing the various return value failures. 2/3 fixes all the
failures exposed in the conformance test and 3/3 adds to the
conformance test to ensure all of the correct error codes and returns
types conform to windows.

All tests pass on Windows XP SP2 and Wine.

ChangeLog:
 - Conformance test for VarAnd to expose the return value failures.

---
 dlls/oleaut32/tests/vartest.c |  659 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 659 insertions(+), 0 deletions(-)

Copyright: Google
License: LGPL
-- 
Benjamin Arai
http://www.benjaminarai.com
-------------- next part --------------

diff --git a/dlls/oleaut32/tests/vartest.c b/dlls/oleaut32/tests/vartest.c
index cfcf1f0..b738199 100644
--- a/dlls/oleaut32/tests/vartest.c
+++ b/dlls/oleaut32/tests/vartest.c
@@ -5287,6 +5287,664 @@ static void test_VarCat(void)
     VariantClear(&expected);
 }
 
+static HRESULT (WINAPI *pVarAnd)(LPVARIANT,LPVARIANT,LPVARIANT);
+
+static const char *szVarAndFail = "VarAnd(%s,%s): expected 0x0,%s,%d, got 0x%lX,%s,%d\n";
+
+#define VARAND(vt1,val1,vt2,val2,rvt,rval) \
+        V_VT(&left) = VT_##vt1; V_##vt1(&left) = val1; \
+        V_VT(&right) = VT_##vt2; V_##vt2(&right) = val2; \
+        memset(&result,0,sizeof(result)); hres = pVarAnd(&left,&right,&result); \
+        ok(hres == S_OK && V_VT(&result) == VT_##rvt && V_##rvt(&result) == (rval), \
+        szVarAndFail, vtstr(VT_##vt1), vtstr(VT_##vt2), \
+        vtstr(VT_##rvt), (int)(rval), hres, vtstr(V_VT(&result)), (int)V_##rvt(&result));
+#define VARANDCY(vt1,val1,val2,rvt,rval) \
+        V_VT(&left) = VT_##vt1; V_##vt1(&left) = val1; \
+        V_VT(&right) = VT_CY; V_CY(&right).int64 = val2; \
+        memset(&result,0,sizeof(result)); hres = pVarAnd(&left,&right,&result); \
+        ok(hres == S_OK && V_VT(&result) == VT_##rvt && V_##rvt(&result) == (rval), \
+        szVarAndFail, vtstr(VT_##vt1), vtstr(VT_CY), \
+        vtstr(VT_##rvt), (int)(rval), hres, vtstr(V_VT(&result)), (int)V_##rvt(&result));
+
+static void test_VarAnd(void)
+{
+    static const WCHAR szFalse[] = { '#','F','A','L','S','E','#','\0' };
+    static const WCHAR szTrue[] = { '#','T','R','U','E','#','\0' };
+    VARIANT left, right, result;
+    BSTR false_str, true_str;
+    HRESULT hres;
+
+    true_str = SysAllocString(szTrue);
+    false_str = SysAllocString(szFalse);
+
+    CHECKPTR(VarAnd);
+
+    /*
+     * Test returned values. Since we know the returned type is correct
+     * and that we handle all combinations of invalid types, just check
+     * that good type combinations produce the desired value.
+     * FIXME: Test VT_DECIMAL/VT_DISPATCH
+     */
+    todo_wine {
+    VARAND(EMPTY,0,EMPTY,0,I2,0);
+    VARAND(EMPTY,1,EMPTY,0,I2,0);
+    VARAND(EMPTY,1,EMPTY,1,I2,0);
+    VARAND(EMPTY,0,NULL,0,I2,0);
+    VARAND(EMPTY,1,NULL,0,I2,0);
+    VARAND(EMPTY,1,NULL,1,I2,0);
+    VARAND(EMPTY,0,I1,0,I4,0);
+    VARAND(EMPTY,0,I1,1,I4,0);
+    VARAND(EMPTY,1,I1,1,I4,0);
+    VARAND(EMPTY,0,UI1,0,I2,0);
+    VARAND(EMPTY,0,UI1,1,I2,0);
+    VARAND(EMPTY,1,UI1,1,I2,0);
+    VARAND(EMPTY,0,I2,0,I2,0);
+    VARAND(EMPTY,0,I2,1,I2,0);
+    VARAND(EMPTY,1,I2,1,I2,0);
+    VARAND(EMPTY,0,UI2,0,I4,0);
+    VARAND(EMPTY,0,UI2,1,I4,0);
+    VARAND(EMPTY,1,UI2,1,I4,0);
+    VARAND(EMPTY,0,I4,0,I4,0);
+    VARAND(EMPTY,0,I4,1,I4,0);
+    VARAND(EMPTY,1,I4,1,I4,0);
+    VARAND(EMPTY,0,UI4,0,I4,0);
+    VARAND(EMPTY,0,UI4,1,I4,0);
+    VARAND(EMPTY,1,UI4,1,I4,0);
+    }
+    if (HAVE_OLEAUT32_I8)
+    {
+        todo_wine {
+        VARAND(EMPTY,0,I8,0,I8,0);
+        VARAND(EMPTY,0,I8,1,I8,0);
+        VARAND(EMPTY,1,I8,1,I8,0);
+        VARAND(EMPTY,0,UI8,0,I4,0);
+        VARAND(EMPTY,0,UI8,1,I4,0);
+        VARAND(EMPTY,1,UI8,1,I4,0);
+        }
+    }
+    todo_wine {
+    VARAND(EMPTY,0,INT,0,I4,0);
+    VARAND(EMPTY,0,INT,1,I4,0);
+    VARAND(EMPTY,1,INT,1,I4,0);
+    VARAND(EMPTY,0,UINT,0,I4,0);
+    VARAND(EMPTY,0,UINT,1,I4,0);
+    VARAND(EMPTY,1,UINT,1,I4,0);
+    VARAND(EMPTY,0,BOOL,0,I2,0);
+    VARAND(EMPTY,0,BOOL,1,I2,0);
+    VARAND(EMPTY,1,BOOL,1,I2,0);
+    VARAND(EMPTY,0,R4,0,I4,0);
+    VARAND(EMPTY,0,R4,1,I4,0);
+    VARAND(EMPTY,1,R4,1,I4,0);
+    VARAND(EMPTY,0,R8,0,I4,0);
+    VARAND(EMPTY,0,R8,1,I4,0);
+    VARAND(EMPTY,1,R8,1,I4,0);
+    VARAND(EMPTY,0,BSTR,false_str,I2,0);
+    VARAND(EMPTY,0,BSTR,true_str,I2,0);
+    VARANDCY(EMPTY,0,10000,I4,0);
+    }
+
+    /* NULL OR 0 = NULL. NULL OR n = n */
+    todo_wine {
+    VARAND(NULL,0,NULL,0,NULL,0);
+    VARAND(NULL,1,NULL,0,NULL,0);
+    VARAND(NULL,0,I1,0,I4,0);
+    VARAND(NULL,0,I1,1,NULL,0);
+    VARAND(NULL,0,UI1,0,UI1,0);
+    VARAND(NULL,0,UI1,1,NULL,0);
+    VARAND(NULL,0,I2,0,I2,0);
+    VARAND(NULL,0,I2,1,NULL,0);
+    VARAND(NULL,0,UI2,0,I4,0);
+    VARAND(NULL,0,UI2,1,NULL,0);
+    VARAND(NULL,0,I4,0,I4,0);
+    VARAND(NULL,0,I4,1,NULL,0);
+    VARAND(NULL,0,UI4,0,I4,0);
+    VARAND(NULL,0,UI4,1,NULL,0);
+    }
+    if (HAVE_OLEAUT32_I8)
+    {
+        todo_wine {
+        VARAND(NULL,0,I8,0,I8,0);
+        VARAND(NULL,0,I8,1,NULL,0);
+        VARAND(NULL,0,UI8,0,I4,0);
+        VARAND(NULL,0,UI8,1,NULL,0);
+        }
+    }
+    todo_wine {
+    VARAND(NULL,0,INT,0,I4,0);
+    VARAND(NULL,0,INT,1,NULL,0);
+    VARAND(NULL,0,UINT,0,I4,0);
+    VARAND(NULL,0,UINT,1,NULL,0);
+    VARAND(NULL,0,BOOL,0,BOOL,0);
+    VARAND(NULL,0,BOOL,1,NULL,0);
+    VARAND(NULL,0,R4,0,I4,0);
+    VARAND(NULL,0,R4,1,NULL,0);
+    VARAND(NULL,0,R8,0,I4,0);
+    VARAND(NULL,0,R8,1,NULL,0);
+    VARAND(NULL,0,BSTR,false_str,BOOL,0);
+    VARAND(NULL,0,BSTR,true_str,NULL,VARIANT_FALSE);
+    VARANDCY(NULL,0,10000,NULL,0);
+    VARANDCY(NULL,0,0,I4,0);
+    }
+    VARAND(BOOL,VARIANT_TRUE,BOOL,VARIANT_TRUE,BOOL,VARIANT_TRUE);
+    VARAND(BOOL,VARIANT_TRUE,BOOL,VARIANT_FALSE,BOOL,VARIANT_FALSE);
+    VARAND(BOOL,VARIANT_FALSE,BOOL,VARIANT_TRUE,BOOL,VARIANT_FALSE);
+    VARAND(BOOL,VARIANT_FALSE,BOOL,VARIANT_FALSE,BOOL,VARIANT_FALSE);
+
+    /* Assume x,y & y,x are the same from now on to reduce the number of tests */
+    VARAND(BOOL,VARIANT_TRUE,I1,-1,I4,-1);
+    VARAND(BOOL,VARIANT_TRUE,I1,0,I4,0);
+    VARAND(BOOL,VARIANT_FALSE,I1,0,I4,0);
+    todo_wine {
+    VARAND(BOOL,VARIANT_TRUE,UI1,255,I2,255);
+    VARAND(BOOL,VARIANT_TRUE,UI1,0,I2,0);
+    VARAND(BOOL,VARIANT_FALSE,UI1,0,I2,0);
+    VARAND(BOOL,VARIANT_TRUE,I2,-1,I2,-1);
+    VARAND(BOOL,VARIANT_TRUE,I2,0,I2,0);
+    VARAND(BOOL,VARIANT_FALSE,I2,0,I2,0);
+    }
+    VARAND(BOOL,VARIANT_TRUE,UI2,65535,I4,65535);
+    VARAND(BOOL,VARIANT_TRUE,UI2,0,I4,0);
+    VARAND(BOOL,VARIANT_FALSE,UI2,0,I4,0);
+    VARAND(BOOL,VARIANT_TRUE,I4,-1,I4,-1);
+    VARAND(BOOL,VARIANT_TRUE,I4,0,I4,0);
+    VARAND(BOOL,VARIANT_FALSE,I4,0,I4,0);
+    VARAND(BOOL,VARIANT_TRUE,UI4,0xffffffff,I4,-1);
+    VARAND(BOOL,VARIANT_TRUE,UI4,0,I4,0);
+    VARAND(BOOL,VARIANT_FALSE,UI4,0,I4,0);
+    todo_wine {
+    VARAND(BOOL,VARIANT_TRUE,R4,-1,I4,-1);
+    VARAND(BOOL,VARIANT_TRUE,R4,0,I4,0);
+    VARAND(BOOL,VARIANT_FALSE,R4,0,I4,0);
+    VARAND(BOOL,VARIANT_TRUE,R8,-1,I4,-1);
+    VARAND(BOOL,VARIANT_TRUE,R8,0,I4,0);
+    VARAND(BOOL,VARIANT_FALSE,R8,0,I4,0);
+    VARAND(BOOL,VARIANT_TRUE,DATE,-1,I4,-1);
+    VARAND(BOOL,VARIANT_TRUE,DATE,0,I4,0);
+    VARAND(BOOL,VARIANT_FALSE,DATE,0,I4,0);
+    }
+    if (HAVE_OLEAUT32_I8)
+    {
+        todo_wine {
+        VARAND(BOOL,VARIANT_TRUE,I8,-1,I8,-1);
+        VARAND(BOOL,VARIANT_TRUE,I8,0,I8,0);
+        VARAND(BOOL,VARIANT_FALSE,I8,0,I8,0);
+        VARAND(BOOL,VARIANT_TRUE,UI8,0,I4,0);
+        VARAND(BOOL,VARIANT_FALSE,UI8,0,I4,0);
+        }
+    }
+    VARAND(BOOL,VARIANT_TRUE,INT,-1,I4,-1);
+    VARAND(BOOL,VARIANT_TRUE,INT,0,I4,0);
+    VARAND(BOOL,VARIANT_FALSE,INT,0,I4,0);
+    VARAND(BOOL,VARIANT_TRUE,UINT,0xffffffff,I4,-1);
+    VARAND(BOOL,VARIANT_TRUE,UINT,0,I4,0);
+    VARAND(BOOL,VARIANT_FALSE,UINT,0,I4,0);
+    todo_wine {
+    VARAND(BOOL,VARIANT_FALSE,BSTR,false_str,BOOL,VARIANT_FALSE);
+    VARAND(BOOL,VARIANT_TRUE,BSTR,false_str,BOOL,VARIANT_FALSE);
+    VARAND(BOOL,VARIANT_FALSE,BSTR,true_str,BOOL,VARIANT_FALSE);
+    VARAND(BOOL,VARIANT_TRUE,BSTR,true_str,BOOL,VARIANT_TRUE);
+    VARANDCY(BOOL,VARIANT_TRUE,10000,I4,1);
+    VARANDCY(BOOL,VARIANT_TRUE,0,I4,0);
+    VARANDCY(BOOL,VARIANT_FALSE,0,I4,0);
+    }
+    VARAND(I1,-1,I1,-1,I4,-1);
+    VARAND(I1,-1,I1,0,I4,0);
+    VARAND(I1,0,I1,0,I4,0);
+    VARAND(I1,-1,UI1,255,I4,255);
+    VARAND(I1,-1,UI1,0,I4,0);
+    VARAND(I1,0,UI1,0,I4,0);
+    VARAND(I1,-1,I2,-1,I4,-1);
+    VARAND(I1,-1,I2,0,I4,0);
+    VARAND(I1,0,I2,0,I4,0);
+    VARAND(I1,-1,UI2,65535,I4,65535);
+    VARAND(I1,-1,UI2,0,I4,0);
+    VARAND(I1,0,UI2,0,I4,0);
+    VARAND(I1,-1,I4,-1,I4,-1);
+    VARAND(I1,-1,I4,0,I4,0);
+    VARAND(I1,0,I4,0,I4,0);
+    VARAND(I1,-1,UI4,0xffffffff,I4,-1);
+    VARAND(I1,-1,UI4,0,I4,0);
+    VARAND(I1,0,UI4,0,I4,0);
+    todo_wine {
+    VARAND(I1,-1,R4,-1,I4,-1);
+    VARAND(I1,-1,R4,0,I4,0);
+    VARAND(I1,0,R4,0,I4,0);
+    VARAND(I1,-1,R8,-1,I4,-1);
+    VARAND(I1,-1,R8,0,I4,0);
+    VARAND(I1,0,R8,0,I4,0);
+    VARAND(I1,-1,DATE,-1,I4,-1);
+    VARAND(I1,-1,DATE,0,I4,0);
+    VARAND(I1,0,DATE,0,I4,0);
+    }
+    if (HAVE_OLEAUT32_I8)
+    {
+        todo_wine {
+        VARAND(I1,-1,I8,-1,I8,-1);
+        VARAND(I1,-1,I8,0,I8,0);
+        VARAND(I1,0,I8,0,I8,0);
+        VARAND(I1,-1,UI8,0,I4,0);
+        VARAND(I1,0,UI8,0,I4,0);
+        }
+    }
+    VARAND(I1,-1,INT,-1,I4,-1);
+    VARAND(I1,-1,INT,0,I4,0);
+    VARAND(I1,0,INT,0,I4,0);
+    VARAND(I1,-1,UINT,0xffffffff,I4,-1);
+    VARAND(I1,-1,UINT,0,I4,0);
+    VARAND(I1,0,UINT,0,I4,0);
+    todo_wine {
+    VARAND(I1,0,BSTR,false_str,I4,0);
+    VARAND(I1,-1,BSTR,false_str,I4,0);
+    VARAND(I1,0,BSTR,true_str,I4,0);
+    VARAND(I1,-1,BSTR,true_str,I4,-1);
+    VARANDCY(I1,-1,10000,I4,1);
+    VARANDCY(I1,-1,0,I4,0);
+    VARANDCY(I1,0,0,I4,0);
+
+    VARAND(UI1,255,UI1,255,UI1,255);
+    VARAND(UI1,255,UI1,0,UI1,0);
+    VARAND(UI1,0,UI1,0,UI1,0);
+    VARAND(UI1,255,I2,-1,I2,255);
+    VARAND(UI1,255,I2,0,I2,0);
+    VARAND(UI1,0,I2,0,I2,0);
+    }
+    VARAND(UI1,255,UI2,65535,I4,255);
+    VARAND(UI1,255,UI2,0,I4,0);
+    VARAND(UI1,0,UI2,0,I4,0);
+    VARAND(UI1,255,I4,-1,I4,255);
+    VARAND(UI1,255,I4,0,I4,0);
+    VARAND(UI1,0,I4,0,I4,0);
+    VARAND(UI1,255,UI4,0xffffffff,I4,255);
+    VARAND(UI1,255,UI4,0,I4,0);
+    VARAND(UI1,0,UI4,0,I4,0);
+    todo_wine {
+    VARAND(UI1,255,R4,-1,I4,255);
+    VARAND(UI1,255,R4,0,I4,0);
+    VARAND(UI1,0,R4,0,I4,0);
+    VARAND(UI1,255,R8,-1,I4,255);
+    VARAND(UI1,255,R8,0,I4,0);
+    VARAND(UI1,0,R8,0,I4,0);
+    VARAND(UI1,255,DATE,-1,I4,255);
+    VARAND(UI1,255,DATE,0,I4,0);
+    VARAND(UI1,0,DATE,0,I4,0);
+    }
+    if (HAVE_OLEAUT32_I8)
+    {
+        todo_wine {
+        VARAND(UI1,255,I8,-1,I8,255);
+        VARAND(UI1,255,I8,0,I8,0);
+        VARAND(UI1,0,I8,0,I8,0);
+        VARAND(UI1,255,UI8,0,I4,0);
+        VARAND(UI1,0,UI8,0,I4,0);
+        }
+    }
+    VARAND(UI1,255,INT,-1,I4,255);
+    VARAND(UI1,255,INT,0,I4,0);
+    VARAND(UI1,0,INT,0,I4,0);
+    VARAND(UI1,255,UINT,0xffffffff,I4,255);
+    VARAND(UI1,255,UINT,0,I4,0);
+    VARAND(UI1,0,UINT,0,I4,0);
+    todo_wine {
+    VARAND(UI1,0,BSTR,false_str,I2,0);
+    VARAND(UI1,255,BSTR,false_str,I2,0);
+    VARAND(UI1,0,BSTR,true_str,I2,0);
+    VARAND(UI1,255,BSTR,true_str,I2,255);
+    VARANDCY(UI1,255,10000,I4,1);
+    VARANDCY(UI1,255,0,I4,0);
+    VARANDCY(UI1,0,0,I4,0);
+    }
+
+    VARAND(I2,-1,I2,-1,I2,-1);
+    VARAND(I2,-1,I2,0,I2,0);
+    VARAND(I2,0,I2,0,I2,0);
+    VARAND(I2,-1,UI2,65535,I4,65535);
+    VARAND(I2,-1,UI2,0,I4,0);
+    VARAND(I2,0,UI2,0,I4,0);
+    VARAND(I2,-1,I4,-1,I4,-1);
+    VARAND(I2,-1,I4,0,I4,0);
+    VARAND(I2,0,I4,0,I4,0);
+    VARAND(I2,-1,UI4,0xffffffff,I4,-1);
+    VARAND(I2,-1,UI4,0,I4,0);
+    VARAND(I2,0,UI4,0,I4,0);
+    todo_wine {
+    VARAND(I2,-1,R4,-1,I4,-1);
+    VARAND(I2,-1,R4,0,I4,0);
+    VARAND(I2,0,R4,0,I4,0);
+    VARAND(I2,-1,R8,-1,I4,-1);
+    VARAND(I2,-1,R8,0,I4,0);
+    VARAND(I2,0,R8,0,I4,0);
+    VARAND(I2,-1,DATE,-1,I4,-1);
+    VARAND(I2,-1,DATE,0,I4,0);
+    VARAND(I2,0,DATE,0,I4,0);
+    }
+    if (HAVE_OLEAUT32_I8)
+    {
+        todo_wine {
+        VARAND(I2,-1,I8,-1,I8,-1);
+        VARAND(I2,-1,I8,0,I8,0);
+        VARAND(I2,0,I8,0,I8,0);
+        VARAND(I2,-1,UI8,0,I4,0);
+        VARAND(I2,0,UI8,0,I4,0);
+        }
+    }
+    VARAND(I2,-1,INT,-1,I4,-1);
+    VARAND(I2,-1,INT,0,I4,0);
+    VARAND(I2,0,INT,0,I4,0);
+    VARAND(I2,-1,UINT,0xffffffff,I4,-1);
+    VARAND(I2,-1,UINT,0,I4,0);
+    VARAND(I2,0,UINT,0,I4,0);
+    todo_wine {
+    VARAND(I2,0,BSTR,false_str,I2,0);
+    VARAND(I2,-1,BSTR,false_str,I2,0);
+    VARAND(I2,0,BSTR,true_str,I2,0);
+    VARAND(I2,-1,BSTR,true_str,I2,-1);
+    VARANDCY(I2,-1,10000,I4,1);
+    VARANDCY(I2,-1,0,I4,0);
+    VARANDCY(I2,0,0,I4,0);
+    }
+
+    VARAND(UI2,65535,UI2,65535,I4,65535);
+    VARAND(UI2,65535,UI2,0,I4,0);
+    VARAND(UI2,0,UI2,0,I4,0);
+    VARAND(UI2,65535,I4,-1,I4,65535);
+    VARAND(UI2,65535,I4,0,I4,0);
+    VARAND(UI2,0,I4,0,I4,0);
+    VARAND(UI2,65535,UI4,0xffffffff,I4,65535);
+    VARAND(UI2,65535,UI4,0,I4,0);
+    VARAND(UI2,0,UI4,0,I4,0);
+    todo_wine {
+    VARAND(UI2,65535,R4,-1,I4,65535);
+    VARAND(UI2,65535,R4,0,I4,0);
+    VARAND(UI2,0,R4,0,I4,0);
+    VARAND(UI2,65535,R8,-1,I4,65535);
+    VARAND(UI2,65535,R8,0,I4,0);
+    VARAND(UI2,0,R8,0,I4,0);
+    VARAND(UI2,65535,DATE,-1,I4,65535);
+    VARAND(UI2,65535,DATE,0,I4,0);
+    VARAND(UI2,0,DATE,0,I4,0);
+    }
+    if (HAVE_OLEAUT32_I8)
+    {
+        todo_wine {
+        VARAND(UI2,65535,I8,-1,I8,65535);
+        VARAND(UI2,65535,I8,0,I8,0);
+        VARAND(UI2,0,I8,0,I8,0);
+        VARAND(UI2,65535,UI8,0,I4,0);
+        VARAND(UI2,0,UI8,0,I4,0);
+        }
+    }
+    VARAND(UI2,65535,INT,-1,I4,65535);
+    VARAND(UI2,65535,INT,0,I4,0);
+    VARAND(UI2,0,INT,0,I4,0);
+    VARAND(UI2,65535,UINT,0xffffffff,I4,65535);
+    VARAND(UI2,65535,UINT,0,I4,0);
+    VARAND(UI2,0,UINT,0,I4,0);
+    todo_wine {
+    VARAND(UI2,0,BSTR,false_str,I4,0);
+    VARAND(UI2,65535,BSTR,false_str,I4,0);
+    VARAND(UI2,0,BSTR,true_str,I4,0);
+    VARAND(UI2,65535,BSTR,true_str,I4,65535);
+    VARANDCY(UI2,65535,10000,I4,1);
+    VARANDCY(UI2,65535,0,I4,0);
+    VARANDCY(UI2,0,0,I4,0);
+    }
+
+    VARAND(I4,-1,I4,-1,I4,-1);
+    VARAND(I4,-1,I4,0,I4,0);
+    VARAND(I4,0,I4,0,I4,0);
+    VARAND(I4,-1,UI4,0xffffffff,I4,-1);
+    VARAND(I4,-1,UI4,0,I4,0);
+    VARAND(I4,0,UI4,0,I4,0);
+    todo_wine {
+    VARAND(I4,-1,R4,-1,I4,-1);
+    VARAND(I4,-1,R4,0,I4,0);
+    VARAND(I4,0,R4,0,I4,0);
+    VARAND(I4,-1,R8,-1,I4,-1);
+    VARAND(I4,-1,R8,0,I4,0);
+    VARAND(I4,0,R8,0,I4,0);
+    VARAND(I4,-1,DATE,-1,I4,-1);
+    VARAND(I4,-1,DATE,0,I4,0);
+    VARAND(I4,0,DATE,0,I4,0);
+    }
+    if (HAVE_OLEAUT32_I8)
+    {
+        todo_wine {
+        VARAND(I4,-1,I8,-1,I8,-1);
+        VARAND(I4,-1,I8,0,I8,0);
+        VARAND(I4,0,I8,0,I8,0);
+        VARAND(I4,-1,UI8,0,I4,0);
+        VARAND(I4,0,UI8,0,I4,0);
+        }
+    }
+    VARAND(I4,-1,INT,-1,I4,-1);
+    VARAND(I4,-1,INT,0,I4,0);
+    VARAND(I4,0,INT,0,I4,0);
+    VARAND(I4,-1,UINT,0xffffffff,I4,-1);
+    VARAND(I4,-1,UINT,0,I4,0);
+    VARAND(I4,0,UINT,0,I4,0);
+    todo_wine {
+    VARAND(I4,0,BSTR,false_str,I4,0);
+    VARAND(I4,-1,BSTR,false_str,I4,0);
+    VARAND(I4,0,BSTR,true_str,I4,0);
+    VARAND(I4,-1,BSTR,true_str,I4,-1);
+    VARANDCY(I4,-1,10000,I4,1);
+    VARANDCY(I4,-1,0,I4,0);
+    VARANDCY(I4,0,0,I4,0);
+    }
+
+    VARAND(UI4,0xffffffff,UI4,0xffffffff,I4,-1);
+    VARAND(UI4,0xffffffff,UI4,0,I4,0);
+    VARAND(UI4,0,UI4,0,I4,0);
+    todo_wine {
+    VARAND(UI4,0xffffffff,R4,-1,I4,-1);
+    VARAND(UI4,0xffffffff,R4,0,I4,0);
+    VARAND(UI4,0,R4,0,I4,0);
+    VARAND(UI4,0xffffffff,R8,-1,I4,-1);
+    VARAND(UI4,0xffffffff,R8,0,I4,0);
+    VARAND(UI4,0,R8,0,I4,0);
+    VARAND(UI4,0xffffffff,DATE,-1,I4,-1);
+    VARAND(UI4,0xffffffff,DATE,0,I4,0);
+    VARAND(UI4,0,DATE,0,I4,0);
+    }
+    if (HAVE_OLEAUT32_I8)
+    {
+        todo_wine {
+        VARAND(UI4,0xffffffff,I8,0,I8,0);
+        VARAND(UI4,0,I8,0,I8,0);
+        VARAND(UI4,0xffffffff,UI8,0,I4,0);
+        VARAND(UI4,0,UI8,0,I4,0);
+        }
+    }
+    VARAND(UI4,0xffffffff,INT,-1,I4,-1);
+    VARAND(UI4,0xffffffff,INT,0,I4,0);
+    VARAND(UI4,0,INT,0,I4,0);
+    VARAND(UI4,0xffffffff,UINT,0xffffffff,I4,-1);
+    VARAND(UI4,0xffffffff,UINT,0,I4,0);
+    VARAND(UI4,0,UINT,0,I4,0);
+    todo_wine {
+    VARAND(UI4,0,BSTR,false_str,I4,0);
+    VARAND(UI4,0xffffffff,BSTR,false_str,I4,0);
+    VARAND(UI4,0,BSTR,true_str,I4,0);
+    VARAND(UI4,0xffffffff,BSTR,true_str,I4,-1);
+    VARANDCY(UI4,0xffffffff,10000,I4,1);
+    VARANDCY(UI4,0xffffffff,0,I4,0);
+    VARANDCY(UI4,0,0,I4,0);
+
+    VARAND(R4,-1,R4,-1,I4,-1);
+    VARAND(R4,-1,R4,0,I4,0);
+    VARAND(R4,0,R4,0,I4,0);
+    VARAND(R4,-1,R8,-1,I4,-1);
+    VARAND(R4,-1,R8,0,I4,0);
+    VARAND(R4,0,R8,0,I4,0);
+    VARAND(R4,-1,DATE,-1,I4,-1);
+    VARAND(R4,-1,DATE,0,I4,0);
+    VARAND(R4,0,DATE,0,I4,0);
+    }
+    if (HAVE_OLEAUT32_I8)
+    {
+        todo_wine {
+        VARAND(R4,-1,I8,-1,I8,-1);
+        VARAND(R4,-1,I8,0,I8,0);
+        VARAND(R4,0,I8,0,I8,0);
+        VARAND(R4,-1,UI8,0,I4,0);
+        VARAND(R4,0,UI8,0,I4,0);
+        }
+    }
+    todo_wine {
+    VARAND(R4,-1,INT,-1,I4,-1);
+    VARAND(R4,-1,INT,0,I4,0);
+    VARAND(R4,0,INT,0,I4,0);
+    VARAND(R4,-1,UINT,0xffffffff,I4,-1);
+    VARAND(R4,-1,UINT,0,I4,0);
+    VARAND(R4,0,UINT,0,I4,0);
+    VARAND(R4,0,BSTR,false_str,I4,0);
+    VARAND(R4,-1,BSTR,false_str,I4,0);
+    VARAND(R4,0,BSTR,true_str,I4,0);
+    VARAND(R4,-1,BSTR,true_str,I4,-1);
+    VARANDCY(R4,-1,10000,I4,1);
+    VARANDCY(R4,-1,0,I4,0);
+    VARANDCY(R4,0,0,I4,0);
+
+    VARAND(R8,-1,R8,-1,I4,-1);
+    VARAND(R8,-1,R8,0,I4,0);
+    VARAND(R8,0,R8,0,I4,0);
+    VARAND(R8,-1,DATE,-1,I4,-1);
+    VARAND(R8,-1,DATE,0,I4,0);
+    VARAND(R8,0,DATE,0,I4,0);
+    }
+    if (HAVE_OLEAUT32_I8)
+    {
+        todo_wine {
+        VARAND(R8,-1,I8,-1,I8,-1);
+        VARAND(R8,-1,I8,0,I8,0);
+        VARAND(R8,0,I8,0,I8,0);
+        VARAND(R8,-1,UI8,0,I4,0);
+        VARAND(R8,0,UI8,0,I4,0);
+        }
+    }
+    todo_wine {
+    VARAND(R8,-1,INT,-1,I4,-1);
+    VARAND(R8,-1,INT,0,I4,0);
+    VARAND(R8,0,INT,0,I4,0);
+    VARAND(R8,-1,UINT,0xffffffff,I4,-1);
+    VARAND(R8,-1,UINT,0,I4,0);
+    VARAND(R8,0,UINT,0,I4,0);
+    VARAND(R8,0,BSTR,false_str,I4,0);
+    VARAND(R8,-1,BSTR,false_str,I4,0);
+    VARAND(R8,0,BSTR,true_str,I4,0);
+    VARAND(R8,-1,BSTR,true_str,I4,-1);
+    VARANDCY(R8,-1,10000,I4,1);
+    VARANDCY(R8,-1,0,I4,0);
+    VARANDCY(R8,0,0,I4,0);
+    }
+
+    todo_wine {
+    VARAND(DATE,-1,DATE,-1,I4,-1);
+    VARAND(DATE,-1,DATE,0,I4,0);
+    VARAND(DATE,0,DATE,0,I4,0);
+    }
+    if (HAVE_OLEAUT32_I8)
+    {
+        todo_wine {
+        VARAND(DATE,-1,I8,-1,I8,-1);
+        VARAND(DATE,-1,I8,0,I8,0);
+        VARAND(DATE,0,I8,0,I8,0);
+        VARAND(DATE,-1,UI8,0,I4,0);
+        VARAND(DATE,0,UI8,0,I4,0);
+        }
+    }
+    todo_wine {
+    VARAND(DATE,-1,INT,-1,I4,-1);
+    VARAND(DATE,-1,INT,0,I4,0);
+    VARAND(DATE,0,INT,0,I4,0);
+    VARAND(DATE,-1,UINT,0xffffffff,I4,-1);
+    VARAND(DATE,-1,UINT,0,I4,0);
+    VARAND(DATE,0,UINT,0,I4,0);
+    VARAND(DATE,0,BSTR,false_str,I4,0);
+    VARAND(DATE,-1,BSTR,false_str,I4,0);
+    VARAND(DATE,0,BSTR,true_str,I4,0);
+    VARAND(DATE,-1,BSTR,true_str,I4,-1);
+    VARANDCY(DATE,-1,10000,I4,1);
+    VARANDCY(DATE,-1,0,I4,0);
+    VARANDCY(DATE,0,0,I4,0);
+    }
+
+    if (HAVE_OLEAUT32_I8)
+    {
+        todo_wine {
+        VARAND(I8,-1,I8,-1,I8,-1);
+        VARAND(I8,-1,I8,0,I8,0);
+        VARAND(I8,0,I8,0,I8,0);
+        VARAND(I8,-1,UI8,0,I8,0);
+        VARAND(I8,0,UI8,0,I8,0);
+        VARAND(I8,-1,UINT,0,I8,0);
+        VARAND(I8,0,UINT,0,I8,0);
+        VARAND(I8,0,BSTR,false_str,I8,0);
+        VARAND(I8,-1,BSTR,false_str,I8,0);
+        VARAND(I8,0,BSTR,true_str,I8,0);
+        VARAND(I8,-1,BSTR,true_str,I8,-1);
+        VARANDCY(I8,-1,10000,I8,1);
+        VARANDCY(I8,-1,0,I8,0);
+        VARANDCY(I8,0,0,I8,0);
+
+        VARAND(UI8,0xffff,UI8,0xffff,I4,0xffff);
+        VARAND(UI8,0xffff,UI8,0,I4,0);
+        VARAND(UI8,0,UI8,0,I4,0);
+        VARAND(UI8,0xffff,INT,-1,I4,65535);
+        VARAND(UI8,0xffff,INT,0,I4,0);
+        VARAND(UI8,0,INT,0,I4,0);
+        VARAND(UI8,0xffff,UINT,0xffff,I4,0xffff);
+        VARAND(UI8,0xffff,UINT,0,I4,0);
+        VARAND(UI8,0,UINT,0,I4,0);
+        VARAND(UI8,0,BSTR,false_str,I4,0);
+        VARAND(UI8,0xffff,BSTR,false_str,I4,0);
+        VARAND(UI8,0,BSTR,true_str,I4,0);
+        VARAND(UI8,0xffff,BSTR,true_str,I4,65535);
+        VARANDCY(UI8,0xffff,10000,I4,1);
+        VARANDCY(UI8,0xffff,0,I4,0);
+        VARANDCY(UI8,0,0,I4,0);
+        }
+    }
+
+    VARAND(INT,-1,INT,-1,I4,-1);
+    VARAND(INT,-1,INT,0,I4,0);
+    VARAND(INT,0,INT,0,I4,0);
+    VARAND(INT,-1,UINT,0xffff,I4,65535);
+    VARAND(INT,-1,UINT,0,I4,0);
+    VARAND(INT,0,UINT,0,I4,0);
+    todo_wine {
+    VARAND(INT,0,BSTR,false_str,I4,0);
+    VARAND(INT,-1,BSTR,false_str,I4,0);
+    VARAND(INT,0,BSTR,true_str,I4,0);
+    VARAND(INT,-1,BSTR,true_str,I4,-1);
+    VARANDCY(INT,-1,10000,I4,1);
+    VARANDCY(INT,-1,0,I4,0);
+    VARANDCY(INT,0,0,I4,0);
+    }
+
+    VARAND(UINT,0xffff,UINT,0xffff,I4,0xffff);
+    VARAND(UINT,0xffff,UINT,0,I4,0);
+    VARAND(UINT,0,UINT,0,I4,0);
+    todo_wine {
+    VARAND(UINT,0,BSTR,false_str,I4,0);
+    VARAND(UINT,0xffff,BSTR, false_str,I4,0);
+    VARAND(UINT,0,BSTR,true_str,I4,0);
+    VARAND(UINT,0xffff,BSTR,true_str,I4,65535);
+    VARANDCY(UINT,0xffff,10000,I4,1);
+    VARANDCY(UINT,0xffff,0,I4,0);
+    VARANDCY(UINT,0,0,I4,0);
+
+    VARAND(BSTR,false_str,BSTR,false_str,BOOL,0);
+    VARAND(BSTR,true_str,BSTR,false_str,BOOL,VARIANT_FALSE);
+    VARAND(BSTR,true_str,BSTR,true_str,BOOL,VARIANT_TRUE);
+    VARANDCY(BSTR,true_str,10000,I4,1);
+    VARANDCY(BSTR,false_str,10000,I4,0);
+    }
+
+    SysFreeString(true_str);
+    SysFreeString(false_str);
+}
+
 static HRESULT (WINAPI *pVarCmp)(LPVARIANT,LPVARIANT,LCID,ULONG);
 
 /* ERROR from wingdi.h is interfering here */
@@ -5581,4 +6239,5 @@ START_TEST(vartest)
   test_VarAdd();
   test_VarCat();
   test_VarCmp();
+  test_VarAnd();
 }
-- 
1.4.0


More information about the wine-patches mailing list