32DEFINE_GUID(UUID_test_struct, 0x4029f190, 0xca4a, 0x4611, 0xae,0xb9,0x67,0x39,0x83,0xcb,0x96,0xdd);
41# define HAS_UINT64_TO_FLOAT
44# define HAS_UINT64_TO_FLOAT
49# define HAS_UINT64_TO_FLOAT
58#define EQ_DOUBLE(a,b) (fabs((a)-(b)) / (1.0+fabs(a)+fabs(b)) < 1e-14)
68#define IS_MODERN_VTYPE(vt) (vt==VT_VARIANT||vt==VT_DECIMAL|| \
69 vt==VT_I1||vt==VT_UI2||vt==VT_UI4||vt == VT_INT||vt == VT_UINT)
72#define CONVVARS(typ) HRESULT hres; CONV_TYPE out; typ in
74#define _EXPECT_NO_OUT(res) ok(hres == res, "expected " #res ", got hres=%#08lx\n", hres)
75#define EXPECT_OVERFLOW _EXPECT_NO_OUT(DISP_E_OVERFLOW)
76#define EXPECT_MISMATCH _EXPECT_NO_OUT(DISP_E_TYPEMISMATCH)
77#define EXPECT_BADVAR _EXPECT_NO_OUT(DISP_E_BADVARTYPE)
78#define EXPECT_INVALID _EXPECT_NO_OUT(E_INVALIDARG)
79#define EXPECT_LT _EXPECT_NO_OUT(VARCMP_LT)
80#define EXPECT_GT _EXPECT_NO_OUT(VARCMP_GT)
81#define EXPECT_EQ _EXPECT_NO_OUT(VARCMP_EQ)
83#define _EXPECTRES(res, x, fs) \
84 ok(hres == S_OK && out == (CONV_TYPE)(x), "expected " #x ", got " fs "; hres=%#08lx\n", out, hres)
85#define EXPECT(x) EXPECTRES(S_OK, (x))
86#define EXPECT_DBL(x) \
87 ok(hres == S_OK && EQ_DOUBLE(out, (x)), "expected %.16g, got %.16g; hres=%#08lx\n", (x), out, hres)
88#define EXPECT_DBL2(new,old) \
89 ok(hres == S_OK && (EQ_DOUBLE(out, (new)) || broken(EQ_DOUBLE(out, (old)))), "expected %.16g or %.16g, got %.16g; hres=%#08lx\n", (new), (old), out, hres)
91#define CONVERT(func, val) in = val; hres = func(in, &out)
92#define CONVERTRANGE(func,start,end) for (i = start; i < end; i+=1) { CONVERT(func, i); EXPECT(i); };
93#define OVERFLOWRANGE(func,start,end) for (i = start; i < end; i+=1) { CONVERT(func, i); EXPECT_OVERFLOW; };
95#define CY_MULTIPLIER 10000
97#define DATE_MIN -657434
98#define DATE_MAX 2958465
100#define CONVERT_I8(func,hi,lo) in = hi; in = (in << 32) | lo; hres = func(in, &out)
102#define CONVERT_CY(func,val) in.int64 = (LONGLONG)(val * CY_MULTIPLIER); hres = func(in, &out)
104#define CONVERT_CY64(func,hi,lo) in.Hi = hi; in.Lo = lo; in.int64 *= CY_MULTIPLIER; hres = func(in, &out)
106#define SETDEC(dec, scl, sgn, hi, lo) dec.scale = (BYTE)scl; dec.sign = (BYTE)sgn; \
107 dec.Hi32 = (ULONG)hi; dec.Lo64 = (ULONG64)lo
109#define SETDEC64(dec, scl, sgn, hi, mid, lo) dec.scale = (BYTE)scl; dec.sign = (BYTE)sgn; \
110 dec.Hi32 = (ULONG)hi; dec.Mid32 = mid; dec.Lo32 = lo;
112#define CONVERT_DEC(func,scl,sgn,hi,lo) SETDEC(in,scl,sgn,hi,lo); hres = func(&in, &out)
114#define CONVERT_DEC64(func,scl,sgn,hi,mid,lo) SETDEC64(in,scl,sgn,hi,mid,lo); hres = func(&in, &out)
116#define CONVERT_BADDEC(func) \
117 CONVERT_DEC(func,29,0,0,0); EXPECT_INVALID; \
118 CONVERT_DEC(func,0,0x1,0,0); EXPECT_INVALID; \
119 CONVERT_DEC(func,0,0x40,0,0); EXPECT_INVALID; \
120 CONVERT_DEC(func,0,0x7f,0,0); EXPECT_INVALID;
122#define CONVERT_STR(func,str,flags) \
124 if (str) MultiByteToWideChar(CP_ACP,0,str,-1,buff,ARRAY_SIZE(buff)); \
125 hres = func(str ? buff : NULL,in,flags,&out)
127#define COPYTEST(val, vt, srcval, dstval, srcref, dstref, fs) do { \
128 HRESULT hres; VARIANTARG vSrc, vDst; CONV_TYPE in = val; \
129 VariantInit(&vSrc); VariantInit(&vDst); \
130 V_VT(&vSrc) = vt; srcval = in; \
131 hres = VariantCopy(&vDst, &vSrc); \
132 ok(hres == S_OK && V_VT(&vDst) == vt && dstval == in, \
133 "copy hres %#lX, type %d, value (" fs ") " fs "\n", hres, V_VT(&vDst), val, dstval); \
134 V_VT(&vSrc) = vt|VT_BYREF; srcref = ∈ \
135 hres = VariantCopy(&vDst, &vSrc); \
136 ok(hres == S_OK && V_VT(&vDst) == (vt|VT_BYREF) && dstref == &in, \
137 "ref hres %#lX, type %d, ref (%p) %p\n", hres, V_VT(&vDst), &in, dstref); \
138 hres = VariantCopyInd(&vDst, &vSrc); \
139 ok(hres == S_OK && V_VT(&vDst) == vt && dstval == in, \
140 "ind hres %#lX, type %d, value (" fs ") " fs "\n", hres, V_VT(&vDst), val, dstval); \
143#define CHANGETYPEEX(typ) hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, typ)
145#define TYPETEST(typ,res,fs) CHANGETYPEEX(typ); \
146 ok(hres == S_OK && V_VT(&vDst) == typ && (CONV_TYPE)res == in, \
147 "hres=%#lX, type=%d (should be %d(" #typ ")), value=" fs " (should be " fs ")\n", \
148 hres, V_VT(&vDst), typ, (CONV_TYPE)res, in);
149#define TYPETESTI8(typ,res) CHANGETYPEEX(typ); \
150 ok(hres == S_OK && V_VT(&vDst) == typ && (CONV_TYPE)res == in, \
151 "hres=%#lX, type=%d (should be %d(" #typ ")), value=%d (should be 1)\n", \
152 hres, V_VT(&vDst), typ, (int)res);
153#define BADVAR(typ) CHANGETYPEEX(typ); EXPECT_BADVAR
154#define MISMATCH(typ) CHANGETYPEEX(typ); EXPECT_MISMATCH
156#define INITIAL_TYPETEST(vt, val, fs) \
157 VariantInit(&vSrc); \
158 VariantInit(&vDst); \
161 TYPETEST(VT_I1, V_I1(&vDst), fs); \
162 TYPETEST(VT_UI2, V_UI2(&vDst), fs); \
163 TYPETEST(VT_UI4, V_UI4(&vDst), fs); \
164 TYPETEST(VT_INT, V_INT(&vDst), fs); \
165 TYPETEST(VT_UINT, V_UINT(&vDst), fs); \
166 TYPETEST(VT_UI1, V_UI1(&vDst), fs); \
167 TYPETEST(VT_I2, V_I2(&vDst), fs); \
168 TYPETEST(VT_I4, V_I4(&vDst), fs); \
169 TYPETEST(VT_R4, V_R4(&vDst), fs); \
170 TYPETEST(VT_R8, V_R8(&vDst), fs); \
171 TYPETEST(VT_DATE, V_DATE(&vDst), fs); \
174 TYPETEST(VT_I8, V_I8(&vDst), fs); \
175 TYPETEST(VT_UI8, V_UI8(&vDst), fs); \
177#define NEGATIVE_TYPETEST(vt, val, fs, vtneg, valneg) \
179 VariantInit(&vSrc); \
180 VariantInit(&vDst); \
183 TYPETEST(vtneg, valneg(&vDst), fs);
185#define INITIAL_TYPETESTI8(vt, val) \
186 VariantInit(&vSrc); \
187 VariantInit(&vDst); \
190 TYPETESTI8(VT_I1, V_I1(&vDst)); \
191 TYPETESTI8(VT_UI1, V_UI1(&vDst)); \
192 TYPETESTI8(VT_I2, V_I2(&vDst)); \
193 TYPETESTI8(VT_UI2, V_UI2(&vDst)); \
194 TYPETESTI8(VT_I4, V_I4(&vDst)); \
195 TYPETESTI8(VT_UI4, V_UI4(&vDst)); \
196 TYPETESTI8(VT_INT, V_INT(&vDst)); \
197 TYPETESTI8(VT_UINT, V_UINT(&vDst)); \
198 TYPETESTI8(VT_R4, V_R4(&vDst)); \
199 TYPETESTI8(VT_R8, V_R8(&vDst)); \
200 TYPETESTI8(VT_DATE, V_DATE(&vDst)); \
201 TYPETESTI8(VT_I8, V_I8(&vDst)); \
202 TYPETESTI8(VT_UI8, V_UI8(&vDst))
204#define COMMON_TYPETEST \
205 hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_BOOL); \
206 ok(hres == S_OK && V_VT(&vDst) == VT_BOOL && \
207 (V_BOOL(&vDst) == VARIANT_TRUE || (V_VT(&vSrc) == VT_BOOL && V_BOOL(&vDst) == 1)), \
208 "->VT_BOOL hres=0x%lX, type=%d (should be VT_BOOL), value %d (should be VARIANT_TRUE)\n", \
209 hres, V_VT(&vDst), V_BOOL(&vDst)); \
210 hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_CY); \
211 ok(hres == S_OK && V_VT(&vDst) == VT_CY && V_CY(&vDst).int64 == CY_MULTIPLIER, \
212 "->VT_CY hres=0x%lX, type=%d (should be VT_CY), value (%08lx,%08lx) (should be CY_MULTIPLIER)\n", \
213 hres, V_VT(&vDst), V_CY(&vDst).Hi, V_CY(&vDst).Lo); \
214 if (V_VT(&vSrc) != VT_DATE) \
216 hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_BSTR); \
217 ok(hres == S_OK && V_VT(&vDst) == VT_BSTR && \
218 V_BSTR(&vDst) && V_BSTR(&vDst)[0] == '1' && V_BSTR(&vDst)[1] == '\0', \
219 "->VT_BSTR hres=0x%lX, type=%d (should be VT_BSTR), *bstr='%c'\n", \
220 hres, V_VT(&vDst), V_BSTR(&vDst) ? *V_BSTR(&vDst) : '?'); \
222 hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_DECIMAL); \
223 ok(hres == S_OK && V_VT(&vDst) == VT_DECIMAL && \
224 V_DECIMAL(&vDst).sign == 0 && V_DECIMAL(&vDst).scale == 0 && \
225 V_DECIMAL(&vDst).Hi32 == 0 && V_DECIMAL(&vDst).Lo64 == (ULONGLONG)in, \
226 "->VT_DECIMAL hres=0x%lX, type=%d (should be VT_DECIMAL), sign=%d, scale=%d, hi=%lu, lo=(%8lx %8lx),\n", \
227 hres, V_VT(&vDst), V_DECIMAL(&vDst).sign, V_DECIMAL(&vDst).scale, \
228 V_DECIMAL(&vDst).Hi32, V_DECIMAL(&vDst).Mid32, V_DECIMAL(&vDst).Lo32); \
229 hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_EMPTY); \
230 ok(hres == S_OK && V_VT(&vDst) == VT_EMPTY, "->VT_EMPTY hres=0x%lX, type=%d (should be VT_EMPTY)\n", hres, V_VT(&vDst)); \
231 hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_NULL); \
232 ok(hres == S_OK && V_VT(&vDst) == VT_NULL, "->VT_NULL hres=0x%lX, type=%d (should be VT_NULL)\n", hres, V_VT(&vDst)); \
233 MISMATCH(VT_DISPATCH); \
234 MISMATCH(VT_ERROR); \
235 MISMATCH(VT_UNKNOWN); \
236 MISMATCH(VT_VARIANT); \
237 MISMATCH(VT_RECORD); \
239 BADVAR(VT_HRESULT); \
240 BADVAR(VT_SAFEARRAY); \
242 BADVAR(VT_USERDEFINED); \
246 BADVAR(VT_INT_PTR); \
247 BADVAR(VT_UINT_PTR); \
248 BADVAR(VT_FILETIME); \
251 BADVAR(VT_STORAGE); \
252 BADVAR(VT_STREAMED_OBJECT); \
253 BADVAR(VT_STORED_OBJECT); \
254 BADVAR(VT_BLOB_OBJECT); \
259#define DEFINE_EXPECT(func) \
260 static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
262#define SET_EXPECT(func) \
263 do { called_ ## func = FALSE; expect_ ## func = TRUE; } while(0)
265#define CHECK_EXPECT2(func) \
267 ok(expect_ ##func, "unexpected call " #func "\n"); \
268 called_ ## func = TRUE; \
271#define CHECK_EXPECT(func) \
273 CHECK_EXPECT2(func); \
274 expect_ ## func = FALSE; \
277#define CHECK_CALLED(func) \
279 ok(called_ ## func, "expected " #func "\n"); \
280 expect_ ## func = called_ ## func = FALSE; \
327 IDispatch_AddRef(iface);
335 ok(0,
"Unexpected call\n");
341 ok(0,
"Unexpected call\n");
348 ok(0,
"Unexpected call\n");
364 ok(dispid == DISPID_VALUE,
"got dispid %ld\n", dispid);
375 ok(ei ==
NULL,
"got %p\n", ei);
376 ok(arg_err ==
NULL,
"got %p\n", arg_err);
378 if (
This->bFailInvoke)
414#define CONV_TYPE signed char
416#define EXPECTRES(res, x) _EXPECTRES(res, x, "%d")
652#define CONV_TYPE BYTE
654#define EXPECTRES(res, x) _EXPECTRES(res, x, "%u")
948#define CONV_TYPE SHORT
950#define EXPECTRES(res, x) _EXPECTRES(res, x, "%d")
1186#define CONV_TYPE USHORT
1188#define EXPECTRES(res, x) _EXPECTRES(res, x, "%u")
1421#define CONV_TYPE LONG
1423#define EXPECTRES(res, x) _EXPECTRES(res, x, "%ld")
1654#define CONV_TYPE ULONG
1656#define EXPECTRES(res, x) _EXPECTRES(res, x, "%lu")
1880#define CONV_TYPE LONG64
1882#define EXPECTRES(res, x) _EXPECTRES(res, x, "%I64d")
2065 win_skip(
"I8 and UI8 data types are not available\n");
2080 win_skip(
"I8 and UI8 data types are not available\n");
2092#define CONV_TYPE ULONG64
2094#define EXPECTRES(res, x) _EXPECTRES(res, x, "%I64u")
2280 win_skip(
"I8 and UI8 data types are not available\n");
2295 win_skip(
"I8 and UI8 data types are not available\n");
2310#define CONV_TYPE float
2312#define EXPECTRES(res, x) _EXPECTRES(res, x, "%15.15f")
2363#if defined(__i386__) && (defined(_MSC_VER) || defined(__GNUC__))
2482#ifdef HAS_UINT64_TO_FLOAT
2499#define CONV_TYPE double
2602#if defined(__i386__) && (defined(_MSC_VER) || defined(__GNUC__))
2613#if defined(__i386__) && (defined(_MSC_VER) || defined(__GNUC__))
2677#ifdef HAS_UINT64_TO_FLOAT
2689#define MATHRND(l, r) left = l; right = r; hres = VarR8Round(left, right, &out)
2733#define CONV_TYPE DATE
2886 buff[0] = '\0'; out = 0.0; \
2887 if (str) MultiByteToWideChar(CP_ACP,0,str,-1,buff,ARRAY_SIZE(buff)); \
2888 hres = VarDateFromStr(str ? buff : NULL,lcid,LOCALE_NOUSEROVERRIDE,&out)
2890#define MKRELDATE(day,mth) st.wMonth = mth; st.wDay = day; \
2891 SystemTimeToVariantTime(&st,&relative)
2896 "0.",
".0",
"-1.1",
"1.1-",
2897 "1;2;3",
"1*2*3",
"1@2@3",
"1#2#3",
"(1:2)",
"<1:2>",
"1|2|3",
2899 "0.60",
"24.00",
"0:60",
"24:00",
"1 2 am",
"1 am 2",
2900 "1.5 2",
"1 5.2",
"2 32 3",
"1 2 am 3",
2901 "1 2.3 4",
"1.2.3 4",
"1 2.3.4",
"1.2 3.4",
"1.2.3.4",
"1 2 3 4",
2902 "1 am 2 3.4",
"1 2 am 3.4",
"1.2 3 am 4",
"1.2 3 4 am",
2903 "1.2.3.4.5",
"1.2.3.4 5",
"1.2.3 4.5",
"1.2 3.4.5",
"1.2 3.4 5",
"1.2 3 4.5",
2904 "1 2.3.4.5",
"1 2.3.4 5",
"1 2.3 4.5",
"1 2.3 4 5",
"1 2 3.4 5",
"1 2 3 4 5",
2905 "1.2.3 4 am 5",
"1.2.3 4 5 am",
"1.2 3 am 4 5",
2906 "1.2 3 4 am 5",
"1.2 3 4 5 am",
"1 am 2 3.4.5",
"1 2 am 3.4.5",
2907 "1 am 2 3 4.5",
"1 2 am 3 4.5",
"1 2 3 am 4.5",
2909 "1.2.3.4.5.6",
"1.2.3.4.5 6",
"1.2.3.4 5.6",
"1.2.3.4 5 6",
"1.2.3 4.5.6",
2910 "1.2.3 4.5 6",
"1.2.3 4 5.6",
"1.2 3.4.5.6",
"1.2 3.4.5 6",
"1.2 3.4 5.6",
2911 "1.2 3.4 5 6",
"1.2 3 4.5.6",
"1.2 3 4.5 6",
"1.2 3 4 5.6",
"1.2 3 4 5 6",
2912 "1 2.3.4.5.6",
"1 2.3.4.5 6",
"1 2.3.4 5.6",
"1 2.3.4 5 6",
"1 2.3 4.5.6",
2915 "1 2.3 4.5 6",
"1 2.3 4 5.6",
"1 2.3 4 5 6",
"1 2 3.4.5.6",
"1 2 3.4.5 6",
2917 "1 2 3.4 5.6",
"1 2 3.4 5 6",
"1 2 3 4.5 6",
"1 2 3 4 5.6",
"1 2 3 4 5 6",
2920 "1.2.3 4 am 5 6",
"1.2.3 4 5 am 6",
"1.2.3 4 5 6 am",
"1 am 2 3 4.5.6",
2922 "1 2 am 3 4.5.6",
"1 2 3 am 4.5.6"
2933 OLECHAR with_ideographic_spaceW[] = {
'6',
'/',
'3',
'0',
'/',
'2',
'0',
'1',
'1',0x3000,
2934 '1',
':',
'2',
'0',
':',
'3',
'4',0 };
3062 DFS(
"6/30/2011 01:20:34 AM");
EXPECT_DBL(40724.05594907407);
3063 DFS(
"6/30/2011 01:20:34 PM");
EXPECT_DBL(40724.55594907407);
3097 static char buff[256];
3104 static const WCHAR sz25570[] = {
3105 '1',
'/',
'2',
'/',
'1',
'9',
'7',
'0',
'\0' };
3106 static const WCHAR sz25570_2[] = {
3107 '1',
'/',
'2',
'/',
'7',
'0',
'\0' };
3108 static const WCHAR sz25570Nls[] = {
3109 '1',
'/',
'2',
'/',
'1',
'9',
'7',
'0',
' ',
'1',
'2',
':',
'0',
'0',
':',
'0',
'0',
' ',
'A',
'M',
'\0' };
3117#ifdef HAS_UINT64_TO_FLOAT
3130 "hres=0x%lX, type=%d (should be VT_BSTR), *bstr=%s\n",
3139 "hres=0x%lX, type=%d (should be VT_BSTR), *bstr=%s\n",
3152#define EXPECTCY(x) \
3153 ok((hres == S_OK && out.int64 == (LONGLONG)(x*CY_MULTIPLIER)), \
3154 "expected " #x "*CY_MULTIPLIER, got (%8lx %8lx); hres=0x%08lx\n", out.Hi, out.Lo, hres)
3156#define EXPECTCY64(x,y) \
3157 ok(hres == S_OK && out.Hi == (LONG)x && out.Lo == y, \
3158 "expected " #x " " #y " (%lu,%lu), got (%lu,%lu); hres=0x%08lx\n", \
3159 (ULONG)(x), (ULONG)(y), out.Hi, out.Lo, hres)
3166 for (
i = -128;
i < 128;
i++)
3177 for (
i = 0;
i < 256;
i++)
3188 for (
i = -16384;
i < 16384;
i++)
3199 for (
i = 0;
i < 32768;
i++)
3260#if defined(__i386__) && (defined(_MSC_VER) || defined(__GNUC__))
3301 for (
i = -32768;
i < 32768;
i++)
3362#if defined(__i386__) && (defined(_MSC_VER) || defined(__GNUC__))
3395#define MATHVARS1 HRESULT hres; double left = 0.0; CY cyLeft, out
3396#define MATHVARS2 MATHVARS1; double right = 0.0; CY cyRight
3397#define MATH1(func, l) left = (double)l; VarCyFromR8(left, &cyLeft); hres = func(cyLeft, &out)
3398#define MATH2(func, l, r) left = (double)l; right = (double)r; \
3399 VarCyFromR8(left, &cyLeft); VarCyFromR8(right, &cyRight); \
3400 hres = func(cyLeft, cyRight, &out)
3462#define MATHMULI4(l, r) left = l; right = r; VarCyFromR8(left, &cyLeft); \
3463 hres = VarCyMulI4(cyLeft, right, &out)
3477#define MATHMULI8(l, r) left = l; right = r; VarCyFromR8(left, &cyLeft); \
3478 hres = VarCyMulI8(cyLeft, right, &out)
3492#define MATHCMP(l, r) left = l; right = r; VarCyFromR8(left, &cyLeft); VarCyFromR8(right, &cyRight); \
3493 hres = VarCyCmp(cyLeft, cyRight)
3514#define MATHCMPR8(l, r) left = l; right = r; VarCyFromR8(left, &cyLeft); \
3515 hres = VarCyCmpR8(cyLeft, right);
3538#define MATHRND(l, r) left = l; right = r; VarCyFromR8(left, &cyLeft); \
3539 hres = VarCyRound(cyLeft, right, &out)
3570#define MATHFIX(l) left = l; VarCyFromR8(left, &cyLeft); \
3571 hres = VarCyFix(cyLeft, &out)
3595#define MATHINT(l) left = l; VarCyFromR8(left, &cyLeft); \
3596 hres = VarCyInt(cyLeft, &out)
3625#define CONV_TYPE DECIMAL
3627#define EXPECTDEC(scl, sgn, hi, lo) ok(hres == S_OK && \
3628 out.scale == (BYTE)(scl) && out.sign == (BYTE)(sgn) && \
3629 out.Hi32 == (ULONG)(hi) && out.Lo64 == (ULONG64)(lo), \
3630 "expected (%d,%d,%d,%I64x), got (%d,%d,%ld,(%lx %lx)) hres 0x%08lx\n", \
3631 scl, sgn, hi, (LONG64)(lo), out.scale, \
3632 out.sign, out.Hi32, out.Mid32, out.Lo32, hres)
3634#define EXPECTDEC64(scl, sgn, hi, mid, lo) ok(hres == S_OK && \
3635 out.scale == (BYTE)(scl) && out.sign == (BYTE)(sgn) && \
3636 out.Hi32 == (ULONG)(hi) && out.Mid32 == (ULONG)(mid) && \
3637 out.Lo32 == (ULONG)(lo), \
3638 "expected (%d,%d,%d,(%lx %lx)), got (%d,%d,%ld,(%lx %lx)) hres 0x%08lx\n", \
3639 scl, sgn, hi, (LONG)(mid), (LONG)(lo), out.scale, \
3640 out.sign, out.Hi32, out.Mid32, out.Lo32, hres)
3643#define EXPECTDECZERO() ok(hres == S_OK && out.scale == 0 && \
3644 (out.sign == 0 || out.sign == 0x80) && out.Hi32 == 0 && out.Lo64 == 0, \
3645 "expected zero, got (%d,%d,%ld,(%lx %lx)) hres 0x%08lx\n", \
3646 out.scale, out.sign, out.Hi32, out.Mid32, out.Lo32, hres)
3648#define EXPECTDECI if (i < 0) EXPECTDEC(0, 0x80, 0, -i); else EXPECTDEC(0, 0, 0, i)
3655 for (
i = -128;
i < 128;
i++)
3666 for (
i = -32768;
i < 32768;
i++)
3677 for (
i = -32768;
i < 32768;
i++)
3688 for (
i = -32768;
i < 32768;
i++)
3699 for (
i = 0;
i < 256;
i++)
3710 for (
i = 0;
i < 65536;
i++)
3721 for (
i = 0;
i < 65536;
i++)
3732 for (
i = 0;
i < 65536;
i++)
3744 for (
i = -32768;
i < 0;
i++)
3822#define MATHVARS1 HRESULT hres; DECIMAL l, out
3824#define MATHVARS2 MATHVARS1; DECIMAL r
3826#define MATH1(func) hres = func(&l, &out)
3828#define MATH2(func) hres = func(&l, &r, &out)
3830#define MATH3(func) hres = func(&l, r)
3865 SETDEC(
l,0,0,0,0);
SETDEC(
r,0,0,0,0);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,0);
3866 SETDEC(
l,0,0,0,0);
SETDEC(
r,0,0x80,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0x80,0,1);
3867 SETDEC(
l,0,0,0,0);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,1);
3869 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0,0,0);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,1);
3870 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,2);
3872 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0x80,0,2);
MATH2(
VarDecAdd);
EXPECTDEC(0,0x80,0,1);
3874 SETDEC(
l,0,0x80,0,0);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,1);
3876 SETDEC(
l,0,0x80,0,1);
SETDEC(
r,0,0,0,2);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,1);
3877 SETDEC(
l,0,0x80,0,1);
SETDEC(
r,0,0x80,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0x80,0,2);
3878 SETDEC(
l,0,0x80,0,2);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0x80,0,1);
3880 SETDEC(
l,0,0,0,0xffffffff);
SETDEC(
r,0,0x80,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,0xfffffffe);
3881 SETDEC(
l,0,0,0,0xffffffff);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,(
ULONG64)1 << 32);
3882 SETDEC(
l,0,0,0,0xffffffff);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,(
ULONG64)1 << 32);
3884 SETDEC64(
l,0,0,0,0xffffffff,0);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC64(0,0,0,0xffffffff,1);
3888 SETDEC64(
l,0,0,0,0xffffffff,0xffffffff);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,1,0);
3892 SETDEC(
l,0,0,0xffffffff,0);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0xffffffff,1);
3894 EXPECTDEC64(0,0,0xfffffffe,0xffffffff,0xffffffff);
3897 EXPECTDEC64(0,0,0xffffffff,0xffffffff,0xfffffffe);
3903 EXPECTDEC64(0,0,0x19999999,0x99999999,0x9999999A);
3905 SETDEC64(
l,0,0,0xe22ea493,0xb30310a7,0x70000000);
SETDEC64(
r,0,0,0xe22ea493,0xb30310a7,0x70000000);
MATH2(
VarDecAdd);
3909 SETDEC64(
l,1,0,0xe22ea493,0xb30310a7,0x70000000);
SETDEC64(
r,1,0,0xe22ea493,0xb30310a7,0x70000000);
MATH2(
VarDecAdd);
3910 EXPECTDEC64(0,0,0x2d3c8750,0xbd670354,0xb0000000);
3912 SETDEC(
l,3,128,0,123456);
SETDEC64(
r,0,0,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF);
3930 SETDEC(
l,3,128,0,123456);
SETDEC64(
r,0,0,0x19999999,0x99999999,0x99999999);
3933 SETDEC(
l,3,128,0,123567);
SETDEC64(
r,0,0,0x19999999,0x99999999,0x99999999);
3937 SETDEC(
l,2,0,0,0);
SETDEC(
r,0,0,0,0);
MATH2(
VarDecAdd);
EXPECTDEC(2,0,0,0);
3938 SETDEC(
l,2,0,0,100);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(2,0,0,200);
3946 SETDEC(
l,0,0,0,0);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecSub);
EXPECTDEC(0,0x80,0,1);
3948 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0x80,0,1);
MATH2(
VarDecSub);
EXPECTDEC(0,0,0,2);
3955 SETDEC(
l,0,0,0,0);
SETDEC(
r,0,0,0,0);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0,0);
3956 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0,0,0);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0,0);
3957 SETDEC(
l,0,0,0,0);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0,0);
3958 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0,1);
3959 SETDEC(
l,0,0,0,45000);
SETDEC(
r,0,0,0,2);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0,90000);
3960 SETDEC(
l,0,0,0,2);
SETDEC(
r,0,0,0,45000);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0,90000);
3962 SETDEC(
l,0,0x80,0,2);
SETDEC(
r,0,0,0,2);
MATH2(
VarDecMul);
EXPECTDEC(0,0x80,0,4);
3963 SETDEC(
l,0,0,0,2);
SETDEC(
r,0,0x80,0,2);
MATH2(
VarDecMul);
EXPECTDEC(0,0x80,0,4);
3964 SETDEC(
l,0,0x80,0,2);
SETDEC(
r,0,0x80,0,2);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0,4);
3966 SETDEC(
l,4,0,0,2);
SETDEC(
r,0,0,0,2);
MATH2(
VarDecMul);
EXPECTDEC(4,0,0,4);
3967 SETDEC(
l,0,0,0,2);
SETDEC(
r,3,0,0,2);
MATH2(
VarDecMul);
EXPECTDEC(3,0,0,4);
3968 SETDEC(
l,4,0,0,2);
SETDEC(
r,3,0,0,2);
MATH2(
VarDecMul);
EXPECTDEC(7,0,0,4);
3972 SETDEC(
l,4,0,0,5);
SETDEC(
r,3,0,0,2);
MATH2(
VarDecMul);
EXPECTDEC(7,0,0,10);
3974 SETDEC64(
l,0,0,0,0xFFFFFFFF,0xFFFFFFFF);
SETDEC(
r,0,0,0,2);
MATH2(
VarDecMul);
EXPECTDEC64(0,0,1,0xFFFFFFFF,0xFFFFFFFE);
3975 SETDEC(
l,0,0,0,2);
SETDEC64(
r,0,0,0,0xFFFFFFFF,0xFFFFFFFF);
MATH2(
VarDecMul);
EXPECTDEC64(0,0,1,0xFFFFFFFF,0xFFFFFFFE);
3976 SETDEC(
l,0,0,1,1);
SETDEC(
r,0,0,0,0x80000000);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0x80000000,0x80000000);
3977 SETDEC(
l,0,0,0,0x80000000);
SETDEC(
r,0,0,1,1);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0x80000000,0x80000000);
3980 SETDEC64(
l,0,0,0,0xFFFFFFFF,0xFFFFFFFF);
SETDEC(
r,0,0,0,2000000000);
MATH2(
VarDecMul);
EXPECTDEC64(0,0,1999999999,0xFFFFFFFF,0x88CA6C00);
3982 SETDEC64(
l,0,0,0,0xFFFFFFFF,0xFFFFFFFF);
SETDEC64(
r,0,0,0,4,0xA817C800);
MATH2(
VarDecMul);
3986 SETDEC64(
l,1,0,0,0xFFFFFFFF,0xFFFFFFFF);
SETDEC64(
r,0,0,0,4,0xA817C800);
MATH2(
VarDecMul);
EXPECTDEC64(0,0,1999999999,0xFFFFFFFF,0x88CA6C00);
3989 SETDEC64(
l,0,0,1,0xFFFFFFFF,0xFFFFFFFE);
SETDEC(
r,0,0,0,1000000000);
MATH2(
VarDecMul);
EXPECTDEC64(0,0,1999999999,0xFFFFFFFF,0x88CA6C00);
3991 SETDEC64(
l,0,0,1,0xFFFFFFFF,0xFFFFFFFE);
SETDEC64(
r,0,0,0,2,0x540BE400);
MATH2(
VarDecMul);
3995 SETDEC64(
l,1,0,1,0xFFFFFFFF,0xFFFFFFFE);
SETDEC64(
r,0,0,0,2,0x540BE400);
MATH2(
VarDecMul);
EXPECTDEC64(0,0,1999999999,0xFFFFFFFF,0x88CA6C00);
3998 SETDEC64(
l,2,0,0,0xFFFFFFFF,0xFFFFFFFF);
SETDEC64(
r,0,0,0,9,0x502F9001);
MATH2(
VarDecMul);
EXPECTDEC64(1,0,0xee6b2800,0x19999998,0xab2e719a);
4006 SETDEC(
l,0,0,0,0);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecDiv);
EXPECTDEC(0,0,0,0);
4007 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecDiv);
EXPECTDEC(0,0,0,1);
4008 SETDEC(
l,1,0,0,1);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecDiv);
EXPECTDEC(1,0,0,1);
4011 SETDEC(
l,0,0,0,45);
SETDEC(
r,0,0,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(0,0,0,5);
4012 SETDEC(
l,1,0,0,45);
SETDEC(
r,0,0,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(1,0,0,5);
4013 SETDEC(
l,0,0,0,45);
SETDEC(
r,1,0,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(0,0,0,50);
4014 SETDEC(
l,1,0,0,45);
SETDEC(
r,2,0,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(0,0,0,50);
4019 SETDEC(
l,1,0,0,45);
SETDEC(
r,1,0,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(0,0,0,5);
4025 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0,0,3);
MATH2(
VarDecDiv);
EXPECTDEC64(28,0,180700362,0x14b700cb,0x05555555);
4026 SETDEC(
l,1,0,0,1);
SETDEC(
r,0,0,0,3);
MATH2(
VarDecDiv);
EXPECTDEC64(28,0,18070036,0x35458014,0x4d555555);
4027 SETDEC(
l,0,0,0,1);
SETDEC(
r,1,0,0,3);
MATH2(
VarDecDiv);
EXPECTDEC64(28,0,1807003620,0xcf2607ee,0x35555555);
4028 SETDEC(
l,1,0,0,1);
SETDEC(
r,2,0,0,3);
MATH2(
VarDecDiv);
EXPECTDEC64(28,0,1807003620,0xcf2607ee,0x35555555);
4029 SETDEC(
l,1,0,0,1);
SETDEC(
r,1,0,0,3);
MATH2(
VarDecDiv);
EXPECTDEC64(28,0,180700362,0x14b700cb,0x05555555);
4030 SETDEC(
l,2,0,0,10);
SETDEC(
r,1,0,0,3);
MATH2(
VarDecDiv);
EXPECTDEC64(28,0,180700362,0x14b700cb,0x05555555);
4033 SETDEC(
l,0,0,0,2);
SETDEC(
r,0,0,0,3);
MATH2(
VarDecDiv);
EXPECTDEC64(28,0,361400724,0x296e0196,0x0aaaaaab);
4036 SETDEC(
l,0,0x80,0,45);
SETDEC(
r,0,0,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(0,0x80,0,5);
4037 SETDEC(
l,0,0,0,45);
SETDEC(
r,0,0x80,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(0,0x80,0,5);
4038 SETDEC(
l,0,0x80,0,45);
SETDEC(
r,0,0x80,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(0,0,0,5);
4183#define CLEAR(x) memset(&(x), 0xBB, sizeof(x))
4206 CLEAR(
out);
SETDEC64(
l, 0, 0, 0xffffffff, 0xffffffff, 0xffffffff);
hres =
VarDecRound(&
l, 0, &
out);
EXPECTDEC64(0, 0, 0xffffffff, 0xffffffff, 0xffffffff);
4207 CLEAR(
out);
SETDEC64(
l, 28, 0, 0xffffffff, 0xffffffff, 0xffffffff);
hres =
VarDecRound(&
l, 0, &
out);
EXPECTDEC64(0, 0, 0, 0, 8);
4208 CLEAR(
out);
SETDEC64(
l, 0, DECIMAL_NEG, 0xffffffff, 0xffffffff, 0xffffffff);
hres =
VarDecRound(&
l, 0, &
out);
EXPECTDEC64(0, DECIMAL_NEG, 0xffffffff, 0xffffffff, 0xffffffff);
4209 CLEAR(
out);
SETDEC64(
l, 28, DECIMAL_NEG, 0xffffffff, 0xffffffff, 0xffffffff);
hres =
VarDecRound(&
l, 0, &
out);
EXPECTDEC64(0, DECIMAL_NEG, 0, 0, 8);
4219#define CONV_TYPE VARIANT_BOOL
4221#define EXPECTRES(res, x) _EXPECTRES(res, x, "%d")
4223#define CONVERTRANGE(func,start,end) for (i = start; i < end; i++) { \
4224 CONVERT(func, i); if (i) { EXPECT(VARIANT_TRUE); } else { EXPECT(VARIANT_FALSE); } }
4445#define BOOL_STR(flags, str) hres = VariantChangeTypeEx(&vDst, &vSrc, lcid, flags, VT_BSTR); \
4446 ok(hres == S_OK && V_VT(&vDst) == VT_BSTR && \
4447 V_BSTR(&vDst) && !memcmp(V_BSTR(&vDst), str, sizeof(str)), \
4448 "hres=0x%lX, type=%d (should be VT_BSTR), *bstr='%c'\n", \
4449 hres, V_VT(&vDst), V_BSTR(&vDst) ? *V_BSTR(&vDst) : '?'); \
4454 static const WCHAR szTrue[] = {
'T',
'r',
'u',
'e',
'\0' };
4455 static const WCHAR szFalse[] = {
'F',
'a',
'l',
's',
'e',
'\0' };
4456 static const WCHAR szFaux[] = {
'F',
'a',
'u',
'x',
'\0' };
4496 static const WCHAR int_min[] = {
'-',
'2',
'1',
'4',
'7',
'4',
'8',
'3',
'6',
'4',
'8',
'\0' };
4497 static const WCHAR minus_42[] = {
'-',
'4',
'2',
'\0' };
4506 value = (-2147483647 - 1);
4508 value = -2147483648;
4514 ok(
memcmp(bstr, int_min,
sizeof(int_min)) == 0,
"string different\n");
4523 ok(
memcmp(bstr, minus_42,
sizeof(minus_42)) == 0,
"string different\n");
4536 static const struct r4_test tests_en[] =
4540 { 0.005,
L"0.005" },
4541 { 0.0005,
L"0.0005" },
4542 { 0.00005,
L"0.00005" },
4543 { 0.000005,
L"0.000005" },
4545 { 1.0e8,
L"1E+08" },
4546 { 1.0e12,
L"1E+12" },
4547 { 1.0e14,
L"1E+14" },
4548 { 999999999999999.0,
L"1E+15" },
4549 { 1000000000000000.0,
L"1E+15" },
4550 { 1200000000000000.0,
L"1.2E+15" },
4551 { 1.0e15,
L"1E+15" },
4553 { 1.000e16,
L"1E+16" },
4554 { 1.234e16,
L"1.234E+16" },
4555 { 3.14159300,
L"3.141593" },
4556 { 3.14159265,
L"3.141593" },
4557 {
M_PI,
L"3.141593" },
4558 { 12.34567890,
L"12.34568" },
4559 { 123.45678901,
L"123.4568" },
4560 { 1234.56789012,
L"1234.568" },
4564 static const struct r4_test tests_es[] =
4568 { 0.005,
L"0,005" },
4569 { 0.0005,
L"0,0005" },
4570 { 0.00005,
L"0,00005" },
4571 { 0.000005,
L"0,000005" },
4573 { 1.0e8,
L"1E+08" },
4574 { 1.0e12,
L"1E+12" },
4575 { 1.0e14,
L"1E+14" },
4576 { 999999999999999.0,
L"1E+15" },
4577 { 1000000000000000.0,
L"1E+15" },
4578 { 1200000000000000.0,
L"1,2E+15" },
4579 { 1.0e15,
L"1E+15" },
4581 { 1.000e16,
L"1E+16" },
4582 { 1.234e16,
L"1,234E+16" },
4583 { 3.14159300,
L"3,141593" },
4584 { 3.14159265,
L"3,141593" },
4585 {
M_PI,
L"3,141593" },
4586 { 12.34567890,
L"12,34568" },
4587 { 123.45678901,
L"123,4568" },
4588 { 1234.56789012,
L"1234,568" },
4593 static const WCHAR szNative[] = {
'6',
'5',
'4',
'3',
'2',
'2',
'.',
'3',
'\0' };
4594 static const WCHAR szZero[] = {
'0',
'\0'};
4595 static const WCHAR szOneHalf_English[] = {
'0',
'.',
'5',
'\0' };
4596 static const WCHAR szOneHalf_Spanish[] = {
'0',
',',
'5',
'\0' };
4611 ok(
memcmp(bstr, szNative,
sizeof(szNative)) == 0,
"string different\n");
4621 ok(
memcmp(bstr + 1, szZero,
sizeof(szZero)) == 0,
"negative zero (got %s)\n",
wtoascii(bstr));
4623 ok(
memcmp(bstr, szZero,
sizeof(szZero)) == 0,
"negative zero (got %s)\n",
wtoascii(bstr));
4633 ok(
memcmp(bstr, szOneHalf_English,
sizeof(szOneHalf_English)) == 0,
"English locale failed (got %s)\n",
wtoascii(bstr));
4641 ok(
memcmp(bstr, szOneHalf_Spanish,
sizeof(szOneHalf_Spanish)) == 0,
"Spanish locale failed (got %s)\n",
wtoascii(bstr));
4654 ok(
wcscmp(bstr,
cur->expect) == 0,
"expected '%ls', got '%ls'\n",
cur->expect, bstr);
4669 ok(
wcscmp(bstr,
cur->expect) == 0,
"expected '%ls', got '%ls'\n",
cur->expect, bstr);
4684 static const struct r8_test tests_en[] =
4686 { 0.56789,
L"0.56789" },
4687 { 5.6789e-2,
L"0.056789" },
4688 { 5.6789e-3,
L"0.0056789" },
4689 { 5.6789e-4,
L"0.00056789" },
4690 { 5.6789e-5,
L"0.000056789" },
4691 { 5.6789e-6,
L"0.0000056789" },
4692 { 5.6789e-7,
L"0.00000056789" },
4693 { 5.6789e-8,
L"0.000000056789" },
4694 { 5.6789e-9,
L"0.0000000056789" },
4695 { 5.6789e-10,
L"0.00000000056789" },
4696 { 5.6789e-11,
L"0.000000000056789" },
4697 { 5.6789e-12,
L"5.6789E-12" },
4698 { 5.6789e-13,
L"5.6789E-13" },
4699 { 5.6789e-14,
L"5.6789E-14" },
4700 { 5.6789e-15,
L"5.6789E-15" },
4701 { 5.6789e-16,
L"5.6789E-16" },
4703 { 1.0e8,
L"100000000" },
4704 { 1.0e12,
L"1000000000000" },
4705 { 1.0e14,
L"100000000000000" },
4706 { 999999999999999.0,
L"999999999999999" },
4707 { 1000000000000000.0,
L"1E+15" },
4708 { 1200000000000000.0,
L"1.2E+15" },
4709 { 1.0e15,
L"1E+15" },
4711 { 1.000e16,
L"1E+16" },
4712 { 1.234e16,
L"1.234E+16" },
4713 { 3.141592653590000,
L"3.14159265359" },
4714 { 3.141592653589793,
L"3.14159265358979" },
4715 {
M_PI,
L"3.14159265358979" },
4716 { 12.345678901234567,
L"12.3456789012346" },
4717 { 123.456789012345678,
L"123.456789012346" },
4718 { 1234.567890123456789,
L"1234.56789012346" },
4722 static const struct r8_test tests_es[] =
4726 { 0.005,
L"0,005" },
4727 { 0.0005,
L"0,0005" },
4728 { 0.00005,
L"0,00005" },
4729 { 0.000005,
L"0,000005" },
4731 { 1.0e8,
L"100000000" },
4732 { 1.0e12,
L"1000000000000" },
4733 { 1.0e14,
L"100000000000000" },
4734 { 999999999999999.0,
L"999999999999999" },
4735 { 1000000000000000.0,
L"1E+15" },
4736 { 1200000000000000.0,
L"1,2E+15" },
4737 { 1.0e15,
L"1E+15" },
4739 { 1.000e16,
L"1E+16" },
4740 { 1.234e16,
L"1,234E+16" },
4741 { 3.141592653590000,
L"3,14159265359" },
4742 { 3.141592653589793,
L"3,14159265358979" },
4743 {
M_PI,
L"3,14159265358979" },
4744 { 12.345678901234567,
L"12,3456789012346" },
4745 { 123.456789012345678,
L"123,456789012346" },
4746 { 1234.567890123456789,
L"1234,56789012346" },
4764 ok(
wcscmp(bstr,
cur->expect) == 0,
"expected '%ls', got '%ls'\n",
cur->expect, bstr);
4779 ok(
wcscmp(bstr,
cur->expect) == 0,
"expected '%ls', got '%ls'\n",
cur->expect, bstr);
4802 "Expected '%s', got '%s', hres = 0x%08lx\n",
str,
buff,
hres);
4807#define BSTR_DATE(dt,str) _BSTR_DATE(dt,str,__LINE__)
4811 BSTR_DATE(3339.34,
"2/20/1909 8:09:36 AM");
4813 BSTR_DATE(365.25,
"12/30/1900 6:00:00 AM");
4815 BSTR_DATE(1461.5,
"12/31/1903 12:00:00 PM");
4816 BSTR_DATE(-49192.24,
"4/24/1765 5:45:36 AM");
4851#define BSTR_CY(a, b, str, lcid) _BSTR_CY(a, b, str, lcid, __LINE__)
4859 BSTR_CY(0, 10000,
"1", en_us);
4860 BSTR_CY(0, 15000,
"1.5", en_us);
4861 BSTR_CY(0xffffffff, ((15000)^0xffffffff)+1,
"-1.5", en_us);
4863 BSTR_CY(0, 0xffffffff,
"429496.7295", en_us);
4865 BSTR_CY(1, 0,
"429496.7296", en_us);
4867 BSTR_CY(0x7fffffff, 0xffffffff,
"922337203685477.5807", en_us);
4868 BSTR_CY(0, 9,
"0.0009", en_us);
4902#define BSTR_DEC(scale, sign, hi, lo, str, lcid) _BSTR_DEC(scale, sign, hi, 0, lo, str, lcid, __LINE__)
4903#define BSTR_DEC64(scale, sign, hi, mid, lo, str, lcid) _BSTR_DEC(scale, sign, hi, mid, lo, str, lcid, __LINE__)
4921 BSTR_DEC(1,0x80,0,15,
"-1.5", en_us);
4924 BSTR_DEC(0,0,0,0xffffffff,
"4294967295", en_us);
4928 BSTR_DEC64(0,0,0,0xffffffff,0xffffffff,
"18446744073709551615", en_us);
4930 BSTR_DEC(0,0,1,0,
"18446744073709551616", en_us);
4932 BSTR_DEC64(0,0,0xffffffff,0xffffffff,0xffffffff,
"79228162514264337593543950335", en_us);
4934 BSTR_DEC(10,0,0,1,
"0.0000000001", en_us);
4936 BSTR_DEC64(10,0,0xffffffffUL,0xffffffff,0xffffffff,
"7922816251426433759.3543950335", en_us);
4938 BSTR_DEC64(28,0,0xffffffffUL,0xffffffff,0xffffffff,
"7.9228162514264337593543950335", en_us);
4941 BSTR_DEC(4,0,0,9,
"0.0009", en_us);
4942 BSTR_DEC(5,0,0,90,
"0.0009", en_us);
4943 BSTR_DEC(6,0,0,900,
"0.0009", en_us);
4944 BSTR_DEC(7,0,0,9000,
"0.0009", en_us);
4956#define _VARBSTRCMP(left,right,lcid,flags,result) \
4957 hres = VarBstrCmp(left,right,lcid,flags); \
4958 ok(hres == result, "VarBstrCmp: expected " #result ", got hres=%#lx\n", hres)
4959#define VARBSTRCMP(left,right,flags,result) \
4960 _VARBSTRCMP(left,right,lcid,flags,result)
4966 static const WCHAR sz[] = {
'W',
'u',
'r',
's',
'c',
'h',
't',
'\0'};
4967 static const WCHAR szempty[] = {
'\0'};
4968 static const WCHAR sz1[] = {
'a',0 };
4969 static const WCHAR sz2[] = {
'A',0 };
4970 static const WCHAR s1[] = {
'a',0 };
4971 static const WCHAR s2[] = {
'a',0,
'b' };
4972 static const char sb1[] = {1,0,1};
4973 static const char sb2[] = {1,0,2};
4974 static const char sbchr0[] = {0,0};
4975 static const char sbchr00[] = {0,0,0};
4976 BSTR bstr, bstrempty, bstr2;
5077 const OLECHAR szTest[5] = {
'T',
'e',
's',
't',
'\0' };
5084 ok (
str !=
NULL,
"Expected non-NULL\n");
5089 int align =
sizeof(
void *);
5091 ok (bstr->
dwLen == 8,
"Expected 8, got %ld\n", bstr->
dwLen);
5100 const OLECHAR szTest[5] = {
'T',
'e',
's',
't',
'\0' };
5111 ok (
str !=
NULL,
"Expected non-NULL\n");
5116 ok (bstr->
dwLen == 0,
"Expected 0, got %ld\n", bstr->
dwLen);
5117 ok (!bstr->
szString[0],
"String not empty\n");
5122 ok (
str !=
NULL,
"Expected non-NULL\n");
5127 ok (bstr->
dwLen == 8,
"Expected 8, got %ld\n", bstr->
dwLen);
5135 const OLECHAR szTest[10] = {
'T',
'e',
's',
't',
'\0' };
5136 const CHAR szTestA[6] = {
'T',
'e',
's',
't',
'\0',
'?' };
5141 if (
sizeof(
void *) == 4)
5151 ok (
str !=
NULL,
"Expected non-NULL\n");
5156 ok (bstr->
dwLen == 0,
"Expected 0, got %ld\n", bstr->
dwLen);
5157 ok (!bstr->
szString[0],
"String not empty\n");
5162 ok (
str !=
NULL,
"Expected non-NULL\n");
5167 ok (bstr->
dwLen == 4,
"Expected 4, got %ld\n", bstr->
dwLen);
5174 ok (
str !=
NULL,
"Expected non-NULL\n");
5177 const CHAR szTestTruncA[4] = {
'T',
'e',
's',
'\0' };
5180 ok (bstr->
dwLen == 3,
"Expected 3, got %ld\n", bstr->
dwLen);
5182 ok (!bstr->
szString[2],
"String not terminated\n");
5187 ok (
str !=
NULL,
"Expected non-NULL\n");
5192 ok (bstr->
dwLen == 8,
"Expected 8, got %ld\n", bstr->
dwLen);
5199 ok (
buf !=
NULL,
"Expected non-NULL\n");
5200 for (
i = 0;
i < 1024;
i++)
5205 ok (
str !=
NULL,
"Expected non-NULL\n");
5213 ok (
str !=
NULL,
"Expected non-NULL\n");
5226 const OLECHAR szTest[5] = {
'T',
'e',
's',
't',
'\0' };
5227 const OLECHAR szSmaller[2] = {
'x',
'\0' };
5228 const OLECHAR szLarger[7] = {
'L',
'a',
'r',
'g',
'e',
'r',
'\0' };
5232 ok (
str !=
NULL,
"Expected non-NULL\n");
5239 ok (bstr->
dwLen == 8,
"Expected 8, got %ld\n", bstr->
dwLen);
5243 ok (changed == 1,
"Expected 1, got %d\n", changed);
5247 ok (bstr->
dwLen == 2,
"Expected 2, got %ld\n", bstr->
dwLen);
5251 ok (changed == 1,
"Expected 1, got %d\n", changed);
5255 ok (bstr->
dwLen == 12,
"Expected 12, got %ld\n", bstr->
dwLen);
5264 const OLECHAR szTest[5] = {
'T',
'e',
's',
't',
'\0' };
5265 const OLECHAR szSmaller[2] = {
'x',
'\0' };
5266 const OLECHAR szLarger[7] = {
'L',
'a',
'r',
'g',
'e',
'r',
'\0' };
5270 ok (
str !=
NULL,
"Expected non-NULL\n");
5277 ok (bstr->
dwLen == 8,
"Expected 8, got %ld\n", bstr->
dwLen);
5281 ok (changed == 1,
"Expected 1, got %d\n", changed);
5285 ok (bstr->
dwLen == 2,
"Expected 2, got %ld\n", bstr->
dwLen);
5289 ok (changed == 1,
"Expected 1, got %d\n", changed);
5293 ok (bstr->
dwLen == 12,
"Expected 12, got %ld\n", bstr->
dwLen);
5297 ok (changed == 1,
"Expected 1, got %d\n", changed);
5304 ok (
str !=
NULL,
"Expected non-NULL\n");
5308 const int STRING_SIZE = 24;
5311 ok (changed == 1,
"Expected 1, got %d\n", changed);
5312 ok (
str !=
NULL,
"Expected non-NULL\n");
5321 ok (changed == 1,
"Expected 1, got %d\n", changed);
5322 ok (
str !=
NULL,
"Expected non-NULL\n");
5325 ok (
str == oldstr,
"Expected reuse of the old string memory\n");
5326 ok (
str[STRING_SIZE] == 0,
5327 "Expected null terminator, got 0x%04X\n",
str[STRING_SIZE]);
5348 const CHAR szTestA[6] = {
'T',
'e',
's',
't',
'\0',
'?' };
5349 const CHAR szTestTruncA[4] = {
'T',
'e',
's',
'\0' };
5356 ok (
str !=
NULL,
"Expected non-NULL\n");
5363 ok (
hres ==
S_OK,
"Failed to copy binary bstring with hres 0x%08lx\n",
hres);
5365 ok (bstr->
dwLen == 3,
"Expected 3, got %ld\n", bstr->
dwLen);
5374 static const WCHAR sz1[] = {
'a',0 };
5375 static const WCHAR sz2[] = {
'b',0 };
5376 static const WCHAR sz1sz2[] = {
'a',
'b',0 };
5377 static const WCHAR s1[] = {
'a',0 };
5378 static const WCHAR s2[] = {
'b',0 };
5379 static const WCHAR s1s2[] = {
'a',0,
'b',0 };
5380 static const char str1A[] =
"Have ";
5381 static const char str2A[] =
"A Cigar";
5421 ok(!
memcmp(
res, sz1sz2,
sizeof(sz1sz2)),
"Unexpected value\n");
5435 ok(!
memcmp(
res, s1s2,
sizeof(s1s2)),
"Unexpected value\n");
5445 ok(
len == (
sizeof(str1A)-1)/
sizeof(
WCHAR),
"got length %u\n",
len);
5447 ok(
len == (
sizeof(str2A)-1)/
sizeof(
WCHAR),
"got length %u\n",
len);
5452 len = (
sizeof(str1A) +
sizeof(str2A) - 2)/
sizeof(
WCHAR);
5454 ok(!
memcmp(
res,
"Have A Cigar",
sizeof(str1A) +
sizeof(str2A) - 1),
"got (%s)\n", (
char*)
res);
5464 ok(
len == 0,
"got length %u\n",
len);
5466 ok(
len == 0,
"got length %u\n",
len);
5496 "clear unknown: expected 0x%08lx, %d, %d, got 0x%08lx, %ld, %d\n",
5505 "clear dispatch: expected 0x%08lx, %d, %d, got 0x%08lx, %ld, %d\n",
5525 "copy unknown: expected 0x%08lx, %d, %d, got 0x%08lx, %ld, %d\n",
5535 "copy unknown: expected 0x%08lx, %d, %d, got 0x%08lx, %ld, %d\n",
5545 "copy unknown: expected 0x%08lx, %d, %d, got 0x%08lx, %ld, %d\n",
5554 "copy unknown: expected 0x%08lx, %d, %d, got 0x%08lx, %ld, %d\n",
5579 "change unk(src,dst): expected 0x%08lx,%d,%p, got 0x%08lx,%d,%p\n",
5589 "change unk(src=src): expected 0x%08lx,%d,%d,%p, got 0x%08lx,%ld,%d,%p\n",
5601 "change unk(src,dst): expected 0x%08lx,%d,%d,%p, got 0x%08lx,%ld,%d,%p\n",
5632 "change unk(badvar): vt %d expected 0x%08lx, got 0x%08lx\n",
5646 pd = &
d.IDispatch_iface;
5654 "clear dispatch: expected 0x%08lx, %d, %d, got 0x%08lx, %ld, %d\n",
5662 "clear dispatch: expected 0x%08lx, %d, %d, got 0x%08lx, %ld, %d\n",
5674 pd = &
d.IDispatch_iface;
5683 "copy dispatch: expected 0x%08lx, %d, %d, got 0x%08lx, %ld, %d\n",
5692 "copy dispatch: expected 0x%08lx, %d, %d, got 0x%08lx, %ld, %d\n",
5701 "copy dispatch: expected 0x%08lx, %d, %d, got 0x%08lx, %ld, %d\n",
5709 "copy dispatch: expected 0x%08lx, %d, %d, got 0x%08lx, %ld, %d\n",
5722 pd = &
d.IDispatch_iface;
5733 "change unk(src,dst): expected 0x%08lx,%d,%p, got 0x%08lx,%d,%p\n",
5743 "change disp(src=src): expected 0x%08lx,%d,%d,%p, got 0x%08lx,%ld,%d,%p\n",
5755 "change disp(src,dst): expected 0x%08lx,%d,%d,%p, got 0x%08lx,%ld,%d,%p\n",
5800 "change err: vt %d expected 0x%08lx, got 0x%08lx\n",
vt, hExpected,
hres);
5862 memset(&vDst, 0,
sizeof(vDst));
5866 ok(
hres == hExpected,
"change empty: vt %d expected 0x%08lx, got 0x%08lx, vt %d\n",
5870 ok(
V_VT(&vDst) ==
vt,
"change empty: vt %d, got %d\n",
vt,
V_VT(&vDst));
5934 memset(&vDst, 0,
sizeof(vDst));
5938 ok(
hres == hExpected,
"change null: vt %d expected 0x%08lx, got 0x%08lx, vt %d\n",
5943 ok(
V_VT(&vDst) ==
VT_NULL,
"change null: VT_NULL expected 0x%08lx, got 0x%08lx, vt %d\n",
5946 ok(
V_VT(&vDst) ==
VT_EMPTY,
"change null: vt %d expected 0x%08lx, got 0x%08lx, vt %d\n",
5967 "change uint: Expected %d,0x%08lx,%d got %d,0x%08lx,%ld\n",
5971#define NUM_CUST_ITEMS 16
5983 ok(!ci.cCustData && !ci.prgCustData,
"ClearCustData didn't clear fields!\n");
6007 ok(
V_VT(&
v2) ==
VT_I4 &&
V_I4(&
v2) == 123,
"VariantChangeTypeEx shouldn't change pvargDest\n");
6021 static const WCHAR testW[] = {
't',
'e',
's',
't',0};
6040 ok(
V_VT(&
v2) == 0xff,
"VariantChangeTypeEx changed dst variant\n");
6043 ok(
V_VT(&
v2) == 0xff,
"VariantChangeTypeEx changed dst variant\n");
6053 static const WCHAR testW[] = {
't',
'e',
's',
't',0};
6056 skip(
"BSTR cache is disabled, some tests will be skipped.\n");
6062 pSysFreeString(
str);
6064 pSysFreeString(
str);
6087 ok(
str == strs[0],
"str != strs[0]\n");
6091 ok(
str2 == strs[1],
"str2 != strs[1]\n");
6093 pSysFreeString(
str);
6094 pSysFreeString(
str2);
6110 ok(
res != 0,
"couldn't find resource\n" );
6128 static const WCHAR testW[] = {
't',
'e',
's',
't',0};
6129 static WCHAR teststructW[] = {
't',
'e',
's',
't',
'_',
's',
't',
'r',
'u',
'c',
't',0};
6130 static WCHAR teststruct2W[] = {
't',
'e',
's',
't',
'_',
's',
't',
'r',
'u',
'c',
't',
'2',0};
6131 static WCHAR teststruct3W[] = {
't',
'e',
's',
't',
'_',
's',
't',
'r',
'u',
'c',
't',
'3',0};
6135 struct test_struct teststruct, testcopy;
6168 hr = ITypeLib_FindName(
typelib, teststruct2W, 0, &typeinfo2, &memid, &found);
6170 ok(typeinfo2 !=
NULL,
"got %p\n", typeinfo2);
6174 hr = ITypeLib_FindName(typelib2, teststruct3W, 0, &typeinfo3, &memid, &found);
6176 ok(typeinfo3 !=
NULL,
"got %p\n", typeinfo3);
6188 ret = IRecordInfo_IsMatchingType(recinfo, recinfo2);
6192 ret = IRecordInfo_IsMatchingType(recinfo2, recinfo3);
6195 IRecordInfo_Release(recinfo3);
6196 ITypeInfo_Release(typeinfo3);
6197 IRecordInfo_Release(recinfo2);
6198 ITypeInfo_Release(typeinfo2);
6201 hr = IRecordInfo_GetSize(recinfo, &
size);
6203 ok(
size ==
sizeof(
struct test_struct),
"got size %ld\n",
size);
6204 ok(
attr->cbSizeInstance ==
sizeof(
struct test_struct),
"got instance size %ld\n",
attr->cbSizeInstance);
6210 teststruct.disp = (
void*)0xdeadbeef;
6211 teststruct.bstr = (
void*)0xdeadbeef;
6213 hr = IRecordInfo_RecordInit(recinfo, &teststruct);
6215 ok(teststruct.hr == 0,
"got 0x%08lx\n", teststruct.hr);
6216 ok(teststruct.b == 0,
"got 0x%08x\n", teststruct.b);
6217 ok(teststruct.disp ==
NULL,
"got %p\n", teststruct.disp);
6218 ok(teststruct.bstr ==
NULL,
"got %p\n", teststruct.bstr);
6224 teststruct.b = VARIANT_TRUE;
6225 teststruct.disp = &
dispatch.IDispatch_iface;
6227 memset(&testcopy, 0,
sizeof(testcopy));
6228 hr = IRecordInfo_RecordCopy(recinfo, &teststruct, &testcopy);
6230 ok(testcopy.hr ==
S_FALSE,
"got 0x%08lx\n", testcopy.hr);
6231 ok(testcopy.b == VARIANT_TRUE,
"got %d\n", testcopy.b);
6232 ok(testcopy.disp == teststruct.disp,
"got %p\n", testcopy.disp);
6234 ok(testcopy.bstr != teststruct.bstr,
"got %p\n", testcopy.bstr);
6238 hr = IRecordInfo_RecordClear(recinfo, &teststruct);
6240 ok(teststruct.bstr ==
NULL,
"got %p\n", teststruct.bstr);
6241 hr = IRecordInfo_RecordClear(recinfo, &testcopy);
6243 ok(testcopy.bstr ==
NULL,
"got %p\n", testcopy.bstr);
6246 memset(&testcopy, 0,
sizeof(testcopy));
6247 testcopy.disp = &
dispatch.IDispatch_iface;
6250 hr = IRecordInfo_RecordCopy(recinfo, &teststruct, &testcopy);
6254 IRecordInfo_Release(recinfo);
6257 ITypeLib_Release(typelib2);
ios_base &_STLP_CALL dec(ios_base &__s)
#define InterlockedIncrement
#define InterlockedDecrement
void dispatch(HANDLE hStopEvent)
void *WINAPI CoTaskMemAlloc(SIZE_T size)
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define GetEnvironmentVariableA(x, y, z)
#define MultiByteToWideChar
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
BOOL WINAPI WriteFile(_In_ HANDLE hFile, _In_reads_bytes_opt_(nNumberOfBytesToWrite) LPCVOID lpBuffer, _In_ DWORD nNumberOfBytesToWrite, _Out_opt_ LPDWORD lpNumberOfBytesWritten, _Inout_opt_ LPOVERLAPPED lpOverlapped)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
VOID WINAPI GetSystemTime(OUT LPSYSTEMTIME lpSystemTime)
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
LPVOID WINAPI LockResource(HGLOBAL handle)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
LCID WINAPI GetUserDefaultLCID(void)
LCID WINAPI GetSystemDefaultLCID(void)
static REFPROPVARIANT PROPVAR_CHANGE_FLAGS VARTYPE vt
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
void WINAPI ClearCustData(CUSTDATA *lpCust)
HRESULT WINAPI LoadTypeLibEx(LPCOLESTR szFile, REGKIND regkind, ITypeLib **pptLib)
HRESULT WINAPI VarUI1FromI4(LONG iIn, BYTE *pbOut)
HRESULT WINAPI VarUI8FromUI2(USHORT usIn, ULONG64 *pui64Out)
HRESULT WINAPI VarI4FromUI8(ULONG64 ullIn, LONG *piOut)
HRESULT WINAPI VarUI2FromCy(CY cyIn, USHORT *pusOut)
HRESULT WINAPI VarCyMul(CY cyLeft, CY cyRight, CY *pCyOut)
HRESULT WINAPI VarUI8FromCy(CY cyIn, ULONG64 *pui64Out)
HRESULT WINAPI VarCyFromR8(double dblIn, CY *pCyOut)
HRESULT WINAPI VarI2FromUI1(BYTE bIn, SHORT *psOut)
HRESULT WINAPI VarR4FromI1(signed char cIn, float *pFltOut)
HRESULT WINAPI VarUI4FromI4(LONG iIn, ULONG *pulOut)
HRESULT WINAPI VarCyFromUI1(BYTE bIn, CY *pCyOut)
HRESULT WINAPI VarR4FromUI8(ULONG64 ullIn, float *pFltOut)
HRESULT WINAPI VarI2FromBool(VARIANT_BOOL boolIn, SHORT *psOut)
HRESULT WINAPI VarDateFromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, DATE *pdateOut)
HRESULT WINAPI VarDecCmp(const DECIMAL *pDecLeft, const DECIMAL *pDecRight)
HRESULT WINAPI VarBoolFromUI1(BYTE bIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarUI1FromUI4(ULONG ulIn, BYTE *pbOut)
HRESULT WINAPI VarI1FromR8(double dblIn, signed char *pcOut)
HRESULT WINAPI VarI1FromR4(FLOAT fltIn, signed char *pcOut)
HRESULT WINAPI VarCyFromUI2(USHORT usIn, CY *pCyOut)
HRESULT WINAPI VarDecFromCy(CY cyIn, DECIMAL *pDecOut)
HRESULT WINAPI VarR8FromI2(SHORT sIn, double *pDblOut)
HRESULT WINAPI VarUI4FromUI2(USHORT usIn, ULONG *pulOut)
HRESULT WINAPI VarI1FromUI2(USHORT usIn, signed char *pcOut)
HRESULT WINAPI VarR8FromCy(CY cyIn, double *pDblOut)
HRESULT WINAPI VarI1FromUI4(ULONG ulIn, signed char *pcOut)
HRESULT WINAPI VarBstrFromR8(double dblIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarUI4FromI1(signed char cIn, ULONG *pulOut)
HRESULT WINAPI VarI4FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, LONG *piOut)
HRESULT WINAPI VarI2FromUI8(ULONG64 ullIn, SHORT *psOut)
HRESULT WINAPI VarI8FromUI1(BYTE bIn, LONG64 *pi64Out)
HRESULT WINAPI VarDecCmpR8(const DECIMAL *pDecLeft, double dblRight)
HRESULT WINAPI VarDecAdd(const DECIMAL *pDecLeft, const DECIMAL *pDecRight, DECIMAL *pDecOut)
HRESULT WINAPI VarCyAbs(CY cyIn, CY *pCyOut)
HRESULT WINAPI VarI4FromBool(VARIANT_BOOL boolIn, LONG *piOut)
HRESULT WINAPI VarUI8FromUI4(ULONG ulIn, ULONG64 *pui64Out)
HRESULT WINAPI VarUI1FromR8(double dblIn, BYTE *pbOut)
HRESULT WINAPI VarI1FromI2(SHORT sIn, signed char *pcOut)
HRESULT WINAPI VarBstrFromI4(LONG lIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarDecFromI2(SHORT sIn, DECIMAL *pDecOut)
HRESULT WINAPI VarI8FromR8(double dblIn, LONG64 *pi64Out)
HRESULT WINAPI VarR8FromI8(LONG64 llIn, double *pDblOut)
HRESULT WINAPI VarDecRound(const DECIMAL *pDecIn, int cDecimals, DECIMAL *pDecOut)
HRESULT WINAPI VarDateFromI1(signed char cIn, DATE *pdateOut)
HRESULT WINAPI VarUI2FromI1(signed char cIn, USHORT *pusOut)
HRESULT WINAPI VarR8FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, double *pDblOut)
HRESULT WINAPI VarDecFromUI1(BYTE bIn, DECIMAL *pDecOut)
HRESULT WINAPI VarUI2FromI4(LONG iIn, USHORT *pusOut)
HRESULT WINAPI VarUI1FromR4(FLOAT fltIn, BYTE *pbOut)
HRESULT WINAPI VarI1FromUI1(BYTE bIn, signed char *pcOut)
HRESULT WINAPI VarDecFromR8(double dblIn, DECIMAL *pDecOut)
HRESULT WINAPI VarI8FromUI8(ULONG64 ullIn, LONG64 *pi64Out)
HRESULT WINAPI VarI4FromI2(SHORT sIn, LONG *piOut)
HRESULT WINAPI VarDateFromUI8(ULONG64 ullIn, DATE *pdateOut)
HRESULT WINAPI VarDateFromR4(FLOAT fltIn, DATE *pdateOut)
HRESULT WINAPI VarBoolFromI8(LONG64 llIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarI1FromI4(LONG iIn, signed char *pcOut)
HRESULT WINAPI VarI4FromUI2(USHORT usIn, LONG *piOut)
HRESULT WINAPI VarI8FromDate(DATE dateIn, LONG64 *pi64Out)
HRESULT WINAPI VarI4FromDate(DATE dateIn, LONG *piOut)
HRESULT WINAPI VarI8FromCy(CY cyIn, LONG64 *pi64Out)
HRESULT WINAPI VarBstrFromCy(CY cyIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarUI8FromBool(VARIANT_BOOL boolIn, ULONG64 *pui64Out)
HRESULT WINAPI VarI1FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, signed char *pcOut)
HRESULT WINAPI VarI8FromI2(SHORT sIn, LONG64 *pi64Out)
HRESULT WINAPI VarR8FromUI2(USHORT usIn, double *pDblOut)
HRESULT WINAPI VarUI8FromR4(FLOAT fltIn, ULONG64 *pui64Out)
HRESULT WINAPI VarUI1FromCy(CY cyIn, BYTE *pbOut)
HRESULT WINAPI VarBoolFromI2(SHORT sIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarI2FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, SHORT *psOut)
HRESULT WINAPI VarDateFromUI1(BYTE bIn, DATE *pdateOut)
HRESULT WINAPI VarR8FromDate(DATE dateIn, double *pDblOut)
HRESULT WINAPI VarR4FromUI4(ULONG ulIn, float *pFltOut)
HRESULT WINAPI VarCyFromBool(VARIANT_BOOL boolIn, CY *pCyOut)
HRESULT WINAPI VarI2FromI1(signed char cIn, SHORT *psOut)
HRESULT WINAPI VarUI4FromDec(const DECIMAL *pdecIn, ULONG *pulOut)
HRESULT WINAPI VarCyFromDate(DATE dateIn, CY *pCyOut)
HRESULT WINAPI VarI4FromR8(double dblIn, LONG *piOut)
HRESULT WINAPI VarI8FromR4(FLOAT fltIn, LONG64 *pi64Out)
HRESULT WINAPI VarBoolFromI4(LONG lIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarR4FromUI1(BYTE bIn, float *pFltOut)
HRESULT WINAPI VarI4FromI1(signed char cIn, LONG *piOut)
HRESULT WINAPI VarBoolFromCy(CY cyIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarR4FromDec(const DECIMAL *pDecIn, float *pFltOut)
HRESULT WINAPI VarI2FromDate(DATE dateIn, SHORT *psOut)
HRESULT WINAPI VarUI1FromUI8(ULONG64 ullIn, BYTE *pbOut)
HRESULT WINAPI VarDecFromR4(FLOAT fltIn, DECIMAL *pDecOut)
HRESULT WINAPI VarUI4FromR8(double dblIn, ULONG *pulOut)
HRESULT WINAPI VarBstrFromDate(DATE dateIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarI2FromI8(LONG64 llIn, SHORT *psOut)
HRESULT WINAPI VarBoolFromR4(FLOAT fltIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarDecSub(const DECIMAL *pDecLeft, const DECIMAL *pDecRight, DECIMAL *pDecOut)
HRESULT WINAPI VarUI2FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, USHORT *pusOut)
HRESULT WINAPI VarR8FromUI8(ULONG64 ullIn, double *pDblOut)
HRESULT WINAPI VarUI4FromI2(SHORT sIn, ULONG *pulOut)
HRESULT WINAPI VarI2FromUI2(USHORT usIn, SHORT *psOut)
HRESULT WINAPI VarR4FromCy(CY cyIn, float *pFltOut)
HRESULT WINAPI VarUI2FromI8(LONG64 llIn, USHORT *pusOut)
HRESULT WINAPI VarCyFromDec(const DECIMAL *pdecIn, CY *pCyOut)
HRESULT WINAPI VarUI1FromI2(SHORT sIn, BYTE *pbOut)
HRESULT WINAPI VarI2FromDec(const DECIMAL *pdecIn, SHORT *psOut)
HRESULT WINAPI VarI4FromI8(LONG64 llIn, LONG *piOut)
HRESULT WINAPI VarUI8FromR8(double dblIn, ULONG64 *pui64Out)
HRESULT WINAPI VarUI8FromDate(DATE dateIn, ULONG64 *pui64Out)
HRESULT WINAPI VarI8FromI1(signed char cIn, LONG64 *pi64Out)
HRESULT WINAPI VarDecNeg(const DECIMAL *pDecIn, DECIMAL *pDecOut)
HRESULT WINAPI VarR4FromI2(SHORT sIn, float *pFltOut)
HRESULT WINAPI VarI1FromUI8(ULONG64 ullIn, signed char *pcOut)
HRESULT WINAPI VarUI8FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, ULONG64 *pui64Out)
HRESULT WINAPI VarUI4FromI8(LONG64 llIn, ULONG *pulOut)
HRESULT WINAPI VarR8FromUI4(ULONG ulIn, double *pDblOut)
HRESULT WINAPI VarUI1FromDec(const DECIMAL *pdecIn, BYTE *pbOut)
HRESULT WINAPI VarUI2FromDec(const DECIMAL *pdecIn, USHORT *pusOut)
HRESULT WINAPI VarI4FromDec(const DECIMAL *pdecIn, LONG *piOut)
HRESULT WINAPI VarUI2FromDate(DATE dateIn, USHORT *pusOut)
HRESULT WINAPI VarDecFromUI8(ULONG64 ullIn, DECIMAL *pDecOut)
HRESULT WINAPI VarDateFromCy(CY cyIn, DATE *pdateOut)
HRESULT WINAPI VarUI2FromUI1(BYTE bIn, USHORT *pusOut)
HRESULT WINAPI VarBoolFromDate(DATE dateIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarDateFromUI4(ULONG ulIn, DATE *pdateOut)
HRESULT WINAPI VarR8FromI4(LONG lIn, double *pDblOut)
HRESULT WINAPI VarDecFromUI2(USHORT usIn, DECIMAL *pDecOut)
HRESULT WINAPI VarCyFromI8(LONG64 llIn, CY *pCyOut)
HRESULT WINAPI VarDateFromBool(VARIANT_BOOL boolIn, DATE *pdateOut)
HRESULT WINAPI VarI1FromDec(const DECIMAL *pdecIn, signed char *pcOut)
HRESULT WINAPI VarI2FromR8(double dblIn, SHORT *psOut)
HRESULT WINAPI VarDecFromBool(VARIANT_BOOL bIn, DECIMAL *pDecOut)
HRESULT WINAPI VarI1FromBool(VARIANT_BOOL boolIn, signed char *pcOut)
HRESULT WINAPI VarR4FromUI2(USHORT usIn, float *pFltOut)
HRESULT WINAPI VarUI4FromUI8(ULONG64 ullIn, ULONG *pulOut)
HRESULT WINAPI VarDecAbs(const DECIMAL *pDecIn, DECIMAL *pDecOut)
HRESULT WINAPI VarUI4FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, ULONG *pulOut)
HRESULT WINAPI VarUI2FromBool(VARIANT_BOOL boolIn, USHORT *pusOut)
HRESULT WINAPI VarUI1FromUI2(USHORT usIn, BYTE *pbOut)
HRESULT WINAPI VarDecFromUI4(ULONG ulIn, DECIMAL *pDecOut)
HRESULT WINAPI VarUI1FromI8(LONG64 llIn, BYTE *pbOut)
HRESULT WINAPI VarI2FromR4(FLOAT fltIn, SHORT *psOut)
HRESULT WINAPI VarDecFromI4(LONG lIn, DECIMAL *pDecOut)
HRESULT WINAPI VarI4FromCy(CY cyIn, LONG *piOut)
HRESULT WINAPI VarBoolFromUI8(ULONG64 ullIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarUI4FromR4(FLOAT fltIn, ULONG *pulOut)
HRESULT WINAPI VarUI8FromI8(LONG64 llIn, ULONG64 *pui64Out)
HRESULT WINAPI VarUI2FromUI4(ULONG ulIn, USHORT *pusOut)
HRESULT WINAPI VarBoolFromDec(const DECIMAL *pDecIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarUI1FromDisp(IDispatch *pdispIn, LCID lcid, BYTE *pbOut)
HRESULT WINAPI VarUI1FromBool(VARIANT_BOOL boolIn, BYTE *pbOut)
HRESULT WINAPI VarCyFromR4(FLOAT fltIn, CY *pCyOut)
HRESULT WINAPI VarR4FromDate(DATE dateIn, float *pFltOut)
HRESULT WINAPI VarI4FromUI1(BYTE bIn, LONG *piOut)
HRESULT WINAPI VarCyNeg(CY cyIn, CY *pCyOut)
HRESULT WINAPI VarR4FromI4(LONG lIn, float *pFltOut)
HRESULT WINAPI VarCyFromI4(LONG lIn, CY *pCyOut)
HRESULT WINAPI VarBoolFromUI2(USHORT usIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarUI2FromUI8(ULONG64 ullIn, USHORT *pusOut)
HRESULT WINAPI VarCySub(CY cyLeft, CY cyRight, CY *pCyOut)
HRESULT WINAPI VarI2FromUI4(ULONG ulIn, SHORT *psOut)
HRESULT WINAPI VarUI4FromBool(VARIANT_BOOL boolIn, ULONG *pulOut)
HRESULT WINAPI VarDecMul(const DECIMAL *pDecLeft, const DECIMAL *pDecRight, DECIMAL *pDecOut)
HRESULT WINAPI VarI8FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, LONG64 *pi64Out)
HRESULT WINAPI VarCyFromUI8(ULONG64 ullIn, CY *pCyOut)
HRESULT WINAPI VarI8FromUI4(ULONG ulIn, LONG64 *pi64Out)
HRESULT WINAPI VarUI4FromCy(CY cyIn, ULONG *pulOut)
HRESULT WINAPI VarUI8FromUI1(BYTE bIn, ULONG64 *pui64Out)
HRESULT WINAPI VarR8FromI1(signed char cIn, double *pDblOut)
HRESULT WINAPI VarR4FromBool(VARIANT_BOOL boolIn, float *pFltOut)
HRESULT WINAPI VarI8FromDec(const DECIMAL *pdecIn, LONG64 *pi64Out)
HRESULT WINAPI VarR8FromDec(const DECIMAL *pDecIn, double *pDblOut)
HRESULT WINAPI VarUI8FromI2(SHORT sIn, ULONG64 *pui64Out)
HRESULT WINAPI VarBstrFromR4(FLOAT fltIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarUI1FromI1(signed char cIn, BYTE *pbOut)
HRESULT WINAPI VarBoolFromR8(double dblIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarUI1FromDate(DATE dateIn, BYTE *pbOut)
HRESULT WINAPI VarR8FromUI1(BYTE bIn, double *pDblOut)
HRESULT WINAPI VarDecFromDate(DATE dateIn, DECIMAL *pDecOut)
HRESULT WINAPI VarDecDiv(const DECIMAL *pDecLeft, const DECIMAL *pDecRight, DECIMAL *pDecOut)
HRESULT WINAPI VarR4FromI8(LONG64 llIn, float *pFltOut)
HRESULT WINAPI VarR8FromBool(VARIANT_BOOL boolIn, double *pDblOut)
HRESULT WINAPI VarUI8FromDec(const DECIMAL *pdecIn, ULONG64 *pui64Out)
HRESULT WINAPI VarI1FromI8(LONG64 llIn, signed char *pcOut)
HRESULT WINAPI VarCyFromUI4(ULONG ulIn, CY *pCyOut)
HRESULT WINAPI VarDateFromUI2(USHORT uiIn, DATE *pdateOut)
HRESULT WINAPI VarDateFromR8(double dblIn, DATE *pdateOut)
HRESULT WINAPI VarUI2FromI2(SHORT sIn, USHORT *pusOut)
HRESULT WINAPI VarBstrFromDec(const DECIMAL *pDecIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarI1FromDate(DATE dateIn, signed char *pcOut)
HRESULT WINAPI VarDateFromI2(short sIn, DATE *pdateOut)
HRESULT WINAPI VarI2FromCy(CY cyIn, SHORT *psOut)
HRESULT WINAPI VarI1FromCy(CY cyIn, signed char *pcOut)
HRESULT WINAPI VarUI4FromDate(DATE dateIn, ULONG *pulOut)
HRESULT WINAPI VarDateFromI4(LONG lIn, DATE *pdateOut)
HRESULT WINAPI VarUI4FromUI1(BYTE bIn, ULONG *pulOut)
HRESULT WINAPI VarI8FromBool(VARIANT_BOOL boolIn, LONG64 *pi64Out)
HRESULT WINAPI VarBstrCat(BSTR pbstrLeft, BSTR pbstrRight, BSTR *pbstrOut)
HRESULT WINAPI VarDecFromI1(signed char cIn, DECIMAL *pDecOut)
HRESULT WINAPI VarBoolFromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarI8FromUI2(USHORT usIn, LONG64 *pi64Out)
HRESULT WINAPI VarDateFromI8(LONG64 llIn, DATE *pdateOut)
HRESULT WINAPI VarUI2FromR4(FLOAT fltIn, USHORT *pusOut)
HRESULT WINAPI VarUI2FromR8(double dblIn, USHORT *pusOut)
HRESULT WINAPI VarI2FromI4(LONG iIn, SHORT *psOut)
HRESULT WINAPI VarDecFromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, DECIMAL *pDecOut)
HRESULT WINAPI VarUI1FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, BYTE *pbOut)
HRESULT WINAPI VarBoolFromI1(signed char cIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarI4FromUI4(ULONG ulIn, LONG *piOut)
HRESULT WINAPI VarUI8FromI1(signed char cIn, ULONG64 *pui64Out)
HRESULT WINAPI VarR4FromR8(double dblIn, float *pFltOut)
HRESULT WINAPI VarCyFromI2(SHORT sIn, CY *pCyOut)
HRESULT WINAPI VarDecFromI8(LONG64 llIn, DECIMAL *pDecOut)
HRESULT WINAPI VarR4FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, float *pFltOut)
HRESULT WINAPI VarR8FromR4(FLOAT fltIn, double *pDblOut)
HRESULT WINAPI VarCyAdd(CY cyLeft, CY cyRight, CY *pCyOut)
HRESULT WINAPI VarCyFromI1(signed char cIn, CY *pCyOut)
HRESULT WINAPI VarI4FromR4(FLOAT fltIn, LONG *piOut)
HRESULT WINAPI VarDateFromDec(const DECIMAL *pdecIn, DATE *pdateOut)
int align(int length, int align)
UINT WINAPI GetTempFileNameA(IN LPCSTR lpPathName, IN LPCSTR lpPrefixString, IN UINT uUnique, OUT LPSTR lpTempFileName)
GLdouble GLdouble GLdouble r
GLenum GLenum GLenum GLenum GLenum scale
GLboolean GLboolean GLboolean b
GLenum const GLfloat * params
GLenum GLuint GLenum GLsizei const GLchar * buf
GLboolean GLboolean GLboolean GLboolean a
GLfloat GLfloat GLfloat v2
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
static const WCHAR filenameW[]
static const WCHAR testW[]
static void test_VarDateFromR8(void)
static void test_VarUI1FromBool(void)
#define BSTR_DATE(dt, str)
static void test_VarI1FromStr(void)
#define OVERFLOWRANGE(func, start, end)
static void test_VarBoolChangeTypeEx(void)
static void test_VarUI8FromR8(void)
static void test_VarUI2FromDate(void)
static void test_VarDateFromI8(void)
static void test_VarUI1Copy(void)
static void test_IDispatchChangeTypeEx(void)
static void test_VarI1ChangeTypeEx(void)
static void test_VarI2FromI8(void)
static void test_VarR4FromI8(void)
static void test_VarBoolFromStr(void)
static void test_VarI1FromBool(void)
static void test_VarUI1FromDec(void)
static void test_VarR8ChangeTypeEx(void)
static void test_VarI4FromUI8(void)
static void test_VarI8FromUI4(void)
static void test_VarDateFromI4(void)
static const char * wtoascii(LPWSTR lpszIn)
static void test_VarDateFromBool(void)
static void test_VarCyAbs(void)
static void test_VarDateFromDec(void)
static void test_VarDecCmp(void)
static void test_VarI4Copy(void)
static void test_VarBstrFromCy(void)
#define BSTR_DEC(scale, sign, hi, lo, str, lcid)
static void test_VarR4FromUI2(void)
static void test_VarI2FromI1(void)
static void test_VarI2FromDate(void)
static void test_VarBoolFromUI1(void)
static void test_VarI1FromUI8(void)
#define CONVERT_DEC(func, scl, sgn, hi, lo)
static void test_NullByRef(void)
static void test_VarBoolFromI2(void)
static void test_VarI8FromUI2(void)
static void test_VarUI8ChangeTypeEx(void)
static void test_VarUI4Copy(void)
static void test_VarI2FromCy(void)
static void test_VarI1FromUI2(void)
static void test_VarI4FromUI1(void)
static void test_VarCyFromDec(void)
static void test_VarI1FromUI1(void)
static void test_VarDecFromUI8(void)
static void test_VarBoolFromI4(void)
#define NEGATIVE_TYPETEST(vt, val, fs, vtneg, valneg)
static void test_VarDecFromI2(void)
static void test_VarUI2FromR8(void)
static void test_VarR8FromDec(void)
#define MKRELDATE(day, mth)
static void test_VarI8FromCy(void)
static void test_VarBstrFromR4(void)
static void test_VarUI1FromStr(void)
static void test_VarUI8FromUI4(void)
static void test_VarUI2FromI8(void)
static void test_VarI8ChangeTypeEx(void)
static void test_VarI2FromUI4(void)
static void test_VarI4FromCy(void)
static ULONG WINAPI DummyDispatch_Release(IDispatch *iface)
static void test_VarR8FromUI4(void)
static void test_VarUI2FromI2(void)
static void test_VarBoolFromUI8(void)
static void test_VarR4ChangeTypeEx(void)
static void test_VarI8FromR8(void)
#define CONVERT_CY(func, val)
static HRESULT WINAPI DummyDispatch_GetIDsOfNames(IDispatch *iface, REFIID riid, LPOLESTR *names, UINT cnames, LCID lcid, DISPID *dispid)
static void test_VarR4FromBool(void)
static void test_VarUI4FromBool(void)
static void test_IDispatchClear(void)
static void test_VarUI8FromDec(void)
static BSTR GetBSTR(const LPINTERNAL_BSTR bstr)
static void test_VarR4FromUI1(void)
static void test_VarR8FromCy(void)
static void test_VarUI1FromR4(void)
static void test_VarDecFromBool(void)
static void test_IUnknownCopy(void)
static void test_UintChangeTypeEx(void)
#define CONVERT_STR(func, str, flags)
static void test_VarUI2FromUI8(void)
static void test_VarUI4FromDec(void)
static void test_VarDecFromR4(void)
static const char * create_test_typelib(int res_no)
static void test_VarBstrCat(void)
static void test_VarI4FromStr(void)
static void init_test_dispatch(LONG ref, VARTYPE vt, DummyDispatch *dispatch)
static void test_VarDecFromStr(void)
static void test_VarUI1FromCy(void)
static void test_VarDecFromCy(void)
static void test_VarR4FromUI8(void)
#define SETDEC(dec, scl, sgn, hi, lo)
static void test_VarBoolFromCy(void)
static void test_VarBstrFromDec(void)
static void test_VarI4FromUI2(void)
static void test_VarI2FromR8(void)
#define COPYTEST(val, vt, srcval, dstval, srcref, dstref, fs)
static void test_VarUI2FromI1(void)
static void test_VarI8FromUI1(void)
static void _BSTR_DEC(BYTE scale, BYTE sign, ULONG hi, ULONG mid, ULONGLONG lo, const char *str, LCID lcid, int line)
static void test_VarCyFix(void)
#define CONVERT_BADDEC(func)
static void test_VarI8FromR4(void)
static ULONG WINAPI DummyDispatch_AddRef(IDispatch *iface)
static void test_VarUI4FromI8(void)
static void test_VarR8FromStr(void)
static void test_VarCyFromBool(void)
static void test_VarUI1FromUI8(void)
static void test_SysAllocStringByteLen(void)
static void test_VarUI4FromI1(void)
#define INITIAL_TYPETEST(vt, val, fs)
#define BSTR_DEC64(scale, sign, hi, mid, lo, str, lcid)
#define CHECK_EXPECT(func)
static void test_VarR8FromI4(void)
static void test_VarUI2FromUI1(void)
static void test_VarCyMulI4(void)
#define SETDEC64(dec, scl, sgn, hi, mid, lo)
static void test_VarUI1FromI8(void)
static void test_VarR8FromI8(void)
#define DEFINE_EXPECT(func)
static void test_VarDecFromUI2(void)
static void test_VarR8FromBool(void)
#define CONVERTRANGE(func, start, end)
static void test_VarBoolFromI1(void)
static void test_VarCyFromI1(void)
static void test_VarCyFromUI8(void)
static void test_VarUI2FromBool(void)
static void test_VarUI1FromUI2(void)
static void test_VarI8FromDec(void)
static void test_VarUI8FromUI1(void)
static void test_VarI8FromI2(void)
static void test_VarCyFromR8(void)
#define EXPECTDEC64(scl, sgn, hi, mid, lo)
static const char *const BadDateStrings[]
static void test_VarR4FromR8(void)
static void test_VarR4FromCy(void)
static void test_VarI4FromR8(void)
static void test_VarDecFromI1(void)
static void test_VarUI4FromUI1(void)
static void test_VarR4FromI1(void)
static void test_VarCyFromI4(void)
static void test_VarCyFromUI2(void)
static void test_VarDecFromDate(void)
static void test_NullChangeTypeEx(void)
static void test_SysStringByteLen(void)
static void test_VarR4FromUI4(void)
static void test_VarUI4FromR8(void)
static void test_ChangeType_keep_dst(void)
static void test_VarR8FromUI1(void)
static void test_VarUI2FromR4(void)
static void test_VarDecFromR8(void)
static HRESULT WINAPI DummyDispatch_Invoke(IDispatch *iface, DISPID dispid, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *params, VARIANT *res, EXCEPINFO *ei, UINT *arg_err)
static void test_VarCyFromDate(void)
static void test_VarR4FromStr(void)
static void test_VarUI8Copy(void)
static void test_VarBoolFromR8(void)
static void test_VarI8FromBool(void)
static void test_VarCyFromI8(void)
static HRESULT WINAPI DummyDispatch_GetTypeInfo(IDispatch *iface, UINT tinfo, LCID lcid, ITypeInfo **ti)
static void test_SysAllocString(void)
static void test_VarCyFromR4(void)
static void test_VarDecAdd(void)
static void test_VarUI8FromI8(void)
static void test_VarUI4FromStr(void)
static void test_VarCyAdd(void)
static void test_IDispatchCopy(void)
static void test_VarUI4FromCy(void)
static void test_VarCyFromUI1(void)
static void test_VarDecSub(void)
#define EXPECTDEC(scl, sgn, hi, lo)
static void test_VarDecDiv(void)
static void test_VarUI8FromStr(void)
static void test_VarI1FromUI4(void)
#define CONVERT_CY64(func, hi, lo)
static void test_VarR4Copy(void)
static void test_VarUI4FromUI8(void)
static void test_VarDateFromUI8(void)
static void test_VarI2FromBool(void)
static void test_VarI1FromCy(void)
static void test_VarBstrCmp(void)
static void test_VarDateFromUI4(void)
static void test_VarI8FromUI8(void)
static void test_VarCyMul(void)
static void test_VarI8Copy(void)
static void test_ClearCustData(void)
static void test_VarBstrFromI4(void)
static void test_VarBoolFromR4(void)
static void test_IUnknownChangeTypeEx(void)
static void test_bstr_cache(void)
static void test_VarDateFromI2(void)
static void test_VarDecFromI4(void)
static void test_VarUI4FromI2(void)
static void test_BstrCopy(void)
static void test_VarUI1FromDisp(void)
static void test_VarR8FromDate(void)
static void test_VarDateFromUI2(void)
static void test_VarUI1FromI1(void)
static void test_VarI4ChangeTypeEx(void)
static void test_VarI4FromR4(void)
static void test_VarUI2FromUI4(void)
#define EXPECT_DBL2(new, old)
static void test_VarCyRound(void)
static void test_VarI2FromUI2(void)
static void test_VarUI2FromStr(void)
static void test_VarI2FromUI8(void)
static HRESULT WINAPI DummyDispatch_GetTypeInfoCount(IDispatch *iface, UINT *pctinfo)
static void test_VarUI4FromI4(void)
static void test_VarBoolFromUI4(void)
static void test_VarUI2FromI4(void)
static void test_VarI1FromR4(void)
static void test_VarDateFromI1(void)
static void test_VarUI8FromUI2(void)
#define BOOL_STR(flags, str)
static void test_VarUI1FromUI4(void)
static void test_VarR8FromUI2(void)
static void test_VarUI2Copy(void)
static void test_VarI4FromI1(void)
#define MATH2(func, l, r)
#define CHECK_CALLED(func)
static void test_VarI2FromDec(void)
static void test_VarUI2FromDec(void)
static void test_VarUI1FromR8(void)
static void test_VarR4FromI2(void)
static void test_VarUI8FromBool(void)
static void test_VarCyCmpR8(void)
struct tagINTERNAL_BSTR INTERNAL_BSTR
static void test_VarI2FromI4(void)
static void write_typelib(int res_no, const char *filename)
static void test_EmptyChangeTypeEx(void)
static void test_VarUI8FromI1(void)
static void test_VarUI8FromI2(void)
static void test_VarUI4FromUI2(void)
static void test_SysReAllocStringLen(void)
static void test_VarCyFromUI4(void)
static void test_VarI4FromDate(void)
static void test_VarDecMul(void)
static void test_VarR8FromUI8(void)
static void test_IUnknownClear(void)
static void test_VarUI2FromCy(void)
static LPINTERNAL_BSTR Get(const BSTR lpszString)
#define INITIAL_TYPETESTI8(vt, val)
static void test_VarCyFromI2(void)
static void test_VarR8Copy(void)
static void test_VarR4FromDec(void)
static void test_VarUI8FromR4(void)
static void _BSTR_CY(LONG a, LONG b, const char *str, LCID lcid, int line)
static void test_VarDateFromUI1(void)
struct tagINTERNAL_BSTR * LPINTERNAL_BSTR
static void test_VarI2FromUI1(void)
static void test_VarI4FromI2(void)
static void test_VarR8FromI2(void)
static HRESULT WINAPI DummyDispatch_QueryInterface(IDispatch *iface, REFIID riid, void **ppvObject)
#define CONVERT_DEC64(func, scl, sgn, hi, mid, lo)
#define CONVERT_I8(func, hi, lo)
static void test_VarI1FromDate(void)
static void test_VarDecFromUI4(void)
static void test_VarUI4FromR4(void)
static void test_VarDecNeg(void)
static void test_VarI1Copy(void)
static void test_VarI2ChangeTypeEx(void)
static void test_VarBoolFromDec(void)
static void test_VarI1FromI4(void)
static void test_VarBoolFromDate(void)
static void test_VarR8FromI1(void)
static void test_VarUI1FromDate(void)
static void test_VarCyInt(void)
static void test_VarDecRound(void)
static void test_VarDateFromStr(void)
static void test_VarI8FromStr(void)
static void test_VarUI1FromI2(void)
#define BSTR_CY(a, b, str, lcid)
static void test_SysAllocStringLen(void)
static void test_VarUI8FromDate(void)
static void test_VarDecFromUI1(void)
static void test_VarBoolFromI8(void)
static void test_VarI1FromI2(void)
static void test_VarI2Copy(void)
static const IDispatchVtbl DummyDispatch_VTable
static void test_VarI4FromDec(void)
static void test_VarDecAbs(void)
static void test_SysReAllocString(void)
static void test_VarI4FromI8(void)
static void test_SysStringLen(void)
static void test_VarI8FromDate(void)
static void test_VarUI2ChangeTypeEx(void)
static void _BSTR_DATE(DATE dt, const char *str, int line)
static void test_VarUI4FromDate(void)
static DummyDispatch * impl_from_IDispatch(IDispatch *iface)
static void test_VarCySub(void)
static void test_VarI4FromBool(void)
static void test_VarBstrFromDate(void)
static void test_VarUI1ChangeTypeEx(void)
static void test_VarI1FromI8(void)
static void test_VarCyCmp(void)
static void test_VarBstrFromR8(void)
static void test_VarBoolFromUI2(void)
static void test_VarUI4ChangeTypeEx(void)
static void test_VarDateFromCy(void)
static void test_VarI1FromDec(void)
#define VARBSTRCMP(left, right, flags, result)
static void test_VarI4FromUI4(void)
static void test_VarUI8FromCy(void)
static void test_VarCyNeg(void)
static void test_VarR8Round(void)
static void test_ErrorChangeTypeEx(void)
static void test_VarR8FromR4(void)
static void test_VarR4FromDate(void)
static void test_VarR4FromI4(void)
static void test_VarI1FromR8(void)
static void test_VarUI1FromI4(void)
static void test_VarBoolCopy(void)
static void test_VarDateChangeTypeEx(void)
static void test_VarDateFromR4(void)
static void test_VarI2FromR4(void)
static void test_VarI2FromStr(void)
static void test_VarDateCopy(void)
static void test_VarDecCmpR8(void)
#define CONVERT(func, val)
static void test_recinfo(void)
static void test_VarDecFromI8(void)
static void test_VarCyMulI8(void)
static void test_VarI8FromI1(void)
static VARIANTARG static DISPID
#define MAKELCID(lgid, srtid)
#define MAKEINTRESOURCE(i)
UINT WINAPI SysStringByteLen(BSTR str)
BSTR WINAPI SysAllocString(LPCOLESTR str)
INT WINAPI SysReAllocString(LPBSTR old, LPCOLESTR str)
UINT WINAPI SysStringLen(BSTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
int WINAPI SysReAllocStringLen(BSTR *old, const OLECHAR *str, unsigned int len)
BSTR WINAPI DECLSPEC_HOTPATCH SysAllocStringByteLen(LPCSTR str, UINT len)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
#define VARIANT_ALPHABOOL
#define VARIANT_NOUSEROVERRIDE
#define DISPATCH_PROPERTYGET
#define VARIANT_LOCALBOOL
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
HRESULT WINAPI GetRecordInfoFromTypeInfo(ITypeInfo *pTI, IRecordInfo **ppRecInfo)
#define SUBLANG_ENGLISH_US
static __inline const char * wine_dbgstr_guid(const GUID *id)
XML_HIDDEN void xmlParserErrors const char const xmlChar const xmlChar * str2
XML_HIDDEN void xmlParserErrors const char const xmlChar * str1
static const char *static const char const char DWORD void DWORD *static const char const char DWORD void DWORD *static const char DWORD DWORD void * buff
#define CONTAINING_RECORD(address, type, field)
HRESULT WINAPI VariantCopy(VARIANTARG *pvargDest, const VARIANTARG *pvargSrc)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
HRESULT WINAPI VariantChangeTypeEx(VARIANTARG *pvargDest, const VARIANTARG *pvargSrc, LCID lcid, USHORT wFlags, VARTYPE vt)
HRESULT WINAPI VariantCopyInd(VARIANT *pvargDest, const VARIANTARG *pvargSrc)
void WINAPI VariantInit(VARIANTARG *pVarg)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
WINBASEAPI _In_ DWORD _Out_ _In_ WORD wFlags
#define DISP_E_BADVARTYPE
#define DISP_E_TYPEMISMATCH
#define LOCALE_NOUSEROVERRIDE