32DEFINE_GUID(UUID_test_struct, 0x4029f190, 0xca4a, 0x4611, 0xae,0xb9,0x67,0x39,0x83,0xcb,0x96,0xdd);
39# define HAS_UINT64_TO_FLOAT
42# define HAS_UINT64_TO_FLOAT
47# define HAS_UINT64_TO_FLOAT
61#define IS_MODERN_VTYPE(vt) (vt==VT_VARIANT||vt==VT_DECIMAL|| \
62 vt==VT_I1||vt==VT_UI2||vt==VT_UI4||vt == VT_INT||vt == VT_UINT)
65#define CONVVARS(typ) HRESULT hres; CONV_TYPE out; typ in
67#define _EXPECT_NO_OUT(res) ok(hres == res, "expected " #res ", got hres=0x%08x\n", hres)
68#define EXPECT_OVERFLOW _EXPECT_NO_OUT(DISP_E_OVERFLOW)
69#define EXPECT_MISMATCH _EXPECT_NO_OUT(DISP_E_TYPEMISMATCH)
70#define EXPECT_BADVAR _EXPECT_NO_OUT(DISP_E_BADVARTYPE)
71#define EXPECT_INVALID _EXPECT_NO_OUT(E_INVALIDARG)
72#define EXPECT_LT _EXPECT_NO_OUT(VARCMP_LT)
73#define EXPECT_GT _EXPECT_NO_OUT(VARCMP_GT)
74#define EXPECT_EQ _EXPECT_NO_OUT(VARCMP_EQ)
76#define _EXPECTRES(res, x, fs) \
77 ok(hres == S_OK && out == (CONV_TYPE)(x), "expected " #x ", got " fs "; hres=0x%08x\n", out, hres)
78#define EXPECT(x) EXPECTRES(S_OK, (x))
79#define EXPECT_DBL(x) \
80 ok(hres == S_OK && fabs(out-(x))<=1e-14*(x), "expected %16.16g, got %16.16g; hres=0x%08x\n", (x), out, hres)
82#define CONVERT(func, val) in = val; hres = func(in, &out)
83#define CONVERTRANGE(func,start,end) for (i = start; i < end; i+=1) { CONVERT(func, i); EXPECT(i); };
84#define OVERFLOWRANGE(func,start,end) for (i = start; i < end; i+=1) { CONVERT(func, i); EXPECT_OVERFLOW; };
86#define CY_MULTIPLIER 10000
88#define DATE_MIN -657434
89#define DATE_MAX 2958465
91#define CONVERT_I8(func,hi,lo) in = hi; in = (in << 32) | lo; hres = func(in, &out)
93#define CONVERT_CY(func,val) in.int64 = (LONGLONG)(val * CY_MULTIPLIER); hres = func(in, &out)
95#define CONVERT_CY64(func,hi,lo) S(in).Hi = hi; S(in).Lo = lo; in.int64 *= CY_MULTIPLIER; hres = func(in, &out)
97#define SETDEC(dec, scl, sgn, hi, lo) S(U(dec)).scale = (BYTE)scl; S(U(dec)).sign = (BYTE)sgn; \
98 dec.Hi32 = (ULONG)hi; U1(dec).Lo64 = (ULONG64)lo
100#define SETDEC64(dec, scl, sgn, hi, mid, lo) S(U(dec)).scale = (BYTE)scl; S(U(dec)).sign = (BYTE)sgn; \
101 dec.Hi32 = (ULONG)hi; S1(U1(dec)).Mid32 = mid; S1(U1(dec)).Lo32 = lo;
103#define CONVERT_DEC(func,scl,sgn,hi,lo) SETDEC(in,scl,sgn,hi,lo); hres = func(&in, &out)
105#define CONVERT_DEC64(func,scl,sgn,hi,mid,lo) SETDEC64(in,scl,sgn,hi,mid,lo); hres = func(&in, &out)
107#define CONVERT_BADDEC(func) \
108 CONVERT_DEC(func,29,0,0,0); EXPECT_INVALID; \
109 CONVERT_DEC(func,0,0x1,0,0); EXPECT_INVALID; \
110 CONVERT_DEC(func,0,0x40,0,0); EXPECT_INVALID; \
111 CONVERT_DEC(func,0,0x7f,0,0); EXPECT_INVALID;
113#define CONVERT_STR(func,str,flags) \
115 if (str) MultiByteToWideChar(CP_ACP,0,str,-1,buff,ARRAY_SIZE(buff)); \
116 hres = func(str ? buff : NULL,in,flags,&out)
118#define COPYTEST(val, vt, srcval, dstval, srcref, dstref, fs) do { \
119 HRESULT hres; VARIANTARG vSrc, vDst; CONV_TYPE in = val; \
120 VariantInit(&vSrc); VariantInit(&vDst); \
121 V_VT(&vSrc) = vt; srcval = in; \
122 hres = VariantCopy(&vDst, &vSrc); \
123 ok(hres == S_OK && V_VT(&vDst) == vt && dstval == in, \
124 "copy hres 0x%X, type %d, value (" fs ") " fs "\n", hres, V_VT(&vDst), val, dstval); \
125 V_VT(&vSrc) = vt|VT_BYREF; srcref = ∈ \
126 hres = VariantCopy(&vDst, &vSrc); \
127 ok(hres == S_OK && V_VT(&vDst) == (vt|VT_BYREF) && dstref == &in, \
128 "ref hres 0x%X, type %d, ref (%p) %p\n", hres, V_VT(&vDst), &in, dstref); \
129 hres = VariantCopyInd(&vDst, &vSrc); \
130 ok(hres == S_OK && V_VT(&vDst) == vt && dstval == in, \
131 "ind hres 0x%X, type %d, value (" fs ") " fs "\n", hres, V_VT(&vDst), val, dstval); \
134#define CHANGETYPEEX(typ) hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, typ)
136#define TYPETEST(typ,res,fs) CHANGETYPEEX(typ); \
137 ok(hres == S_OK && V_VT(&vDst) == typ && (CONV_TYPE)res == in, \
138 "hres=0x%X, type=%d (should be %d(" #typ ")), value=" fs " (should be " fs ")\n", \
139 hres, V_VT(&vDst), typ, (CONV_TYPE)res, in);
140#define TYPETESTI8(typ,res) CHANGETYPEEX(typ); \
141 ok(hres == S_OK && V_VT(&vDst) == typ && (CONV_TYPE)res == in, \
142 "hres=0x%X, type=%d (should be %d(" #typ ")), value=%d (should be 1)\n", \
143 hres, V_VT(&vDst), typ, (int)res);
144#define BADVAR(typ) CHANGETYPEEX(typ); EXPECT_BADVAR
145#define MISMATCH(typ) CHANGETYPEEX(typ); EXPECT_MISMATCH
147#define INITIAL_TYPETEST(vt, val, fs) \
148 VariantInit(&vSrc); \
149 VariantInit(&vDst); \
152 TYPETEST(VT_I1, V_I1(&vDst), fs); \
153 TYPETEST(VT_UI2, V_UI2(&vDst), fs); \
154 TYPETEST(VT_UI4, V_UI4(&vDst), fs); \
155 TYPETEST(VT_INT, V_INT(&vDst), fs); \
156 TYPETEST(VT_UINT, V_UINT(&vDst), fs); \
157 TYPETEST(VT_UI1, V_UI1(&vDst), fs); \
158 TYPETEST(VT_I2, V_I2(&vDst), fs); \
159 TYPETEST(VT_I4, V_I4(&vDst), fs); \
160 TYPETEST(VT_R4, V_R4(&vDst), fs); \
161 TYPETEST(VT_R8, V_R8(&vDst), fs); \
162 TYPETEST(VT_DATE, V_DATE(&vDst), fs); \
165 TYPETEST(VT_I8, V_I8(&vDst), fs); \
166 TYPETEST(VT_UI8, V_UI8(&vDst), fs); \
168#define NEGATIVE_TYPETEST(vt, val, fs, vtneg, valneg) \
170 VariantInit(&vSrc); \
171 VariantInit(&vDst); \
174 TYPETEST(vtneg, valneg(&vDst), fs);
176#define INITIAL_TYPETESTI8(vt, val) \
177 VariantInit(&vSrc); \
178 VariantInit(&vDst); \
181 TYPETESTI8(VT_I1, V_I1(&vDst)); \
182 TYPETESTI8(VT_UI1, V_UI1(&vDst)); \
183 TYPETESTI8(VT_I2, V_I2(&vDst)); \
184 TYPETESTI8(VT_UI2, V_UI2(&vDst)); \
185 TYPETESTI8(VT_I4, V_I4(&vDst)); \
186 TYPETESTI8(VT_UI4, V_UI4(&vDst)); \
187 TYPETESTI8(VT_INT, V_INT(&vDst)); \
188 TYPETESTI8(VT_UINT, V_UINT(&vDst)); \
189 TYPETESTI8(VT_R4, V_R4(&vDst)); \
190 TYPETESTI8(VT_R8, V_R8(&vDst)); \
191 TYPETESTI8(VT_DATE, V_DATE(&vDst)); \
192 TYPETESTI8(VT_I8, V_I8(&vDst)); \
193 TYPETESTI8(VT_UI8, V_UI8(&vDst))
195#define COMMON_TYPETEST \
196 hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_BOOL); \
197 ok(hres == S_OK && V_VT(&vDst) == VT_BOOL && \
198 (V_BOOL(&vDst) == VARIANT_TRUE || (V_VT(&vSrc) == VT_BOOL && V_BOOL(&vDst) == 1)), \
199 "->VT_BOOL hres=0x%X, type=%d (should be VT_BOOL), value %d (should be VARIANT_TRUE)\n", \
200 hres, V_VT(&vDst), V_BOOL(&vDst)); \
201 hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_CY); \
202 ok(hres == S_OK && V_VT(&vDst) == VT_CY && V_CY(&vDst).int64 == CY_MULTIPLIER, \
203 "->VT_CY hres=0x%X, type=%d (should be VT_CY), value (%08x,%08x) (should be CY_MULTIPLIER)\n", \
204 hres, V_VT(&vDst), S(V_CY(&vDst)).Hi, S(V_CY(&vDst)).Lo); \
205 if (V_VT(&vSrc) != VT_DATE) \
207 hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_BSTR); \
208 ok(hres == S_OK && V_VT(&vDst) == VT_BSTR && \
209 V_BSTR(&vDst) && V_BSTR(&vDst)[0] == '1' && V_BSTR(&vDst)[1] == '\0', \
210 "->VT_BSTR hres=0x%X, type=%d (should be VT_BSTR), *bstr='%c'\n", \
211 hres, V_VT(&vDst), V_BSTR(&vDst) ? *V_BSTR(&vDst) : '?'); \
213 hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_DECIMAL); \
214 ok(hres == S_OK && V_VT(&vDst) == VT_DECIMAL && \
215 S(U(V_DECIMAL(&vDst))).sign == 0 && S(U(V_DECIMAL(&vDst))).scale == 0 && \
216 V_DECIMAL(&vDst).Hi32 == 0 && U1(V_DECIMAL(&vDst)).Lo64 == (ULONGLONG)in, \
217 "->VT_DECIMAL hres=0x%X, type=%d (should be VT_DECIMAL), sign=%d, scale=%d, hi=%u, lo=(%8x %8x),\n", \
218 hres, V_VT(&vDst), S(U(V_DECIMAL(&vDst))).sign, S(U(V_DECIMAL(&vDst))).scale, \
219 V_DECIMAL(&vDst).Hi32, S1(U1(V_DECIMAL(&vDst))).Mid32, S1(U1(V_DECIMAL(&vDst))).Lo32); \
220 hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_EMPTY); \
221 ok(hres == S_OK && V_VT(&vDst) == VT_EMPTY, "->VT_EMPTY hres=0x%X, type=%d (should be VT_EMPTY)\n", hres, V_VT(&vDst)); \
222 hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_NULL); \
223 ok(hres == S_OK && V_VT(&vDst) == VT_NULL, "->VT_NULL hres=0x%X, type=%d (should be VT_NULL)\n", hres, V_VT(&vDst)); \
224 MISMATCH(VT_DISPATCH); \
225 MISMATCH(VT_ERROR); \
226 MISMATCH(VT_UNKNOWN); \
227 MISMATCH(VT_VARIANT); \
228 MISMATCH(VT_RECORD); \
230 BADVAR(VT_HRESULT); \
231 BADVAR(VT_SAFEARRAY); \
233 BADVAR(VT_USERDEFINED); \
237 BADVAR(VT_INT_PTR); \
238 BADVAR(VT_UINT_PTR); \
239 BADVAR(VT_FILETIME); \
242 BADVAR(VT_STORAGE); \
243 BADVAR(VT_STREAMED_OBJECT); \
244 BADVAR(VT_STORED_OBJECT); \
245 BADVAR(VT_BLOB_OBJECT); \
250#define DEFINE_EXPECT(func) \
251 static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
253#define SET_EXPECT(func) \
254 do { called_ ## func = FALSE; expect_ ## func = TRUE; } while(0)
256#define CHECK_EXPECT2(func) \
258 ok(expect_ ##func, "unexpected call " #func "\n"); \
259 called_ ## func = TRUE; \
262#define CHECK_EXPECT(func) \
264 CHECK_EXPECT2(func); \
265 expect_ ## func = FALSE; \
268#define CHECK_CALLED(func) \
270 ok(called_ ## func, "expected " #func "\n"); \
271 expect_ ## func = called_ ## func = FALSE; \
318 IDispatch_AddRef(iface);
326 ok(0,
"Unexpected call\n");
332 ok(0,
"Unexpected call\n");
339 ok(0,
"Unexpected call\n");
355 ok(dispid == DISPID_VALUE,
"got dispid %d\n", dispid);
366 ok(ei ==
NULL,
"got %p\n", ei);
367 ok(arg_err ==
NULL,
"got %p\n", arg_err);
369 if (
This->bFailInvoke)
405#define CONV_TYPE signed char
407#define EXPECTRES(res, x) _EXPECTRES(res, x, "%d")
643#define CONV_TYPE BYTE
937#define CONV_TYPE SHORT
1173#define CONV_TYPE USHORT
1406#define CONV_TYPE LONG
1637#define CONV_TYPE ULONG
1639#define EXPECTRES(res, x) _EXPECTRES(res, x, "%u")
1863#define CONV_TYPE LONG64
1865#define EXPECTI8(x) \
1866 ok((hres == S_OK && out == (CONV_TYPE)(x)), \
1867 "expected " #x "(%u,%u), got (%u,%u); hres=0x%08x\n", \
1868 (ULONG)((LONG64)(x) >> 32), (ULONG)((x) & 0xffffffff), \
1869 (ULONG)(out >> 32), (ULONG)(out & 0xffffffff), hres)
1871#define EXPECTI864(x,y) \
1872 ok(hres == S_OK && (out >> 32) == (CONV_TYPE)(x) && (out & 0xffffffff) == (CONV_TYPE)(y), \
1873 "expected " #x "(%u,%u), got (%u,%u); hres=0x%08x\n", \
1874 (ULONG)(x), (ULONG)(y), \
1875 (ULONG)(out >> 32), (ULONG)(out & 0xffffffff), hres)
1882 for (
i = -128;
i < 128;
i++)
1893 for (
i = 0;
i < 256;
i++)
1904 for (
i = -32768;
i < 32768;
i++)
1915 for (
i = -0;
i < 65535;
i++)
1995 for (
i = -32768;
i < 32768;
i++)
2077 win_skip(
"I8 and UI8 data types are not available\n");
2087 "copy hres 0x%X, type %d, value (%x%08x) %x%08x\n",
2093 "ref hres 0x%X, type %d, ref (%p) %p\n",
hres,
V_VT(&vDst), &
in,
V_I8REF(&vDst));
2096 "copy hres 0x%X, type %d, value (%x%08x) %x%08x\n",
2108 win_skip(
"I8 and UI8 data types are not available\n");
2120#define CONV_TYPE ULONG64
2127 for (
i = -128;
i < 128;
i++)
2142 for (
i = 0;
i < 256;
i++)
2153 for (
i = -32768;
i < 32768;
i++)
2168 for (
i = 0;
i < 65535;
i++)
2244 for (
i = -32768;
i < 32768;
i++)
2331 win_skip(
"I8 and UI8 data types are not available\n");
2341 "copy hres 0x%X, type %d, value (%x%08x) %x%08x\n",
2350 "copy hres 0x%X, type %d, value (%x%08x) %x%08x\n",
2362 win_skip(
"I8 and UI8 data types are not available\n");
2377#define CONV_TYPE float
2379#define EXPECTRES(res, x) _EXPECTRES(res, x, "%15.15f")
2430#if defined(__i386__) && (defined(_MSC_VER) || defined(__GNUC__))
2549#ifdef HAS_UINT64_TO_FLOAT
2566#define CONV_TYPE double
2669#if defined(__i386__) && (defined(_MSC_VER) || defined(__GNUC__))
2680#if defined(__i386__) && (defined(_MSC_VER) || defined(__GNUC__))
2744#ifdef HAS_UINT64_TO_FLOAT
2756#define MATHRND(l, r) left = l; right = r; hres = VarR8Round(left, right, &out)
2793#define CONV_TYPE DATE
2946 buff[0] = '\0'; out = 0.0; \
2947 if (str) MultiByteToWideChar(CP_ACP,0,str,-1,buff,ARRAY_SIZE(buff)); \
2948 hres = VarDateFromStr(str ? buff : NULL,lcid,LOCALE_NOUSEROVERRIDE,&out)
2950#define MKRELDATE(day,mth) st.wMonth = mth; st.wDay = day; \
2951 SystemTimeToVariantTime(&st,&relative)
2956 "0.",
".0",
"-1.1",
"1.1-",
2957 "1;2;3",
"1*2*3",
"1@2@3",
"1#2#3",
"(1:2)",
"<1:2>",
"1|2|3",
2959 "0.60",
"24.00",
"0:60",
"24:00",
"1 2 am",
"1 am 2",
2960 "1.5 2",
"1 5.2",
"2 32 3",
"1 2 am 3",
2961 "1 2.3 4",
"1.2.3 4",
"1 2.3.4",
"1.2 3.4",
"1.2.3.4",
"1 2 3 4",
2962 "1 am 2 3.4",
"1 2 am 3.4",
"1.2 3 am 4",
"1.2 3 4 am",
2963 "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",
2964 "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",
2965 "1.2.3 4 am 5",
"1.2.3 4 5 am",
"1.2 3 am 4 5",
2966 "1.2 3 4 am 5",
"1.2 3 4 5 am",
"1 am 2 3.4.5",
"1 2 am 3.4.5",
2967 "1 am 2 3 4.5",
"1 2 am 3 4.5",
"1 2 3 am 4.5",
2969 "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",
2970 "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",
2971 "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",
2972 "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",
2975 "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",
2977 "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",
2980 "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",
2982 "1 2 am 3 4.5.6",
"1 2 3 am 4.5.6"
2993 OLECHAR with_ideographic_spaceW[] = {
'6',
'/',
'3',
'0',
'/',
'2',
'0',
'1',
'1',0x3000,
2994 '1',
':',
'2',
'0',
':',
'3',
'4',0 };
3111 DFS(
"6/30/2011 01:20:34 AM");
EXPECT_DBL(40724.05594907407);
3112 DFS(
"6/30/2011 01:20:34 PM");
EXPECT_DBL(40724.55594907407);
3146 static char buff[256];
3153 static const WCHAR sz25570[] = {
3154 '1',
'/',
'2',
'/',
'1',
'9',
'7',
'0',
'\0' };
3155 static const WCHAR sz25570_2[] = {
3156 '1',
'/',
'2',
'/',
'7',
'0',
'\0' };
3157 static const WCHAR sz25570Nls[] = {
3158 '1',
'/',
'2',
'/',
'1',
'9',
'7',
'0',
' ',
'1',
'2',
':',
'0',
'0',
':',
'0',
'0',
' ',
'A',
'M',
'\0' };
3166#ifdef HAS_UINT64_TO_FLOAT
3179 "hres=0x%X, type=%d (should be VT_BSTR), *bstr=%s\n",
3188 "hres=0x%X, type=%d (should be VT_BSTR), *bstr=%s\n",
3201#define EXPECTCY(x) \
3202 ok((hres == S_OK && out.int64 == (LONGLONG)(x*CY_MULTIPLIER)), \
3203 "expected " #x "*CY_MULTIPLIER, got (%8x %8x); hres=0x%08x\n", S(out).Hi, S(out).Lo, hres)
3205#define EXPECTCY64(x,y) \
3206 ok(hres == S_OK && S(out).Hi == (LONG)x && S(out).Lo == y, \
3207 "expected " #x " " #y " (%u,%u), got (%u,%u); hres=0x%08x\n", \
3208 (ULONG)(x), (ULONG)(y), S(out).Hi, S(out).Lo, hres)
3215 for (
i = -128;
i < 128;
i++)
3226 for (
i = 0;
i < 256;
i++)
3237 for (
i = -16384;
i < 16384;
i++)
3248 for (
i = 0;
i < 32768;
i++)
3309#if defined(__i386__) && (defined(_MSC_VER) || defined(__GNUC__))
3350 for (
i = -32768;
i < 32768;
i++)
3411#if defined(__i386__) && (defined(_MSC_VER) || defined(__GNUC__))
3444#define MATHVARS1 HRESULT hres; double left = 0.0; CY cyLeft, out
3445#define MATHVARS2 MATHVARS1; double right = 0.0; CY cyRight
3446#define MATH1(func, l) left = (double)l; VarCyFromR8(left, &cyLeft); hres = func(cyLeft, &out)
3447#define MATH2(func, l, r) left = (double)l; right = (double)r; \
3448 VarCyFromR8(left, &cyLeft); VarCyFromR8(right, &cyRight); \
3449 hres = func(cyLeft, cyRight, &out)
3511#define MATHMULI4(l, r) left = l; right = r; VarCyFromR8(left, &cyLeft); \
3512 hres = VarCyMulI4(cyLeft, right, &out)
3526#define MATHMULI8(l, r) left = l; right = r; VarCyFromR8(left, &cyLeft); \
3527 hres = VarCyMulI8(cyLeft, right, &out)
3541#define MATHCMP(l, r) left = l; right = r; VarCyFromR8(left, &cyLeft); VarCyFromR8(right, &cyRight); \
3542 hres = VarCyCmp(cyLeft, cyRight)
3563#define MATHCMPR8(l, r) left = l; right = r; VarCyFromR8(left, &cyLeft); \
3564 hres = VarCyCmpR8(cyLeft, right);
3587#define MATHRND(l, r) left = l; right = r; VarCyFromR8(left, &cyLeft); \
3588 hres = VarCyRound(cyLeft, right, &out)
3619#define MATHFIX(l) left = l; VarCyFromR8(left, &cyLeft); \
3620 hres = VarCyFix(cyLeft, &out)
3644#define MATHINT(l) left = l; VarCyFromR8(left, &cyLeft); \
3645 hres = VarCyInt(cyLeft, &out)
3674#define CONV_TYPE DECIMAL
3676#define EXPECTDEC(scl, sgn, hi, lo) ok(hres == S_OK && \
3677 S(U(out)).scale == (BYTE)(scl) && S(U(out)).sign == (BYTE)(sgn) && \
3678 out.Hi32 == (ULONG)(hi) && U1(out).Lo64 == (ULONG64)(lo), \
3679 "expected (%d,%d,%d,(%x %x)), got (%d,%d,%d,(%x %x)) hres 0x%08x\n", \
3680 scl, sgn, hi, (LONG)((LONG64)(lo) >> 32), (LONG)((lo) & 0xffffffff), S(U(out)).scale, \
3681 S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres)
3683#define EXPECTDEC64(scl, sgn, hi, mid, lo) ok(hres == S_OK && \
3684 S(U(out)).scale == (BYTE)(scl) && S(U(out)).sign == (BYTE)(sgn) && \
3685 out.Hi32 == (ULONG)(hi) && S1(U1(out)).Mid32 == (ULONG)(mid) && \
3686 S1(U1(out)).Lo32 == (ULONG)(lo), \
3687 "expected (%d,%d,%d,(%x %x)), got (%d,%d,%d,(%x %x)) hres 0x%08x\n", \
3688 scl, sgn, hi, (LONG)(mid), (LONG)(lo), S(U(out)).scale, \
3689 S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres)
3692#define EXPECTDECZERO() ok(hres == S_OK && S(U(out)).scale == 0 && \
3693 (S(U(out)).sign == 0 || S(U(out)).sign == 0x80) && out.Hi32 == 0 && U1(out).Lo64 == 0, \
3694 "expected zero, got (%d,%d,%d,(%x %x)) hres 0x%08x\n", \
3695 S(U(out)).scale, S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres)
3697#define EXPECTDECI if (i < 0) EXPECTDEC(0, 0x80, 0, -i); else EXPECTDEC(0, 0, 0, i)
3704 for (
i = -128;
i < 128;
i++)
3715 for (
i = -32768;
i < 32768;
i++)
3726 for (
i = -32768;
i < 32768;
i++)
3737 for (
i = -32768;
i < 32768;
i++)
3748 for (
i = 0;
i < 256;
i++)
3759 for (
i = 0;
i < 65536;
i++)
3770 for (
i = 0;
i < 65536;
i++)
3781 for (
i = 0;
i < 65536;
i++)
3793 for (
i = -32768;
i < 0;
i++)
3871#define MATHVARS1 HRESULT hres; DECIMAL l, out
3873#define MATHVARS2 MATHVARS1; DECIMAL r
3875#define MATH1(func) hres = func(&l, &out)
3877#define MATH2(func) hres = func(&l, &r, &out)
3879#define MATH3(func) hres = func(&l, r)
3914 SETDEC(
l,0,0,0,0);
SETDEC(
r,0,0,0,0);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,0);
3915 SETDEC(
l,0,0,0,0);
SETDEC(
r,0,0x80,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0x80,0,1);
3916 SETDEC(
l,0,0,0,0);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,1);
3918 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0,0,0);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,1);
3919 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,2);
3921 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0x80,0,2);
MATH2(
VarDecAdd);
EXPECTDEC(0,0x80,0,1);
3923 SETDEC(
l,0,0x80,0,0);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,1);
3925 SETDEC(
l,0,0x80,0,1);
SETDEC(
r,0,0,0,2);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,1);
3926 SETDEC(
l,0,0x80,0,1);
SETDEC(
r,0,0x80,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0x80,0,2);
3927 SETDEC(
l,0,0x80,0,2);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0x80,0,1);
3929 SETDEC(
l,0,0,0,0xffffffff);
SETDEC(
r,0,0x80,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,0xfffffffe);
3930 SETDEC(
l,0,0,0,0xffffffff);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,(
ULONG64)1 << 32);
3931 SETDEC(
l,0,0,0,0xffffffff);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0,(
ULONG64)1 << 32);
3933 SETDEC64(
l,0,0,0,0xffffffff,0);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC64(0,0,0,0xffffffff,1);
3937 SETDEC64(
l,0,0,0,0xffffffff,0xffffffff);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,1,0);
3941 SETDEC(
l,0,0,0xffffffff,0);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(0,0,0xffffffff,1);
3943 EXPECTDEC64(0,0,0xfffffffe,0xffffffff,0xffffffff);
3946 EXPECTDEC64(0,0,0xffffffff,0xffffffff,0xfffffffe);
3954 SETDEC64(
l,0,0,0xe22ea493,0xb30310a7,0x70000000);
SETDEC64(
r,0,0,0xe22ea493,0xb30310a7,0x70000000);
MATH2(
VarDecAdd);
3958 SETDEC64(
l,1,0,0xe22ea493,0xb30310a7,0x70000000);
SETDEC64(
r,1,0,0xe22ea493,0xb30310a7,0x70000000);
MATH2(
VarDecAdd);
3961 SETDEC(
l,3,128,0,123456);
SETDEC64(
r,0,0,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF);
3979 SETDEC(
l,3,128,0,123456);
SETDEC64(
r,0,0,0x19999999,0x99999999,0x99999999);
3982 SETDEC(
l,3,128,0,123567);
SETDEC64(
r,0,0,0x19999999,0x99999999,0x99999999);
3986 SETDEC(
l,2,0,0,0);
SETDEC(
r,0,0,0,0);
MATH2(
VarDecAdd);
EXPECTDEC(2,0,0,0);
3987 SETDEC(
l,2,0,0,100);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecAdd);
EXPECTDEC(2,0,0,200);
3995 SETDEC(
l,0,0,0,0);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecSub);
EXPECTDEC(0,0x80,0,1);
3997 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0x80,0,1);
MATH2(
VarDecSub);
EXPECTDEC(0,0,0,2);
4004 SETDEC(
l,0,0,0,0);
SETDEC(
r,0,0,0,0);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0,0);
4005 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0,0,0);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0,0);
4006 SETDEC(
l,0,0,0,0);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0,0);
4007 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0,1);
4008 SETDEC(
l,0,0,0,45000);
SETDEC(
r,0,0,0,2);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0,90000);
4009 SETDEC(
l,0,0,0,2);
SETDEC(
r,0,0,0,45000);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0,90000);
4011 SETDEC(
l,0,0x80,0,2);
SETDEC(
r,0,0,0,2);
MATH2(
VarDecMul);
EXPECTDEC(0,0x80,0,4);
4012 SETDEC(
l,0,0,0,2);
SETDEC(
r,0,0x80,0,2);
MATH2(
VarDecMul);
EXPECTDEC(0,0x80,0,4);
4013 SETDEC(
l,0,0x80,0,2);
SETDEC(
r,0,0x80,0,2);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0,4);
4015 SETDEC(
l,4,0,0,2);
SETDEC(
r,0,0,0,2);
MATH2(
VarDecMul);
EXPECTDEC(4,0,0,4);
4016 SETDEC(
l,0,0,0,2);
SETDEC(
r,3,0,0,2);
MATH2(
VarDecMul);
EXPECTDEC(3,0,0,4);
4017 SETDEC(
l,4,0,0,2);
SETDEC(
r,3,0,0,2);
MATH2(
VarDecMul);
EXPECTDEC(7,0,0,4);
4021 SETDEC(
l,4,0,0,5);
SETDEC(
r,3,0,0,2);
MATH2(
VarDecMul);
EXPECTDEC(7,0,0,10);
4023 SETDEC64(
l,0,0,0,0xFFFFFFFF,0xFFFFFFFF);
SETDEC(
r,0,0,0,2);
MATH2(
VarDecMul);
EXPECTDEC64(0,0,1,0xFFFFFFFF,0xFFFFFFFE);
4024 SETDEC(
l,0,0,0,2);
SETDEC64(
r,0,0,0,0xFFFFFFFF,0xFFFFFFFF);
MATH2(
VarDecMul);
EXPECTDEC64(0,0,1,0xFFFFFFFF,0xFFFFFFFE);
4025 SETDEC(
l,0,0,1,1);
SETDEC(
r,0,0,0,0x80000000);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0x80000000,0x80000000);
4026 SETDEC(
l,0,0,0,0x80000000);
SETDEC(
r,0,0,1,1);
MATH2(
VarDecMul);
EXPECTDEC(0,0,0x80000000,0x80000000);
4029 SETDEC64(
l,0,0,0,0xFFFFFFFF,0xFFFFFFFF);
SETDEC(
r,0,0,0,2000000000);
MATH2(
VarDecMul);
EXPECTDEC64(0,0,1999999999,0xFFFFFFFF,0x88CA6C00);
4031 SETDEC64(
l,0,0,0,0xFFFFFFFF,0xFFFFFFFF);
SETDEC64(
r,0,0,0,4,0xA817C800);
MATH2(
VarDecMul);
4035 SETDEC64(
l,1,0,0,0xFFFFFFFF,0xFFFFFFFF);
SETDEC64(
r,0,0,0,4,0xA817C800);
MATH2(
VarDecMul);
EXPECTDEC64(0,0,1999999999,0xFFFFFFFF,0x88CA6C00);
4038 SETDEC64(
l,0,0,1,0xFFFFFFFF,0xFFFFFFFE);
SETDEC(
r,0,0,0,1000000000);
MATH2(
VarDecMul);
EXPECTDEC64(0,0,1999999999,0xFFFFFFFF,0x88CA6C00);
4040 SETDEC64(
l,0,0,1,0xFFFFFFFF,0xFFFFFFFE);
SETDEC64(
r,0,0,0,2,0x540BE400);
MATH2(
VarDecMul);
4044 SETDEC64(
l,1,0,1,0xFFFFFFFF,0xFFFFFFFE);
SETDEC64(
r,0,0,0,2,0x540BE400);
MATH2(
VarDecMul);
EXPECTDEC64(0,0,1999999999,0xFFFFFFFF,0x88CA6C00);
4047 SETDEC64(
l,2,0,0,0xFFFFFFFF,0xFFFFFFFF);
SETDEC64(
r,0,0,0,9,0x502F9001);
MATH2(
VarDecMul);
EXPECTDEC64(1,0,0xee6b2800,0x19999998,0xab2e719a);
4055 SETDEC(
l,0,0,0,0);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecDiv);
EXPECTDEC(0,0,0,0);
4056 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecDiv);
EXPECTDEC(0,0,0,1);
4057 SETDEC(
l,1,0,0,1);
SETDEC(
r,0,0,0,1);
MATH2(
VarDecDiv);
EXPECTDEC(1,0,0,1);
4060 SETDEC(
l,0,0,0,45);
SETDEC(
r,0,0,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(0,0,0,5);
4061 SETDEC(
l,1,0,0,45);
SETDEC(
r,0,0,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(1,0,0,5);
4062 SETDEC(
l,0,0,0,45);
SETDEC(
r,1,0,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(0,0,0,50);
4063 SETDEC(
l,1,0,0,45);
SETDEC(
r,2,0,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(0,0,0,50);
4068 SETDEC(
l,1,0,0,45);
SETDEC(
r,1,0,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(0,0,0,5);
4074 SETDEC(
l,0,0,0,1);
SETDEC(
r,0,0,0,3);
MATH2(
VarDecDiv);
EXPECTDEC64(28,0,180700362,0x14b700cb,0x05555555);
4075 SETDEC(
l,1,0,0,1);
SETDEC(
r,0,0,0,3);
MATH2(
VarDecDiv);
EXPECTDEC64(28,0,18070036,0x35458014,0x4d555555);
4076 SETDEC(
l,0,0,0,1);
SETDEC(
r,1,0,0,3);
MATH2(
VarDecDiv);
EXPECTDEC64(28,0,1807003620,0xcf2607ee,0x35555555);
4077 SETDEC(
l,1,0,0,1);
SETDEC(
r,2,0,0,3);
MATH2(
VarDecDiv);
EXPECTDEC64(28,0,1807003620,0xcf2607ee,0x35555555);
4078 SETDEC(
l,1,0,0,1);
SETDEC(
r,1,0,0,3);
MATH2(
VarDecDiv);
EXPECTDEC64(28,0,180700362,0x14b700cb,0x05555555);
4079 SETDEC(
l,2,0,0,10);
SETDEC(
r,1,0,0,3);
MATH2(
VarDecDiv);
EXPECTDEC64(28,0,180700362,0x14b700cb,0x05555555);
4082 SETDEC(
l,0,0,0,2);
SETDEC(
r,0,0,0,3);
MATH2(
VarDecDiv);
EXPECTDEC64(28,0,361400724,0x296e0196,0x0aaaaaab);
4085 SETDEC(
l,0,0x80,0,45);
SETDEC(
r,0,0,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(0,0x80,0,5);
4086 SETDEC(
l,0,0,0,45);
SETDEC(
r,0,0x80,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(0,0x80,0,5);
4087 SETDEC(
l,0,0x80,0,45);
SETDEC(
r,0,0x80,0,9);
MATH2(
VarDecDiv);
EXPECTDEC(0,0,0,5);
4232#define CLEAR(x) memset(&(x), 0xBB, sizeof(x))
4255 CLEAR(
out);
SETDEC64(
l, 0, 0, 0xffffffff, 0xffffffff, 0xffffffff);
hres =
VarDecRound(&
l, 0, &
out);
EXPECTDEC64(0, 0, 0xffffffff, 0xffffffff, 0xffffffff);
4256 CLEAR(
out);
SETDEC64(
l, 28, 0, 0xffffffff, 0xffffffff, 0xffffffff);
hres =
VarDecRound(&
l, 0, &
out);
EXPECTDEC64(0, 0, 0, 0, 8);
4257 CLEAR(
out);
SETDEC64(
l, 0, DECIMAL_NEG, 0xffffffff, 0xffffffff, 0xffffffff);
hres =
VarDecRound(&
l, 0, &
out);
EXPECTDEC64(0, DECIMAL_NEG, 0xffffffff, 0xffffffff, 0xffffffff);
4258 CLEAR(
out);
SETDEC64(
l, 28, DECIMAL_NEG, 0xffffffff, 0xffffffff, 0xffffffff);
hres =
VarDecRound(&
l, 0, &
out);
EXPECTDEC64(0, DECIMAL_NEG, 0, 0, 8);
4268#define CONV_TYPE VARIANT_BOOL
4270#define EXPECTRES(res, x) _EXPECTRES(res, x, "%d")
4272#define CONVERTRANGE(func,start,end) for (i = start; i < end; i++) { \
4273 CONVERT(func, i); if (i) { EXPECT(VARIANT_TRUE); } else { EXPECT(VARIANT_FALSE); } }
4494#define BOOL_STR(flags, str) hres = VariantChangeTypeEx(&vDst, &vSrc, lcid, flags, VT_BSTR); \
4495 ok(hres == S_OK && V_VT(&vDst) == VT_BSTR && \
4496 V_BSTR(&vDst) && !memcmp(V_BSTR(&vDst), str, sizeof(str)), \
4497 "hres=0x%X, type=%d (should be VT_BSTR), *bstr='%c'\n", \
4498 hres, V_VT(&vDst), V_BSTR(&vDst) ? *V_BSTR(&vDst) : '?'); \
4503 static const WCHAR szTrue[] = {
'T',
'r',
'u',
'e',
'\0' };
4504 static const WCHAR szFalse[] = {
'F',
'a',
'l',
's',
'e',
'\0' };
4505 static const WCHAR szFaux[] = {
'F',
'a',
'u',
'x',
'\0' };
4545 static const WCHAR int_min[] = {
'-',
'2',
'1',
'4',
'7',
'4',
'8',
'3',
'6',
'4',
'8',
'\0' };
4546 static const WCHAR minus_42[] = {
'-',
'4',
'2',
'\0' };
4555 value = (-2147483647 - 1);
4557 value = -2147483648;
4563 ok(
memcmp(bstr, int_min,
sizeof(int_min)) == 0,
"string different\n");
4572 ok(
memcmp(bstr, minus_42,
sizeof(minus_42)) == 0,
"string different\n");
4579 static const WCHAR szNative[] = {
'6',
'5',
'4',
'3',
'2',
'2',
'.',
'3',
'\0' };
4580 static const WCHAR szZero[] = {
'0',
'\0'};
4581 static const WCHAR szOneHalf_English[] = {
'0',
'.',
'5',
'\0' };
4582 static const WCHAR szOneHalf_Spanish[] = {
'0',
',',
'5',
'\0' };
4602 ok(
memcmp(bstr, szNative,
sizeof(szNative)) == 0,
"string different\n");
4613 ok(
memcmp(bstr + 1, szZero,
sizeof(szZero)) == 0,
"negative zero (got %s)\n",
wtoascii(bstr));
4615 ok(
memcmp(bstr, szZero,
sizeof(szZero)) == 0,
"negative zero (got %s)\n",
wtoascii(bstr));
4625 ok(
memcmp(bstr, szOneHalf_English,
sizeof(szOneHalf_English)) == 0,
"English locale failed (got %s)\n",
wtoascii(bstr));
4633 ok(
memcmp(bstr, szOneHalf_Spanish,
sizeof(szOneHalf_Spanish)) == 0,
"Spanish locale failed (got %s)\n",
wtoascii(bstr));
4654 "Expected '%s', got '%s', hres = 0x%08x\n",
str,
buff,
hres);
4659#define BSTR_DATE(dt,str) _BSTR_DATE(dt,str,__LINE__)
4663 BSTR_DATE(3339.34,
"2/20/1909 8:09:36 AM");
4665 BSTR_DATE(365.25,
"12/30/1900 6:00:00 AM");
4667 BSTR_DATE(1461.5,
"12/31/1903 12:00:00 PM");
4668 BSTR_DATE(-49192.24,
"4/24/1765 5:45:36 AM");
4703#define BSTR_CY(a, b, str, lcid) _BSTR_CY(a, b, str, lcid, __LINE__)
4711 BSTR_CY(0, 10000,
"1", en_us);
4712 BSTR_CY(0, 15000,
"1.5", en_us);
4713 BSTR_CY(0xffffffff, ((15000)^0xffffffff)+1,
"-1.5", en_us);
4715 BSTR_CY(0, 0xffffffff,
"429496.7295", en_us);
4717 BSTR_CY(1, 0,
"429496.7296", en_us);
4719 BSTR_CY(0x7fffffff, 0xffffffff,
"922337203685477.5807", en_us);
4720 BSTR_CY(0, 9,
"0.0009", en_us);
4754#define BSTR_DEC(scale, sign, hi, lo, str, lcid) _BSTR_DEC(scale, sign, hi, 0, lo, str, lcid, __LINE__)
4755#define BSTR_DEC64(scale, sign, hi, mid, lo, str, lcid) _BSTR_DEC(scale, sign, hi, mid, lo, str, lcid, __LINE__)
4773 BSTR_DEC(1,0x80,0,15,
"-1.5", en_us);
4776 BSTR_DEC(0,0,0,0xffffffff,
"4294967295", en_us);
4780 BSTR_DEC64(0,0,0,0xffffffff,0xffffffff,
"18446744073709551615", en_us);
4782 BSTR_DEC(0,0,1,0,
"18446744073709551616", en_us);
4784 BSTR_DEC64(0,0,0xffffffff,0xffffffff,0xffffffff,
"79228162514264337593543950335", en_us);
4786 BSTR_DEC(10,0,0,1,
"0.0000000001", en_us);
4788 BSTR_DEC64(10,0,0xffffffffUL,0xffffffff,0xffffffff,
"7922816251426433759.3543950335", en_us);
4790 BSTR_DEC64(28,0,0xffffffffUL,0xffffffff,0xffffffff,
"7.9228162514264337593543950335", en_us);
4793 BSTR_DEC(4,0,0,9,
"0.0009", en_us);
4794 BSTR_DEC(5,0,0,90,
"0.0009", en_us);
4795 BSTR_DEC(6,0,0,900,
"0.0009", en_us);
4796 BSTR_DEC(7,0,0,9000,
"0.0009", en_us);
4808#define _VARBSTRCMP(left,right,lcid,flags,result) \
4809 hres = VarBstrCmp(left,right,lcid,flags); \
4810 ok(hres == result, "VarBstrCmp: expected " #result ", got hres=0x%x\n", hres)
4811#define VARBSTRCMP(left,right,flags,result) \
4812 _VARBSTRCMP(left,right,lcid,flags,result)
4818 static const WCHAR sz[] = {
'W',
'u',
'r',
's',
'c',
'h',
't',
'\0'};
4819 static const WCHAR szempty[] = {
'\0'};
4820 static const WCHAR sz1[] = {
'a',0 };
4821 static const WCHAR sz2[] = {
'A',0 };
4822 static const WCHAR s1[] = {
'a',0 };
4823 static const WCHAR s2[] = {
'a',0,
'b' };
4824 static const char sb1[] = {1,0,1};
4825 static const char sb2[] = {1,0,2};
4826 static const char sbchr0[] = {0,0};
4827 static const char sbchr00[] = {0,0,0};
4828 BSTR bstr, bstrempty, bstr2;
4929 const OLECHAR szTest[5] = {
'T',
'e',
's',
't',
'\0' };
4936 ok (
str !=
NULL,
"Expected non-NULL\n");
4941 int align =
sizeof(
void *);
4943 ok (bstr->
dwLen == 8,
"Expected 8, got %d\n", bstr->
dwLen);
4952 const OLECHAR szTest[5] = {
'T',
'e',
's',
't',
'\0' };
4963 ok (
str !=
NULL,
"Expected non-NULL\n");
4968 ok (bstr->
dwLen == 0,
"Expected 0, got %d\n", bstr->
dwLen);
4969 ok (!bstr->
szString[0],
"String not empty\n");
4974 ok (
str !=
NULL,
"Expected non-NULL\n");
4979 ok (bstr->
dwLen == 8,
"Expected 8, got %d\n", bstr->
dwLen);
4987 const OLECHAR szTest[10] = {
'T',
'e',
's',
't',
'\0' };
4988 const CHAR szTestA[6] = {
'T',
'e',
's',
't',
'\0',
'?' };
4993 if (
sizeof(
void *) == 4)
5003 ok (
str !=
NULL,
"Expected non-NULL\n");
5008 ok (bstr->
dwLen == 0,
"Expected 0, got %d\n", bstr->
dwLen);
5009 ok (!bstr->
szString[0],
"String not empty\n");
5014 ok (
str !=
NULL,
"Expected non-NULL\n");
5019 ok (bstr->
dwLen == 4,
"Expected 4, got %d\n", bstr->
dwLen);
5026 ok (
str !=
NULL,
"Expected non-NULL\n");
5029 const CHAR szTestTruncA[4] = {
'T',
'e',
's',
'\0' };
5032 ok (bstr->
dwLen == 3,
"Expected 3, got %d\n", bstr->
dwLen);
5034 ok (!bstr->
szString[2],
"String not terminated\n");
5039 ok (
str !=
NULL,
"Expected non-NULL\n");
5044 ok (bstr->
dwLen == 8,
"Expected 8, got %d\n", bstr->
dwLen);
5051 ok (
buf !=
NULL,
"Expected non-NULL\n");
5052 for (
i = 0;
i < 1024;
i++)
5057 ok (
str !=
NULL,
"Expected non-NULL\n");
5065 ok (
str !=
NULL,
"Expected non-NULL\n");
5078 const OLECHAR szTest[5] = {
'T',
'e',
's',
't',
'\0' };
5079 const OLECHAR szSmaller[2] = {
'x',
'\0' };
5080 const OLECHAR szLarger[7] = {
'L',
'a',
'r',
'g',
'e',
'r',
'\0' };
5084 ok (
str !=
NULL,
"Expected non-NULL\n");
5091 ok (bstr->
dwLen == 8,
"Expected 8, got %d\n", bstr->
dwLen);
5095 ok (changed == 1,
"Expected 1, got %d\n", changed);
5099 ok (bstr->
dwLen == 2,
"Expected 2, got %d\n", bstr->
dwLen);
5103 ok (changed == 1,
"Expected 1, got %d\n", changed);
5107 ok (bstr->
dwLen == 12,
"Expected 12, got %d\n", bstr->
dwLen);
5116 const OLECHAR szTest[5] = {
'T',
'e',
's',
't',
'\0' };
5117 const OLECHAR szSmaller[2] = {
'x',
'\0' };
5118 const OLECHAR szLarger[7] = {
'L',
'a',
'r',
'g',
'e',
'r',
'\0' };
5122 ok (
str !=
NULL,
"Expected non-NULL\n");
5129 ok (bstr->
dwLen == 8,
"Expected 8, got %d\n", bstr->
dwLen);
5133 ok (changed == 1,
"Expected 1, got %d\n", changed);
5137 ok (bstr->
dwLen == 2,
"Expected 2, got %d\n", bstr->
dwLen);
5141 ok (changed == 1,
"Expected 1, got %d\n", changed);
5145 ok (bstr->
dwLen == 12,
"Expected 12, got %d\n", bstr->
dwLen);
5149 ok (changed == 1,
"Expected 1, got %d\n", changed);
5156 ok (
str !=
NULL,
"Expected non-NULL\n");
5160 const int STRING_SIZE = 24;
5163 ok (changed == 1,
"Expected 1, got %d\n", changed);
5164 ok (
str !=
NULL,
"Expected non-NULL\n");
5173 ok (changed == 1,
"Expected 1, got %d\n", changed);
5174 ok (
str !=
NULL,
"Expected non-NULL\n");
5177 ok (
str == oldstr,
"Expected reuse of the old string memory\n");
5178 ok (
str[STRING_SIZE] == 0,
5179 "Expected null terminator, got 0x%04X\n",
str[STRING_SIZE]);
5200 const CHAR szTestA[6] = {
'T',
'e',
's',
't',
'\0',
'?' };
5201 const CHAR szTestTruncA[4] = {
'T',
'e',
's',
'\0' };
5208 ok (
str !=
NULL,
"Expected non-NULL\n");
5215 ok (
hres ==
S_OK,
"Failed to copy binary bstring with hres 0x%08x\n",
hres);
5217 ok (bstr->
dwLen == 3,
"Expected 3, got %d\n", bstr->
dwLen);
5226 static const WCHAR sz1[] = {
'a',0 };
5227 static const WCHAR sz2[] = {
'b',0 };
5228 static const WCHAR sz1sz2[] = {
'a',
'b',0 };
5229 static const WCHAR s1[] = {
'a',0 };
5230 static const WCHAR s2[] = {
'b',0 };
5231 static const WCHAR s1s2[] = {
'a',0,
'b',0 };
5232 static const char str1A[] =
"Have ";
5233 static const char str2A[] =
"A Cigar";
5273 ok(!
memcmp(
res, sz1sz2,
sizeof(sz1sz2)),
"Unexpected value\n");
5287 ok(!
memcmp(
res, s1s2,
sizeof(s1s2)),
"Unexpected value\n");
5297 ok(
len == (
sizeof(str1A)-1)/
sizeof(
WCHAR),
"got length %u\n",
len);
5299 ok(
len == (
sizeof(str2A)-1)/
sizeof(
WCHAR),
"got length %u\n",
len);
5304 len = (
sizeof(str1A) +
sizeof(str2A) - 2)/
sizeof(
WCHAR);
5306 ok(!
memcmp(
res,
"Have A Cigar",
sizeof(str1A) +
sizeof(str2A) - 1),
"got (%s)\n", (
char*)
res);
5316 ok(
len == 0,
"got length %u\n",
len);
5318 ok(
len == 0,
"got length %u\n",
len);
5348 "clear unknown: expected 0x%08x, %d, %d, got 0x%08x, %d, %d\n",
5357 "clear dispatch: expected 0x%08x, %d, %d, got 0x%08x, %d, %d\n",
5377 "copy unknown: expected 0x%08x, %d, %d, got 0x%08x, %d, %d\n",
5387 "copy unknown: expected 0x%08x, %d, %d, got 0x%08x, %d, %d\n",
5397 "copy unknown: expected 0x%08x, %d, %d, got 0x%08x, %d, %d\n",
5406 "copy unknown: expected 0x%08x, %d, %d, got 0x%08x, %d, %d\n",
5431 "change unk(src,dst): expected 0x%08x,%d,%p, got 0x%08x,%d,%p\n",
5441 "change unk(src=src): expected 0x%08x,%d,%d,%p, got 0x%08x,%d,%d,%p\n",
5453 "change unk(src,dst): expected 0x%08x,%d,%d,%p, got 0x%08x,%d,%d,%p\n",
5484 "change unk(badvar): vt %d expected 0x%08x, got 0x%08x\n",
5498 pd = &
d.IDispatch_iface;
5506 "clear dispatch: expected 0x%08x, %d, %d, got 0x%08x, %d, %d\n",
5514 "clear dispatch: expected 0x%08x, %d, %d, got 0x%08x, %d, %d\n",
5526 pd = &
d.IDispatch_iface;
5535 "copy dispatch: expected 0x%08x, %d, %d, got 0x%08x, %d, %d\n",
5544 "copy dispatch: expected 0x%08x, %d, %d, got 0x%08x, %d, %d\n",
5553 "copy dispatch: expected 0x%08x, %d, %d, got 0x%08x, %d, %d\n",
5561 "copy dispatch: expected 0x%08x, %d, %d, got 0x%08x, %d, %d\n",
5574 pd = &
d.IDispatch_iface;
5585 "change unk(src,dst): expected 0x%08x,%d,%p, got 0x%08x,%d,%p\n",
5595 "change disp(src=src): expected 0x%08x,%d,%d,%p, got 0x%08x,%d,%d,%p\n",
5607 "change disp(src,dst): expected 0x%08x,%d,%d,%p, got 0x%08x,%d,%d,%p\n",
5652 "change err: vt %d expected 0x%08x, got 0x%08x\n",
vt, hExpected,
hres);
5714 memset(&vDst, 0,
sizeof(vDst));
5718 ok(
hres == hExpected,
"change empty: vt %d expected 0x%08x, got 0x%08x, vt %d\n",
5722 ok(
V_VT(&vDst) ==
vt,
"change empty: vt %d, got %d\n",
vt,
V_VT(&vDst));
5786 memset(&vDst, 0,
sizeof(vDst));
5790 ok(
hres == hExpected,
"change null: vt %d expected 0x%08x, got 0x%08x, vt %d\n",
5795 ok(
V_VT(&vDst) ==
VT_NULL,
"change null: VT_NULL expected 0x%08x, got 0x%08x, vt %d\n",
5798 ok(
V_VT(&vDst) ==
VT_EMPTY,
"change null: vt %d expected 0x%08x, got 0x%08x, vt %d\n",
5819 "change uint: Expected %d,0x%08x,%d got %d,0x%08x,%d\n",
5823#define NUM_CUST_ITEMS 16
5835 ok(!ci.cCustData && !ci.prgCustData,
"ClearCustData didn't clear fields!\n");
5859 ok(
V_VT(&
v2) ==
VT_I4 &&
V_I4(&
v2) == 123,
"VariantChangeTypeEx shouldn't change pvargDest\n");
5873 static const WCHAR testW[] = {
't',
'e',
's',
't',0};
5892 ok(
V_VT(&
v2) == 0xff,
"VariantChangeTypeEx changed dst variant\n");
5895 ok(
V_VT(&
v2) == 0xff,
"VariantChangeTypeEx changed dst variant\n");
5905 static const WCHAR testW[] = {
't',
'e',
's',
't',0};
5908 skip(
"BSTR cache is disabled, some tests will be skipped.\n");
5922 ok(
str == str2,
"str != str2\n");
5939 ok(
str == strs[0],
"str != strs[0]\n");
5943 ok(str2 == strs[1],
"str2 != strs[1]\n");
5962 ok(
res != 0,
"couldn't find resource\n" );
5980 static const WCHAR testW[] = {
't',
'e',
's',
't',0};
5981 static WCHAR teststructW[] = {
't',
'e',
's',
't',
'_',
's',
't',
'r',
'u',
'c',
't',0};
5982 static WCHAR teststruct2W[] = {
't',
'e',
's',
't',
'_',
's',
't',
'r',
'u',
'c',
't',
'2',0};
5983 static WCHAR teststruct3W[] = {
't',
'e',
's',
't',
'_',
's',
't',
'r',
'u',
'c',
't',
'3',0};
5987 struct test_struct teststruct, testcopy;
6020 hr = ITypeLib_FindName(
typelib, teststruct2W, 0, &typeinfo2, &memid, &found);
6022 ok(typeinfo2 !=
NULL,
"got %p\n", typeinfo2);
6026 hr = ITypeLib_FindName(typelib2, teststruct3W, 0, &typeinfo3, &memid, &found);
6028 ok(typeinfo3 !=
NULL,
"got %p\n", typeinfo3);
6040 ret = IRecordInfo_IsMatchingType(recinfo, recinfo2);
6044 ret = IRecordInfo_IsMatchingType(recinfo2, recinfo3);
6047 IRecordInfo_Release(recinfo3);
6048 ITypeInfo_Release(typeinfo3);
6049 IRecordInfo_Release(recinfo2);
6050 ITypeInfo_Release(typeinfo2);
6053 hr = IRecordInfo_GetSize(recinfo, &
size);
6055 ok(
size ==
sizeof(
struct test_struct),
"got size %d\n",
size);
6056 ok(
attr->cbSizeInstance ==
sizeof(
struct test_struct),
"got instance size %d\n",
attr->cbSizeInstance);
6062 teststruct.disp = (
void*)0xdeadbeef;
6063 teststruct.bstr = (
void*)0xdeadbeef;
6065 hr = IRecordInfo_RecordInit(recinfo, &teststruct);
6067 ok(teststruct.hr == 0,
"got 0x%08x\n", teststruct.hr);
6068 ok(teststruct.b == 0,
"got 0x%08x\n", teststruct.b);
6069 ok(teststruct.disp ==
NULL,
"got %p\n", teststruct.disp);
6070 ok(teststruct.bstr ==
NULL,
"got %p\n", teststruct.bstr);
6076 teststruct.b = VARIANT_TRUE;
6077 teststruct.disp = &
dispatch.IDispatch_iface;
6079 memset(&testcopy, 0,
sizeof(testcopy));
6080 hr = IRecordInfo_RecordCopy(recinfo, &teststruct, &testcopy);
6082 ok(testcopy.hr ==
S_FALSE,
"got 0x%08x\n", testcopy.hr);
6083 ok(testcopy.b == VARIANT_TRUE,
"got %d\n", testcopy.b);
6084 ok(testcopy.disp == teststruct.disp,
"got %p\n", testcopy.disp);
6086 ok(testcopy.bstr != teststruct.bstr,
"got %p\n", testcopy.bstr);
6090 hr = IRecordInfo_RecordClear(recinfo, &teststruct);
6092 ok(teststruct.bstr ==
NULL,
"got %p\n", teststruct.bstr);
6093 hr = IRecordInfo_RecordClear(recinfo, &testcopy);
6095 ok(testcopy.bstr ==
NULL,
"got %p\n", testcopy.bstr);
6098 memset(&testcopy, 0,
sizeof(testcopy));
6099 testcopy.disp = &
dispatch.IDispatch_iface;
6102 hr = IRecordInfo_RecordCopy(recinfo, &teststruct, &testcopy);
6106 IRecordInfo_Release(recinfo);
6109 ITypeLib_Release(typelib2);
ios_base &_STLP_CALL dec(ios_base &__s)
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
#define InterlockedIncrement
#define InterlockedDecrement
void dispatch(HANDLE hStopEvent)
#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 LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
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
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 VarCyFromDec(DECIMAL *pdecIn, CY *pCyOut)
HRESULT WINAPI VarCyFromUI1(BYTE bIn, CY *pCyOut)
HRESULT WINAPI VarI2FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, SHORT *psOut)
HRESULT WINAPI VarI1FromDec(DECIMAL *pdecIn, signed char *pcOut)
HRESULT WINAPI VarR4FromUI8(ULONG64 ullIn, float *pFltOut)
HRESULT WINAPI VarI2FromBool(VARIANT_BOOL boolIn, SHORT *psOut)
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 VarUI4FromI1(signed char cIn, ULONG *pulOut)
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 VarBoolFromDec(DECIMAL *pDecIn, VARIANT_BOOL *pBoolOut)
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 VarUI2FromDec(DECIMAL *pdecIn, USHORT *pusOut)
HRESULT WINAPI VarDecFromI2(SHORT sIn, DECIMAL *pDecOut)
HRESULT WINAPI VarI8FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, LONG64 *pi64Out)
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 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 VarBoolFromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarBstrFromCy(CY cyIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarUI8FromBool(VARIANT_BOOL boolIn, ULONG64 *pui64Out)
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 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 VarUI1FromDec(DECIMAL *pdecIn, BYTE *pbOut)
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 VarDateFromDec(DECIMAL *pdecIn, DATE *pdateOut)
HRESULT WINAPI VarI4FromI1(signed char cIn, LONG *piOut)
HRESULT WINAPI VarBoolFromCy(CY cyIn, VARIANT_BOOL *pBoolOut)
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 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 VarR4FromDec(DECIMAL *pDecIn, float *pFltOut)
HRESULT WINAPI VarUI1FromI2(SHORT sIn, BYTE *pbOut)
HRESULT WINAPI VarUI4FromDec(DECIMAL *pdecIn, ULONG *pulOut)
HRESULT WINAPI VarUI2FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, USHORT *pusOut)
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 VarUI4FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, ULONG *pulOut)
HRESULT WINAPI VarUI4FromI8(LONG64 llIn, ULONG *pulOut)
HRESULT WINAPI VarR8FromUI4(ULONG ulIn, double *pDblOut)
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 VarI8FromDec(DECIMAL *pdecIn, LONG64 *pi64Out)
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 VarUI8FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, ULONG64 *pui64Out)
HRESULT WINAPI VarDateFromBool(VARIANT_BOOL boolIn, DATE *pdateOut)
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 VarUI2FromBool(VARIANT_BOOL boolIn, USHORT *pusOut)
HRESULT WINAPI VarUI1FromUI2(USHORT usIn, BYTE *pbOut)
HRESULT WINAPI VarUI1FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, 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 VarBstrFromDec(DECIMAL *pDecIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
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 VarUI1FromDisp(IDispatch *pdispIn, LCID lcid, BYTE *pbOut)
HRESULT WINAPI VarUI8FromDec(DECIMAL *pdecIn, ULONG64 *pui64Out)
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 VarDecFromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, DECIMAL *pDecOut)
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 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 VarI4FromDec(DECIMAL *pdecIn, LONG *piOut)
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 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 VarR8FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, double *pDblOut)
HRESULT WINAPI VarUI2FromI2(SHORT sIn, USHORT *pusOut)
HRESULT WINAPI VarI1FromDate(DATE dateIn, signed char *pcOut)
HRESULT WINAPI VarI1FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, 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 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 VarI4FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, LONG *piOut)
HRESULT WINAPI VarI2FromI4(LONG iIn, SHORT *psOut)
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 VarR8FromR4(FLOAT fltIn, double *pDblOut)
HRESULT WINAPI VarR4FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, float *pFltOut)
HRESULT WINAPI VarDateFromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, DATE *pdateOut)
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 VarI2FromDec(DECIMAL *pdecIn, SHORT *psOut)
int align(int length, int align)
static unsigned char buff[32768]
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
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
static const WCHAR testW[]
static const WCHAR filenameW[]
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)
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_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)
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)
#define CONTAINING_RECORD(address, type, field)
HRESULT WINAPI VariantChangeTypeEx(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, LCID lcid, USHORT wFlags, VARTYPE vt)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
void WINAPI VariantInit(VARIANTARG *pVarg)
HRESULT WINAPI VariantCopyInd(VARIANT *pvargDest, VARIANTARG *pvargSrc)
HRESULT WINAPI VariantCopy(VARIANTARG *pvargDest, VARIANTARG *pvargSrc)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
_In_ DWORD _Out_ _In_ WORD wFlags
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
#define DISP_E_BADVARTYPE
#define DISP_E_TYPEMISMATCH
#define LOCALE_NOUSEROVERRIDE