Commit 34ab144f authored by Alexandre Julliard's avatar Alexandre Julliard

oleaut32/tests: Use nameless unions/structs.

parent 374d74e8
......@@ -114,7 +114,7 @@ static void test_ifont_size(LONGLONG size, LONG ratio_logical, LONG ratio_himetr
/* Check returned size - allow for errors due to rounding & font realization. */
ok((psize.int64 - size) < 10000 && (psize.int64 - size) > -10000,
"%s: IFont_get_Size: Lo=%ld, Hi=%ld; expected Lo=%ld, Hi=%ld.\n",
test_name, S(psize).Lo, S(psize).Hi, fd.cySize.Lo, fd.cySize.Hi);
test_name, psize.Lo, psize.Hi, fd.cySize.Lo, fd.cySize.Hi);
/* Check hFont size. */
hres = IFont_get_hFont (ifnt, &hfont);
......@@ -439,8 +439,8 @@ static void test_font_events_disp(void)
}
case DISPID_FONT_SIZE:
V_VT(&vararg) = VT_CY;
S(V_CY(&vararg)).Lo = 25;
S(V_CY(&vararg)).Hi = 0;
V_CY(&vararg).Lo = 25;
V_CY(&vararg).Hi = 0;
break;
case DISPID_FONT_BOLD:
V_VT(&vararg) = VT_BOOL;
......@@ -664,8 +664,8 @@ static void test_IsEqual(void)
/* Basic font description */
fd.cbSizeofstruct = sizeof(FONTDESC);
fd.lpstrName = system_font;
S(fd.cySize).Lo = 100;
S(fd.cySize).Hi = 100;
fd.cySize.Lo = 100;
fd.cySize.Hi = 100;
fd.sWeight = 0;
fd.sCharset = 0;
fd.fItalic = FALSE;
......@@ -697,21 +697,21 @@ static void test_IsEqual(void)
IFont_Release(ifnt2);
/* Test lo font size */
S(fd.cySize).Lo = 10000;
fd.cySize.Lo = 10000;
pOleCreateFontIndirect(&fd, &IID_IFont, (void **)&ifnt2);
hres = IFont_IsEqual(ifnt,ifnt2);
ok(hres == S_FALSE,
"IFont_IsEqual: (Lo font size) Expected S_FALSE but got 0x%08lx\n",hres);
S(fd.cySize).Lo = 100;
fd.cySize.Lo = 100;
IFont_Release(ifnt2);
/* Test hi font size */
S(fd.cySize).Hi = 10000;
fd.cySize.Hi = 10000;
pOleCreateFontIndirect(&fd, &IID_IFont, (void **)&ifnt2);
hres = IFont_IsEqual(ifnt,ifnt2);
ok(hres == S_FALSE,
"IFont_IsEqual: (Hi font size) Expected S_FALSE but got 0x%08lx\n",hres);
S(fd.cySize).Hi = 100;
fd.cySize.Hi = 100;
IFont_Release(ifnt2);
/* Test font weight */
......@@ -777,8 +777,8 @@ static void test_ReleaseHfont(void)
/* Basic font description */
fd.cbSizeofstruct = sizeof(FONTDESC);
fd.lpstrName = system_font;
S(fd.cySize).Lo = 100;
S(fd.cySize).Hi = 100;
fd.cySize.Lo = 100;
fd.cySize.Hi = 100;
fd.sWeight = 0;
fd.sCharset = 0;
fd.fItalic = FALSE;
......@@ -847,8 +847,8 @@ static void test_AddRefHfont(void)
/* Basic font description */
fd.cbSizeofstruct = sizeof(FONTDESC);
fd.lpstrName = system_font;
S(fd.cySize).Lo = 100;
S(fd.cySize).Hi = 100;
fd.cySize.Lo = 100;
fd.cySize.Hi = 100;
fd.sWeight = 0;
fd.sCharset = 0;
fd.fItalic = FALSE;
......
......@@ -26,7 +26,6 @@
#define COBJMACROS
#define CONST_VTABLE
#define NONAMELESSUNION
#include "wine/test.h"
#include <windef.h>
......@@ -409,7 +408,7 @@ static void test_empty_image_2(void) {
ok (hres == S_OK, "CreatestreamOnHGlobal failed? doubt it... hres 0x%08lx\n", hres);
memset(&seekto,0,sizeof(seekto));
seekto.u.LowPart = 42;
seekto.LowPart = 42;
hres = IStream_Seek(stream,seekto,SEEK_CUR,&newpos1);
ok (hres == S_OK, "istream seek failed? doubt it... hres 0x%08lx\n", hres);
......@@ -555,27 +554,27 @@ static HRESULT create_picture(short type, IPicture **pict)
break;
case PICTYPE_BITMAP:
desc.u.bmp.hbitmap = CreateBitmap(1, 1, 1, 1, NULL);
desc.u.bmp.hpal = (HPALETTE)0xbeefdead;
desc.bmp.hbitmap = CreateBitmap(1, 1, 1, 1, NULL);
desc.bmp.hpal = (HPALETTE)0xbeefdead;
break;
case PICTYPE_ICON:
desc.u.icon.hicon = LoadIconA(NULL, (LPCSTR)IDI_APPLICATION);
desc.icon.hicon = LoadIconA(NULL, (LPCSTR)IDI_APPLICATION);
break;
case PICTYPE_METAFILE:
{
HDC hdc = CreateMetaFileA(NULL);
desc.u.wmf.hmeta = CloseMetaFile(hdc);
desc.u.wmf.xExt = 1;
desc.u.wmf.yExt = 1;
desc.wmf.hmeta = CloseMetaFile(hdc);
desc.wmf.xExt = 1;
desc.wmf.yExt = 1;
break;
}
case PICTYPE_ENHMETAFILE:
{
HDC hdc = CreateEnhMetaFileA(0, NULL, NULL, NULL);
desc.u.emf.hemf = CloseEnhMetaFile(hdc);
desc.emf.hemf = CloseEnhMetaFile(hdc);
break;
}
......@@ -830,8 +829,8 @@ static void test_Render(void)
desc.cbSizeofstruct = sizeof(PICTDESC);
desc.picType = PICTYPE_ICON;
desc.u.icon.hicon = LoadIconA(NULL, (LPCSTR)IDI_APPLICATION);
if(!desc.u.icon.hicon){
desc.icon.hicon = LoadIconA(NULL, (LPCSTR)IDI_APPLICATION);
if(!desc.icon.hicon){
win_skip("LoadIcon failed. Skipping...\n");
delete_render_dc(hdc);
return;
......@@ -1084,14 +1083,14 @@ static void test_himetric(void)
desc.cbSizeofstruct = sizeof(desc);
desc.picType = PICTYPE_BITMAP;
desc.u.bmp.hpal = NULL;
desc.bmp.hpal = NULL;
hdc = CreateCompatibleDC(0);
bmp = CreateBitmap(1.9 * GetDeviceCaps(hdc, LOGPIXELSX),
1.9 * GetDeviceCaps(hdc, LOGPIXELSY), 1, 1, NULL);
desc.u.bmp.hbitmap = bmp;
desc.bmp.hbitmap = bmp;
/* size in himetric units reported rounded up to next integer value */
hr = OleCreatePictureIndirect(&desc, &IID_IPicture, FALSE, (void**)&pic);
......@@ -1118,7 +1117,7 @@ static void test_himetric(void)
ok(icon != NULL, "failed to create icon\n");
desc.picType = PICTYPE_ICON;
desc.u.icon.hicon = icon;
desc.icon.hicon = icon;
hr = OleCreatePictureIndirect(&desc, &IID_IPicture, FALSE, (void**)&pic);
ok(hr == S_OK, "got 0x%08lx\n", hr);
......@@ -1157,8 +1156,8 @@ static void test_load_save_bmp(void)
desc.cbSizeofstruct = sizeof(desc);
desc.picType = PICTYPE_BITMAP;
desc.u.bmp.hpal = 0;
desc.u.bmp.hbitmap = CreateBitmap(1, 1, 1, 1, NULL);
desc.bmp.hpal = 0;
desc.bmp.hbitmap = CreateBitmap(1, 1, 1, 1, NULL);
hr = OleCreatePictureIndirect(&desc, &IID_IPicture, FALSE, (void**)&pic);
ok(hr == S_OK, "OleCreatePictureIndirect error %#lx\n", hr);
......@@ -1169,7 +1168,7 @@ static void test_load_save_bmp(void)
hr = IPicture_get_Handle(pic, &handle);
ok(hr == S_OK,"get_Handle error %#8lx\n", hr);
ok(IntToPtr(handle) == desc.u.bmp.hbitmap, "get_Handle returned wrong handle %#x\n", handle);
ok(IntToPtr(handle) == desc.bmp.hbitmap, "get_Handle returned wrong handle %#x\n", handle);
hmem = GlobalAlloc(GMEM_ZEROINIT, 4096);
hr = CreateStreamOnHGlobal(hmem, FALSE, &dst_stream);
......@@ -1213,7 +1212,7 @@ static void test_load_save_bmp(void)
GlobalUnlock(hmem);
GlobalFree(hmem);
DeleteObject(desc.u.bmp.hbitmap);
DeleteObject(desc.bmp.hbitmap);
IPicture_Release(pic);
}
......@@ -1233,7 +1232,7 @@ static void test_load_save_icon(void)
desc.cbSizeofstruct = sizeof(desc);
desc.picType = PICTYPE_ICON;
desc.u.icon.hicon = LoadIconA(NULL, (LPCSTR)IDI_APPLICATION);
desc.icon.hicon = LoadIconA(NULL, (LPCSTR)IDI_APPLICATION);
hr = OleCreatePictureIndirect(&desc, &IID_IPicture, FALSE, (void**)&pic);
ok(hr == S_OK, "OleCreatePictureIndirect error %#lx\n", hr);
......@@ -1244,7 +1243,7 @@ static void test_load_save_icon(void)
hr = IPicture_get_Handle(pic, &handle);
ok(hr == S_OK,"get_Handle error %#8lx\n", hr);
ok(IntToPtr(handle) == desc.u.icon.hicon, "get_Handle returned wrong handle %#x\n", handle);
ok(IntToPtr(handle) == desc.icon.hicon, "get_Handle returned wrong handle %#x\n", handle);
hmem = GlobalAlloc(GMEM_ZEROINIT, 8192);
hr = CreateStreamOnHGlobal(hmem, FALSE, &dst_stream);
......@@ -1289,7 +1288,7 @@ static void test_load_save_icon(void)
GlobalUnlock(hmem);
GlobalFree(hmem);
DestroyIcon(desc.u.icon.hicon);
DestroyIcon(desc.icon.hicon);
IPicture_Release(pic);
}
......@@ -1509,10 +1508,10 @@ static HRESULT WINAPI NoStatStreamImpl_Read(
if (pcbRead==0)
pcbRead = &bytesReadBuffer;
bytesToReadFromBuffer = min( This->streamSize.u.LowPart - This->currentPosition.u.LowPart, cb);
bytesToReadFromBuffer = min( This->streamSize.LowPart - This->currentPosition.LowPart, cb);
supportBuffer = GlobalLock(This->supportHandle);
memcpy(pv, (char *) supportBuffer+This->currentPosition.u.LowPart, bytesToReadFromBuffer);
This->currentPosition.u.LowPart+=bytesToReadFromBuffer;
memcpy(pv, (char *) supportBuffer+This->currentPosition.LowPart, bytesToReadFromBuffer);
This->currentPosition.LowPart+=bytesToReadFromBuffer;
*pcbRead = bytesToReadFromBuffer;
GlobalUnlock(This->supportHandle);
if(*pcbRead == cb)
......@@ -1535,14 +1534,14 @@ static HRESULT WINAPI NoStatStreamImpl_Write(
pcbWritten = &bytesWritten;
if (cb == 0)
return S_OK;
newSize.u.HighPart = 0;
newSize.u.LowPart = This->currentPosition.u.LowPart + cb;
if (newSize.u.LowPart > This->streamSize.u.LowPart)
newSize.HighPart = 0;
newSize.LowPart = This->currentPosition.LowPart + cb;
if (newSize.LowPart > This->streamSize.LowPart)
IStream_SetSize(iface, newSize);
supportBuffer = GlobalLock(This->supportHandle);
memcpy((char *) supportBuffer+This->currentPosition.u.LowPart, pv, cb);
This->currentPosition.u.LowPart+=cb;
memcpy((char *) supportBuffer+This->currentPosition.LowPart, pv, cb);
This->currentPosition.LowPart+=cb;
*pcbWritten = cb;
GlobalUnlock(This->supportHandle);
return S_OK;
......@@ -1559,8 +1558,8 @@ static HRESULT WINAPI NoStatStreamImpl_Seek(
switch (dwOrigin)
{
case STREAM_SEEK_SET:
newPosition.u.HighPart = 0;
newPosition.u.LowPart = 0;
newPosition.HighPart = 0;
newPosition.LowPart = 0;
break;
case STREAM_SEEK_CUR:
newPosition = This->currentPosition;
......@@ -1585,15 +1584,15 @@ static HRESULT WINAPI NoStatStreamImpl_SetSize(
{
NoStatStreamImpl* const This = impl_from_IStream(iface);
HGLOBAL supportHandle;
if (libNewSize.u.HighPart != 0)
if (libNewSize.HighPart != 0)
return STG_E_INVALIDFUNCTION;
if (This->streamSize.u.LowPart == libNewSize.u.LowPart)
if (This->streamSize.LowPart == libNewSize.LowPart)
return S_OK;
supportHandle = GlobalReAlloc(This->supportHandle, libNewSize.u.LowPart, 0);
supportHandle = GlobalReAlloc(This->supportHandle, libNewSize.LowPart, 0);
if (supportHandle == 0)
return STG_E_MEDIUMFULL;
This->supportHandle = supportHandle;
This->streamSize.u.LowPart = libNewSize.u.LowPart;
This->streamSize.LowPart = libNewSize.LowPart;
return S_OK;
}
......@@ -1612,39 +1611,39 @@ static HRESULT WINAPI NoStatStreamImpl_CopyTo(
if ( pstm == 0 )
return STG_E_INVALIDPOINTER;
totalBytesRead.u.LowPart = totalBytesRead.u.HighPart = 0;
totalBytesWritten.u.LowPart = totalBytesWritten.u.HighPart = 0;
totalBytesRead.LowPart = totalBytesRead.HighPart = 0;
totalBytesWritten.LowPart = totalBytesWritten.HighPart = 0;
while ( cb.u.LowPart > 0 )
while ( cb.LowPart > 0 )
{
if ( cb.u.LowPart >= 128 )
if ( cb.LowPart >= 128 )
copySize = 128;
else
copySize = cb.u.LowPart;
copySize = cb.LowPart;
IStream_Read(iface, tmpBuffer, copySize, &bytesRead);
totalBytesRead.u.LowPart += bytesRead;
totalBytesRead.LowPart += bytesRead;
IStream_Write(pstm, tmpBuffer, bytesRead, &bytesWritten);
totalBytesWritten.u.LowPart += bytesWritten;
totalBytesWritten.LowPart += bytesWritten;
if (bytesRead != bytesWritten)
{
hr = STG_E_MEDIUMFULL;
break;
}
if (bytesRead!=copySize)
cb.u.LowPart = 0;
cb.LowPart = 0;
else
cb.u.LowPart -= bytesRead;
cb.LowPart -= bytesRead;
}
if (pcbRead)
{
pcbRead->u.LowPart = totalBytesRead.u.LowPart;
pcbRead->u.HighPart = totalBytesRead.u.HighPart;
pcbRead->u.LowPart = totalBytesRead.LowPart;
pcbRead->u.HighPart = totalBytesRead.HighPart;
}
if (pcbWritten)
{
pcbWritten->u.LowPart = totalBytesWritten.u.LowPart;
pcbWritten->u.HighPart = totalBytesWritten.u.HighPart;
pcbWritten->u.LowPart = totalBytesWritten.LowPart;
pcbWritten->u.HighPart = totalBytesWritten.HighPart;
}
return hr;
}
......@@ -1710,10 +1709,10 @@ static IStream* NoStatStream_Construct(HGLOBAL hGlobal)
if (!newStream->supportHandle)
newStream->supportHandle = GlobalAlloc(GMEM_MOVEABLE | GMEM_NODISCARD |
GMEM_SHARE, 0);
newStream->currentPosition.u.HighPart = 0;
newStream->currentPosition.u.LowPart = 0;
newStream->streamSize.u.HighPart = 0;
newStream->streamSize.u.LowPart = GlobalSize(newStream->supportHandle);
newStream->currentPosition.HighPart = 0;
newStream->currentPosition.LowPart = 0;
newStream->streamSize.HighPart = 0;
newStream->streamSize.LowPart = GlobalSize(newStream->supportHandle);
}
return &newStream->IStream_iface;
}
......
......@@ -19,9 +19,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#define NONAMELESSSTRUCT
#define NONAMELESSUNION
#define COBJMACROS
#define CONST_VTABLE
......@@ -723,10 +720,10 @@ static void test_CreateDispTypeInfo(void)
ok(pFuncDesc->wFuncFlags == 0, "oVft %d\n", pFuncDesc->wFuncFlags);
ok(pFuncDesc->elemdescFunc.tdesc.vt == VT_HRESULT, "ret vt %x\n", pFuncDesc->elemdescFunc.tdesc.vt);
ok(pFuncDesc->lprgelemdescParam[0].tdesc.vt == VT_I4, "parm 0 vt %x\n", pFuncDesc->lprgelemdescParam[0].tdesc.vt);
ok(U(pFuncDesc->lprgelemdescParam[0]).paramdesc.wParamFlags == PARAMFLAG_NONE, "parm 0 flags %x\n", U(pFuncDesc->lprgelemdescParam[0]).paramdesc.wParamFlags);
ok(pFuncDesc->lprgelemdescParam[0].paramdesc.wParamFlags == PARAMFLAG_NONE, "parm 0 flags %x\n", pFuncDesc->lprgelemdescParam[0].paramdesc.wParamFlags);
ok(pFuncDesc->lprgelemdescParam[1].tdesc.vt == VT_BSTR, "parm 1 vt %x\n", pFuncDesc->lprgelemdescParam[1].tdesc.vt);
ok(U(pFuncDesc->lprgelemdescParam[1]).paramdesc.wParamFlags == PARAMFLAG_NONE, "parm 1 flags %x\n", U(pFuncDesc->lprgelemdescParam[1]).paramdesc.wParamFlags);
ok(pFuncDesc->lprgelemdescParam[1].paramdesc.wParamFlags == PARAMFLAG_NONE, "parm 1 flags %x\n", pFuncDesc->lprgelemdescParam[1].paramdesc.wParamFlags);
ITypeInfo_ReleaseFuncDesc(pTI2, pFuncDesc);
hr = ITypeInfo_GetFuncDesc(pTI2, 1, &pFuncDesc);
......@@ -750,7 +747,7 @@ static void test_CreateDispTypeInfo(void)
ok(pFuncDesc->wFuncFlags == 0, "oVft %d\n", pFuncDesc->wFuncFlags);
ok(pFuncDesc->elemdescFunc.tdesc.vt == VT_HRESULT, "ret vt %x\n", pFuncDesc->elemdescFunc.tdesc.vt);
ok(pFuncDesc->lprgelemdescParam[0].tdesc.vt == VT_I4, "parm 0 vt %x\n", pFuncDesc->lprgelemdescParam[0].tdesc.vt);
ok(U(pFuncDesc->lprgelemdescParam[0]).paramdesc.wParamFlags == PARAMFLAG_NONE, "parm 0 flags %x\n", U(pFuncDesc->lprgelemdescParam[0]).paramdesc.wParamFlags);
ok(pFuncDesc->lprgelemdescParam[0].paramdesc.wParamFlags == PARAMFLAG_NONE, "parm 0 flags %x\n", pFuncDesc->lprgelemdescParam[0].paramdesc.wParamFlags);
ITypeInfo_ReleaseFuncDesc(pTI2, pFuncDesc);
hr = ITypeInfo_GetFuncDesc(pTI2, 3, &pFuncDesc);
......@@ -1220,7 +1217,7 @@ static VARIANT WINAPI variant_func( int a0, BOOL a1, DECIMAL a2, VARIANT a3 )
V_VT(&var) = VT_LPWSTR;
V_UI4(&var) = 0xbabe;
ok( a2.Hi32 == 1122, "wrong arg2.Hi32 %lx\n", a2.Hi32 );
ok( U1(a2).Lo64 == 3344, "wrong arg2.Lo64 %#I64x\n", U1(a2).Lo64 );
ok( a2.Lo64 == 3344, "wrong arg2.Lo64 %#I64x\n", a2.Lo64 );
ok( V_VT(&a3) == VT_EMPTY, "wrong arg3 type %x\n", V_VT(&a3) );
ok( V_UI4(&a3) == 0xdeadbeef, "wrong arg3 value %lx\n", V_UI4(&a3) );
return var;
......@@ -1412,7 +1409,7 @@ static void test_DispCallFunc(void)
V_BOOL(&args[1]) = 1;
types[2] = VT_DECIMAL;
V_DECIMAL(&args[2]).Hi32 = 1122;
U1(V_DECIMAL(&args[2])).Lo64 = 3344;
V_DECIMAL(&args[2]).Lo64 = 3344;
types[3] = VT_VARIANT;
V_VT(&args[3]) = VT_EMPTY;
V_UI4(&args[3]) = 0xdeadbeef;
......@@ -1842,7 +1839,7 @@ static void test_inheritance(void)
ok(pFD->cParams == 1, "cParams %i\n", pFD->cParams);
ok(pFD->lprgelemdescParam[0].tdesc.vt == VT_USERDEFINED,
"vt 0x%x\n", pFD->lprgelemdescParam[0].tdesc.vt);
href = U(pFD->lprgelemdescParam[0].tdesc).hreftype;
href = pFD->lprgelemdescParam[0].tdesc.hreftype;
ok((href & 0xff000000) == 0x04000000, "href 0x%08lx\n", href);
hr = ITypeInfo_GetRefTypeInfo(pTI, href, &pTI_p);
ok(hr == S_OK, "hr %08lx\n", hr);
......@@ -2191,7 +2188,7 @@ static void test_CreateTypeLib(SYSKIND sys) {
funcdesc.invkind = INVOKE_PROPERTYGET;
funcdesc.callconv = CC_STDCALL;
funcdesc.elemdescFunc.tdesc.vt = VT_BSTR;
U(funcdesc.elemdescFunc).idldesc.wIDLFlags = IDLFLAG_NONE;
funcdesc.elemdescFunc.idldesc.wIDLFlags = IDLFLAG_NONE;
hres = ICreateTypeInfo_AddFuncDesc(createti, 0, NULL);
ok(hres == E_INVALIDARG, "got %08lx\n", hres);
......@@ -2238,8 +2235,8 @@ static void test_CreateTypeLib(SYSKIND sys) {
ok(hres == TYPE_E_INCONSISTENTPROPFUNCS, "got %08lx\n", hres);
elemdesc[0].tdesc.vt = VT_BSTR;
U(elemdesc[0]).idldesc.dwReserved = 0;
U(elemdesc[0]).idldesc.wIDLFlags = IDLFLAG_FIN;
elemdesc[0].idldesc.dwReserved = 0;
elemdesc[0].idldesc.wIDLFlags = IDLFLAG_FIN;
funcdesc.lprgelemdescParam = elemdesc;
funcdesc.invkind = INVOKE_PROPERTYPUT;
......@@ -2285,7 +2282,7 @@ static void test_CreateTypeLib(SYSKIND sys) {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_BSTR, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).idldesc.wIDLFlags == IDLFLAG_FIN, "got: %x\n", U(*edesc).idldesc.wIDLFlags);
ok(edesc->idldesc.wIDLFlags == IDLFLAG_FIN, "got: %x\n", edesc->idldesc.wIDLFlags);
ITypeInfo2_ReleaseFuncDesc(ti2, pfuncdesc);
......@@ -2332,7 +2329,7 @@ static void test_CreateTypeLib(SYSKIND sys) {
ok(hres == S_OK, "got %08lx\n", hres);
elemdesc[0].tdesc.vt = VT_PTR;
U(elemdesc[0].tdesc).lptdesc = &typedesc1;
elemdesc[0].tdesc.lptdesc = &typedesc1;
typedesc1.vt = VT_BSTR;
funcdesc.cParams = 1;
funcdesc.lprgelemdescParam = elemdesc;
......@@ -2357,16 +2354,16 @@ static void test_CreateTypeLib(SYSKIND sys) {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_PTR, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FIN, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex == NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(edesc->tdesc).lptdesc != NULL, "got: %p\n", U(edesc->tdesc).lptdesc);
ok(U(edesc->tdesc).lptdesc->vt == VT_BSTR, "got: %d\n", U(edesc->tdesc).lptdesc->vt);
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FIN, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex == NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->tdesc.lptdesc != NULL, "got: %p\n", edesc->tdesc.lptdesc);
ok(edesc->tdesc.lptdesc->vt == VT_BSTR, "got: %d\n", edesc->tdesc.lptdesc->vt);
ITypeInfo2_ReleaseFuncDesc(ti2, pfuncdesc);
U(elemdesc[0].tdesc).lptdesc = &typedesc2;
elemdesc[0].tdesc.lptdesc = &typedesc2;
typedesc2.vt = VT_PTR;
U(typedesc2).lptdesc = &typedesc1;
typedesc2.lptdesc = &typedesc1;
hres = ICreateTypeInfo_AddFuncDesc(createti, 4, &funcdesc);
ok(hres == S_OK, "got %08lx\n", hres);
......@@ -2388,18 +2385,18 @@ static void test_CreateTypeLib(SYSKIND sys) {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_PTR, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FIN, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex == NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(edesc->tdesc).lptdesc != NULL, "got: %p\n", U(edesc->tdesc).lptdesc);
ok(U(edesc->tdesc).lptdesc->vt == VT_PTR, "got: %d\n", U(edesc->tdesc).lptdesc->vt);
ok(U(*U(edesc->tdesc).lptdesc).lptdesc != NULL, "got: %p\n", U(*U(edesc->tdesc).lptdesc).lptdesc);
ok(U(*U(edesc->tdesc).lptdesc).lptdesc->vt == VT_BSTR, "got: %d\n", U(*U(edesc->tdesc).lptdesc).lptdesc->vt);
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FIN, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex == NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->tdesc.lptdesc != NULL, "got: %p\n", edesc->tdesc.lptdesc);
ok(edesc->tdesc.lptdesc->vt == VT_PTR, "got: %d\n", edesc->tdesc.lptdesc->vt);
ok(edesc->tdesc.lptdesc->lptdesc != NULL, "got: %p\n", edesc->tdesc.lptdesc->lptdesc);
ok(edesc->tdesc.lptdesc->lptdesc->vt == VT_BSTR, "got: %d\n", edesc->tdesc.lptdesc->lptdesc->vt);
ITypeInfo2_ReleaseFuncDesc(ti2, pfuncdesc);
elemdesc[0].tdesc.vt = VT_INT;
U(elemdesc[0]).paramdesc.wParamFlags = PARAMFLAG_FHASDEFAULT;
U(elemdesc[0]).paramdesc.pparamdescex = &paramdescex;
elemdesc[0].paramdesc.wParamFlags = PARAMFLAG_FHASDEFAULT;
elemdesc[0].paramdesc.pparamdescex = &paramdescex;
V_VT(&paramdescex.varDefaultValue) = VT_INT;
V_INT(&paramdescex.varDefaultValue) = 0x123;
hres = ICreateTypeInfo_AddFuncDesc(createti, 3, &funcdesc);
......@@ -2423,22 +2420,22 @@ static void test_CreateTypeLib(SYSKIND sys) {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_INT, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
U(*edesc).paramdesc.pparamdescex->cBytes);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_I4, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(V_I4(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == 0x123, "got: 0x%lx\n",
V_I4(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
edesc->paramdesc.pparamdescex->cBytes);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_I4, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(V_I4(&edesc->paramdesc.pparamdescex->varDefaultValue) == 0x123, "got: 0x%lx\n",
V_I4(&edesc->paramdesc.pparamdescex->varDefaultValue));
ITypeInfo2_ReleaseFuncDesc(ti2, pfuncdesc);
U(elemdesc[0]).idldesc.dwReserved = 0;
U(elemdesc[0]).idldesc.wIDLFlags = IDLFLAG_FIN;
elemdesc[0].idldesc.dwReserved = 0;
elemdesc[0].idldesc.wIDLFlags = IDLFLAG_FIN;
elemdesc[1].tdesc.vt = VT_UI2;
U(elemdesc[1]).paramdesc.wParamFlags = PARAMFLAG_FHASDEFAULT;
U(elemdesc[1]).paramdesc.pparamdescex = &paramdescex;
elemdesc[1].paramdesc.wParamFlags = PARAMFLAG_FHASDEFAULT;
elemdesc[1].paramdesc.pparamdescex = &paramdescex;
V_VT(&paramdescex.varDefaultValue) = VT_UI2;
V_UI2(&paramdescex.varDefaultValue) = 0xffff;
funcdesc.cParams = 2;
......@@ -2463,24 +2460,24 @@ static void test_CreateTypeLib(SYSKIND sys) {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_INT, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FIN, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex == NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FIN, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex == NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
edesc = pfuncdesc->lprgelemdescParam + 1;
ok(edesc->tdesc.vt == VT_UI2, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
U(*edesc).paramdesc.pparamdescex->cBytes);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_UI2, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(V_UI2(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == 0xFFFF, "got: 0x%x\n",
V_UI2(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
edesc->paramdesc.pparamdescex->cBytes);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_UI2, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(V_UI2(&edesc->paramdesc.pparamdescex->varDefaultValue) == 0xFFFF, "got: 0x%x\n",
V_UI2(&edesc->paramdesc.pparamdescex->varDefaultValue));
ITypeInfo2_ReleaseFuncDesc(ti2, pfuncdesc);
U(elemdesc[0]).paramdesc.wParamFlags = PARAMFLAG_FHASDEFAULT;
U(elemdesc[0]).paramdesc.pparamdescex = &paramdescex;
elemdesc[0].paramdesc.wParamFlags = PARAMFLAG_FHASDEFAULT;
elemdesc[0].paramdesc.pparamdescex = &paramdescex;
elemdesc[1].tdesc.vt = VT_INT;
V_VT(&paramdescex.varDefaultValue) = VT_INT;
V_INT(&paramdescex.varDefaultValue) = 0xffffffff;
......@@ -2513,34 +2510,34 @@ static void test_CreateTypeLib(SYSKIND sys) {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_BSTR, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
U(*edesc).paramdesc.pparamdescex->cBytes);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_BSTR, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(compare_wstr(V_BSTR(&U(*edesc).paramdesc.pparamdescex->varDefaultValue), defaultW),
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
edesc->paramdesc.pparamdescex->cBytes);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_BSTR, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(compare_wstr(V_BSTR(&edesc->paramdesc.pparamdescex->varDefaultValue), defaultW),
"got: %s\n",
wine_dbgstr_w(V_BSTR(&U(*edesc).paramdesc.pparamdescex->varDefaultValue)));
wine_dbgstr_w(V_BSTR(&edesc->paramdesc.pparamdescex->varDefaultValue)));
edesc = pfuncdesc->lprgelemdescParam + 1;
ok(edesc->tdesc.vt == VT_BSTR, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
U(*edesc).paramdesc.pparamdescex->cBytes);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_BSTR, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(compare_wstr(V_BSTR(&U(*edesc).paramdesc.pparamdescex->varDefaultValue), defaultW),
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
edesc->paramdesc.pparamdescex->cBytes);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_BSTR, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(compare_wstr(V_BSTR(&edesc->paramdesc.pparamdescex->varDefaultValue), defaultW),
"got: %s\n",
wine_dbgstr_w(V_BSTR(&U(*edesc).paramdesc.pparamdescex->varDefaultValue)));
wine_dbgstr_w(V_BSTR(&edesc->paramdesc.pparamdescex->varDefaultValue)));
ITypeInfo2_ReleaseFuncDesc(ti2, pfuncdesc);
elemdesc[0].tdesc.vt = VT_USERDEFINED;
U(elemdesc[0].tdesc).hreftype = hreftype;
U(elemdesc[0]).paramdesc.pparamdescex = &paramdescex;
U(elemdesc[0]).paramdesc.wParamFlags = PARAMFLAG_FHASDEFAULT;
elemdesc[0].tdesc.hreftype = hreftype;
elemdesc[0].paramdesc.pparamdescex = &paramdescex;
elemdesc[0].paramdesc.wParamFlags = PARAMFLAG_FHASDEFAULT;
V_VT(&paramdescex.varDefaultValue) = VT_INT;
V_INT(&paramdescex.varDefaultValue) = 0x789;
......@@ -2569,21 +2566,21 @@ static void test_CreateTypeLib(SYSKIND sys) {
ok(pfuncdesc->wFuncFlags == 0, "got 0x%x\n", pfuncdesc->wFuncFlags);
edesc = pfuncdesc->lprgelemdescParam;
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->tdesc.vt == VT_USERDEFINED, "got: %d\n", edesc->tdesc.vt);
ok(U(edesc->tdesc).hreftype == hreftype, "got: 0x%lx\n", U(edesc->tdesc).hreftype);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_INT, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(V_INT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == 0x789, "got: %d\n",
V_INT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(edesc->tdesc.hreftype == hreftype, "got: 0x%lx\n", edesc->tdesc.hreftype);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_INT, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(V_INT(&edesc->paramdesc.pparamdescex->varDefaultValue) == 0x789, "got: %d\n",
V_INT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ITypeInfo2_ReleaseFuncDesc(ti2, pfuncdesc);
elemdesc[0].tdesc.vt = VT_VARIANT;
U(elemdesc[0]).paramdesc.pparamdescex = &paramdescex;
U(elemdesc[0]).paramdesc.wParamFlags = PARAMFLAG_FHASDEFAULT;
elemdesc[0].paramdesc.pparamdescex = &paramdescex;
elemdesc[0].paramdesc.wParamFlags = PARAMFLAG_FHASDEFAULT;
V_VT(&paramdescex.varDefaultValue) = VT_INT;
V_INT(&paramdescex.varDefaultValue) = 3;
......@@ -2612,14 +2609,14 @@ static void test_CreateTypeLib(SYSKIND sys) {
ok(pfuncdesc->wFuncFlags == 0, "got 0x%x\n", pfuncdesc->wFuncFlags);
edesc = pfuncdesc->lprgelemdescParam;
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->tdesc.vt == VT_VARIANT, "got: %d\n", edesc->tdesc.vt);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_INT, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(V_INT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == 3, "got: %d\n",
V_INT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_INT, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(V_INT(&edesc->paramdesc.pparamdescex->varDefaultValue) == 3, "got: %d\n",
V_INT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ITypeInfo2_ReleaseFuncDesc(ti2, pfuncdesc);
......@@ -3221,7 +3218,7 @@ todo_wine {
ok(pfuncdesc->wFuncFlags == 0, "got 0x%x\n", pfuncdesc->wFuncFlags);
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_BSTR, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).idldesc.wIDLFlags == IDLFLAG_FIN, "got: %x\n", U(*edesc).idldesc.wIDLFlags);
ok(edesc->idldesc.wIDLFlags == IDLFLAG_FIN, "got: %x\n", edesc->idldesc.wIDLFlags);
hres = ITypeInfo_GetDocumentation(ti, pfuncdesc->memid, &name, &docstring, &helpcontext, &helpfile);
ok(hres == S_OK, "got: %08lx\n", hres);
......@@ -3313,27 +3310,27 @@ todo_wine {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_BSTR, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
U(*edesc).paramdesc.pparamdescex->cBytes);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_BSTR, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(compare_wstr(V_BSTR(&U(*edesc).paramdesc.pparamdescex->varDefaultValue), defaultW),
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
edesc->paramdesc.pparamdescex->cBytes);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_BSTR, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(compare_wstr(V_BSTR(&edesc->paramdesc.pparamdescex->varDefaultValue), defaultW),
"got: %s\n",
wine_dbgstr_w(V_BSTR(&U(*edesc).paramdesc.pparamdescex->varDefaultValue)));
wine_dbgstr_w(V_BSTR(&edesc->paramdesc.pparamdescex->varDefaultValue)));
edesc = pfuncdesc->lprgelemdescParam + 1;
ok(edesc->tdesc.vt == VT_BSTR, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
U(*edesc).paramdesc.pparamdescex->cBytes);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_BSTR, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(compare_wstr(V_BSTR(&U(*edesc).paramdesc.pparamdescex->varDefaultValue), defaultW),
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
edesc->paramdesc.pparamdescex->cBytes);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_BSTR, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(compare_wstr(V_BSTR(&edesc->paramdesc.pparamdescex->varDefaultValue), defaultW),
"got: %s\n",
wine_dbgstr_w(V_BSTR(&U(*edesc).paramdesc.pparamdescex->varDefaultValue)));
wine_dbgstr_w(V_BSTR(&edesc->paramdesc.pparamdescex->varDefaultValue)));
hres = ITypeInfo_GetDocumentation(ti, pfuncdesc->memid, &name, &docstring, &helpcontext, &helpfile);
ok(hres == S_OK, "got: %08lx\n", hres);
......@@ -3372,25 +3369,25 @@ todo_wine {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_INT, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
U(*edesc).paramdesc.pparamdescex->cBytes);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_I4, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(V_I4(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == 0xFFFFFFFF,
"got: 0x%lx\n", V_I4(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
edesc->paramdesc.pparamdescex->cBytes);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_I4, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(V_I4(&edesc->paramdesc.pparamdescex->varDefaultValue) == 0xFFFFFFFF,
"got: 0x%lx\n", V_I4(&edesc->paramdesc.pparamdescex->varDefaultValue));
edesc = pfuncdesc->lprgelemdescParam + 1;
ok(edesc->tdesc.vt == VT_INT, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
U(*edesc).paramdesc.pparamdescex->cBytes);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_I4, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(V_I4(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == 0xFFFFFFFF,
"got: 0x%lx\n", V_I4(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
edesc->paramdesc.pparamdescex->cBytes);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_I4, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(V_I4(&edesc->paramdesc.pparamdescex->varDefaultValue) == 0xFFFFFFFF,
"got: 0x%lx\n", V_I4(&edesc->paramdesc.pparamdescex->varDefaultValue));
hres = ITypeInfo_GetDocumentation(ti, pfuncdesc->memid, &name, &docstring, &helpcontext, &helpfile);
ok(hres == S_OK, "got: %08lx\n", hres);
......@@ -3417,17 +3414,17 @@ todo_wine {
ok(pfuncdesc->wFuncFlags == 0, "got 0x%x\n", pfuncdesc->wFuncFlags);
edesc = pfuncdesc->lprgelemdescParam;
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
U(*edesc).paramdesc.pparamdescex->cBytes);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_INT, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(V_UI2(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == 0x789, "got: 0x%x\n",
V_UI2(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
edesc->paramdesc.pparamdescex->cBytes);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_INT, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(V_UI2(&edesc->paramdesc.pparamdescex->varDefaultValue) == 0x789, "got: 0x%x\n",
V_UI2(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->tdesc.vt == VT_USERDEFINED, "got: %d\n", edesc->tdesc.vt);
ok(U(edesc->tdesc).hreftype == hreftype, "got: 0x%lx\n", U(edesc->tdesc).hreftype);
ok(edesc->tdesc.hreftype == hreftype, "got: 0x%lx\n", edesc->tdesc.hreftype);
hres = ITypeInfo_GetDocumentation(ti, pfuncdesc->memid, &name, &docstring, &helpcontext, &helpfile);
ok(hres == S_OK, "got: %08lx\n", hres);
......@@ -3454,17 +3451,17 @@ todo_wine {
ok(pfuncdesc->wFuncFlags == 0, "got 0x%x\n", pfuncdesc->wFuncFlags);
edesc = pfuncdesc->lprgelemdescParam;
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
U(*edesc).paramdesc.pparamdescex->cBytes);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_INT, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(V_UI2(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == 0x3, "got: 0x%x\n",
V_UI2(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
edesc->paramdesc.pparamdescex->cBytes);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_INT, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(V_UI2(&edesc->paramdesc.pparamdescex->varDefaultValue) == 0x3, "got: 0x%x\n",
V_UI2(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->tdesc.vt == VT_VARIANT, "got: %d\n", edesc->tdesc.vt);
ok(U(edesc->tdesc).hreftype == 0, "got: 0x%lx\n", U(edesc->tdesc).hreftype);
ok(edesc->tdesc.hreftype == 0, "got: 0x%lx\n", edesc->tdesc.hreftype);
hres = ITypeInfo_GetDocumentation(ti, pfuncdesc->memid, &name, &docstring, &helpcontext, &helpfile);
ok(hres == S_OK, "got: %08lx\n", hres);
......@@ -3492,19 +3489,19 @@ todo_wine {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_INT, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FIN, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex == NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FIN, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex == NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
edesc = pfuncdesc->lprgelemdescParam + 1;
ok(edesc->tdesc.vt == VT_UI2, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
U(*edesc).paramdesc.pparamdescex->cBytes);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_UI2, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(V_UI2(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == 0xFFFF, "got: 0x%x\n",
V_UI2(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
edesc->paramdesc.pparamdescex->cBytes);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_UI2, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(V_UI2(&edesc->paramdesc.pparamdescex->varDefaultValue) == 0xFFFF, "got: 0x%x\n",
V_UI2(&edesc->paramdesc.pparamdescex->varDefaultValue));
hres = ITypeInfo_GetDocumentation(ti, pfuncdesc->memid, &name, &docstring, &helpcontext, &helpfile);
ok(hres == S_OK, "got: %08lx\n", hres);
......@@ -3532,14 +3529,14 @@ todo_wine {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_INT, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
U(*edesc).paramdesc.pparamdescex->cBytes);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_I4, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(V_I4(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == 0x123, "got: 0x%lx\n",
V_I4(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
edesc->paramdesc.pparamdescex->cBytes);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_I4, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(V_I4(&edesc->paramdesc.pparamdescex->varDefaultValue) == 0x123, "got: 0x%lx\n",
V_I4(&edesc->paramdesc.pparamdescex->varDefaultValue));
hres = ITypeInfo_GetDocumentation(ti, pfuncdesc->memid, &name, &docstring, &helpcontext, &helpfile);
ok(hres == S_OK, "got: %08lx\n", hres);
......@@ -3598,12 +3595,12 @@ todo_wine {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_PTR, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FIN, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex == NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(edesc->tdesc).lptdesc != NULL, "got: %p\n", U(edesc->tdesc).lptdesc);
ok(U(edesc->tdesc).lptdesc->vt == VT_PTR, "got: %d\n", U(edesc->tdesc).lptdesc->vt);
ok(U(*U(edesc->tdesc).lptdesc).lptdesc != NULL, "got: %p\n", U(*U(edesc->tdesc).lptdesc).lptdesc);
ok(U(*U(edesc->tdesc).lptdesc).lptdesc->vt == VT_BSTR, "got: %d\n", U(*U(edesc->tdesc).lptdesc).lptdesc->vt);
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FIN, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex == NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->tdesc.lptdesc != NULL, "got: %p\n", edesc->tdesc.lptdesc);
ok(edesc->tdesc.lptdesc->vt == VT_PTR, "got: %d\n", edesc->tdesc.lptdesc->vt);
ok(edesc->tdesc.lptdesc->lptdesc != NULL, "got: %p\n", edesc->tdesc.lptdesc->lptdesc);
ok(edesc->tdesc.lptdesc->lptdesc->vt == VT_BSTR, "got: %d\n", edesc->tdesc.lptdesc->lptdesc->vt);
hres = ITypeInfo_GetDocumentation(ti, pfuncdesc->memid, &name, &docstring, &helpcontext, &helpfile);
ok(hres == S_OK, "got: %08lx\n", hres);
......@@ -3631,10 +3628,10 @@ todo_wine {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_PTR, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FIN, "got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex == NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(edesc->tdesc).lptdesc != NULL, "got: %p\n", U(edesc->tdesc).lptdesc);
ok(U(edesc->tdesc).lptdesc->vt == VT_BSTR, "got: %d\n", U(edesc->tdesc).lptdesc->vt);
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FIN, "got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex == NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->tdesc.lptdesc != NULL, "got: %p\n", edesc->tdesc.lptdesc);
ok(edesc->tdesc.lptdesc->vt == VT_BSTR, "got: %d\n", edesc->tdesc.lptdesc->vt);
hres = ITypeInfo_GetDocumentation(ti, pfuncdesc->memid, &name, &docstring, &helpcontext, &helpfile);
ok(hres == S_OK, "got: %08lx\n", hres);
......@@ -3662,7 +3659,7 @@ todo_wine {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_BSTR, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).idldesc.wIDLFlags == IDLFLAG_FIN, "got: %x\n", U(*edesc).idldesc.wIDLFlags);
ok(edesc->idldesc.wIDLFlags == IDLFLAG_FIN, "got: %x\n", edesc->idldesc.wIDLFlags);
hres = ITypeInfo_GetDocumentation(ti, pfuncdesc->memid, &name, &docstring, &helpcontext, &helpfile);
ok(hres == S_OK, "got: %08lx\n", hres);
......@@ -3723,19 +3720,19 @@ todo_wine {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_VARIANT, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
U(*edesc).paramdesc.pparamdescex->cBytes);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_INT, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(V_UI2(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == 0x3, "got: 0x%x\n",
V_UI2(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(edesc->tdesc).lptdesc == NULL, "got: %p\n", U(edesc->tdesc).lptdesc);
ok(U(edesc->tdesc).hreftype == 0, "got: %ld\n", U(edesc->tdesc).hreftype);
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
edesc->paramdesc.pparamdescex->cBytes);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_INT, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(V_UI2(&edesc->paramdesc.pparamdescex->varDefaultValue) == 0x3, "got: 0x%x\n",
V_UI2(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->tdesc.lptdesc == NULL, "got: %p\n", edesc->tdesc.lptdesc);
ok(edesc->tdesc.hreftype == 0, "got: %ld\n", edesc->tdesc.hreftype);
ITypeInfo_ReleaseFuncDesc(ti, pfuncdesc);
hres = ITypeInfo_GetFuncDesc(ti, 1, &pfuncdesc);
......@@ -3755,19 +3752,19 @@ todo_wine {
edesc = pfuncdesc->lprgelemdescParam;
ok(edesc->tdesc.vt == VT_VARIANT, "got: %d\n", edesc->tdesc.vt);
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(*edesc).paramdesc.pparamdescex != NULL, "got: %p\n", U(*edesc).paramdesc.pparamdescex);
ok(U(*edesc).paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
U(*edesc).paramdesc.pparamdescex->cBytes);
ok(V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == VT_INT, "got: %d\n",
V_VT(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(V_UI2(&U(*edesc).paramdesc.pparamdescex->varDefaultValue) == 0x3, "got: 0x%x\n",
V_UI2(&U(*edesc).paramdesc.pparamdescex->varDefaultValue));
ok(U(*edesc).paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", U(*edesc).paramdesc.wParamFlags);
ok(U(edesc->tdesc).lptdesc == NULL, "got: %p\n", U(edesc->tdesc).lptdesc);
ok(U(edesc->tdesc).hreftype == 0, "got: %ld\n", U(edesc->tdesc).hreftype);
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->paramdesc.pparamdescex != NULL, "got: %p\n", edesc->paramdesc.pparamdescex);
ok(edesc->paramdesc.pparamdescex->cBytes == sizeof(PARAMDESCEX), "got: %ld\n",
edesc->paramdesc.pparamdescex->cBytes);
ok(V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue) == VT_INT, "got: %d\n",
V_VT(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(V_UI2(&edesc->paramdesc.pparamdescex->varDefaultValue) == 0x3, "got: 0x%x\n",
V_UI2(&edesc->paramdesc.pparamdescex->varDefaultValue));
ok(edesc->paramdesc.wParamFlags == PARAMFLAG_FHASDEFAULT,
"got: 0x%x\n", edesc->paramdesc.wParamFlags);
ok(edesc->tdesc.lptdesc == NULL, "got: %p\n", edesc->tdesc.lptdesc);
ok(edesc->tdesc.hreftype == 0, "got: %ld\n", edesc->tdesc.hreftype);
ITypeInfo_ReleaseFuncDesc(ti, pfuncdesc);
ok(ITypeInfo_Release(ti) == 0, "Object should be freed\n");
......@@ -4338,7 +4335,7 @@ static int get_href_type(ITypeInfo *info, TYPEDESC *tdesc)
ITypeInfo *param;
TYPEATTR *attr;
hr = ITypeInfo_GetRefTypeInfo(info, U(*tdesc).hreftype, &param);
hr = ITypeInfo_GetRefTypeInfo(info, tdesc->hreftype, &param);
ok(hr == S_OK, "GetRefTypeInfo error %#x\n", hr);
hr = ITypeInfo_GetTypeAttr(param, &attr);
ok(hr == S_OK, "GetTypeAttr error %#x\n", hr);
......@@ -4439,7 +4436,7 @@ static void test_dump_typelib(const WCHAR *name)
ELEMDESC e = desc->lprgelemdescParam[p];
OLE_CHECK(ITypeInfo2_GetAllParamCustData(info2,f,p,&cust_data));
printf(" {%s, %s, %s", map_value(e.tdesc.vt, vt_map),
map_value(get_href_type(info, &e.tdesc), tkind_map), dump_param_flags(U(e).paramdesc.wParamFlags));
map_value(get_href_type(info, &e.tdesc), tkind_map), dump_param_flags(e.paramdesc.wParamFlags));
if (cust_data.cCustData) {
printf(", /*#custdata*/ %d, {\n", cust_data.cCustData);
for (c = 0; c < cust_data.cCustData; ++c) {
......@@ -6308,7 +6305,7 @@ static const type_info info[] = {
#define check_type(elem, info) { \
expect_int((elem)->tdesc.vt, (info)->vt); \
expect_hex(U(*(elem)).paramdesc.wParamFlags, (info)->wParamFlags); \
expect_hex((elem)->paramdesc.wParamFlags, (info)->wParamFlags); \
}
static void parse_guid(LPCSTR strGuid, GUID *guid)
......@@ -6474,7 +6471,7 @@ static void test_dump_typelib(const WCHAR *name)
ITypeInfo *param;
TYPEATTR *var_attr;
ole_check(ITypeInfo_GetRefTypeInfo(typeinfo, U(desc->lprgelemdescParam[i].tdesc).hreftype, &param));
ole_check(ITypeInfo_GetRefTypeInfo(typeinfo, desc->lprgelemdescParam[i].tdesc.hreftype, &param));
ole_check(ITypeInfo_GetTypeAttr(param, &var_attr));
ok(var_attr->typekind == fn_info->params[i].type, "expected %#x, got %#x\n", fn_info->params[i].type, var_attr->typekind);
......@@ -6525,12 +6522,12 @@ static void test_dump_typelib(const WCHAR *name)
/* oInst depends on preceding field data sizes (except for unions),
* so it may not be valid to expect it to match info[] on other platforms */
if ((libattr->syskind == info_syskind) || (typeattr->typekind == TKIND_UNION)) {
expect_int(desc->DUMMYUNIONNAME.oInst, var_info->DUMMYUNIONNAME.oInst);
expect_int(desc->oInst, var_info->oInst);
}
} else if(desc->varkind == VAR_CONST) {
check_variant_info(desc->DUMMYUNIONNAME.lpvarValue, &var_info->DUMMYUNIONNAME.varValue);
check_variant_info(desc->lpvarValue, &var_info->varValue);
} else {
expect_null(desc->DUMMYUNIONNAME.lpvarValue);
expect_null(desc->lpvarValue);
}
memset(&cust_data, 0, sizeof(cust_data));
ole_check(ITypeInfo2_GetAllVarCustData(typeinfo2,var,&cust_data));
......@@ -6939,12 +6936,12 @@ static void test_register_typelib_64(void)
ok(hr == S_OK, "got %08lx\n", hr);
elemdesc[0].tdesc.vt = VT_UINT;
U(elemdesc[0]).idldesc.dwReserved = 0;
U(elemdesc[0]).idldesc.wIDLFlags = IDLFLAG_FIN;
elemdesc[0].idldesc.dwReserved = 0;
elemdesc[0].idldesc.wIDLFlags = IDLFLAG_FIN;
elemdesc[1].tdesc.vt = VT_DECIMAL;
U(elemdesc[1]).idldesc.dwReserved = 0;
U(elemdesc[1]).idldesc.wIDLFlags = IDLFLAG_FIN;
elemdesc[1].idldesc.dwReserved = 0;
elemdesc[1].idldesc.wIDLFlags = IDLFLAG_FIN;
memset(&funcdesc, 0, sizeof(FUNCDESC));
funcdesc.funckind = FUNC_PUREVIRTUAL;
......@@ -6959,8 +6956,8 @@ static void test_register_typelib_64(void)
ok(hr == S_OK, "got %08lx\n", hr);
elemdesc2[0].tdesc.vt = VT_UINT;
U(elemdesc2[0]).idldesc.dwReserved = 0;
U(elemdesc2[0]).idldesc.wIDLFlags = IDLFLAG_FIN | IDLFLAG_FOUT;
elemdesc2[0].idldesc.dwReserved = 0;
elemdesc2[0].idldesc.wIDLFlags = IDLFLAG_FIN | IDLFLAG_FOUT;
memset(&funcdesc2, 0, sizeof(FUNCDESC));
funcdesc2.funckind = FUNC_PUREVIRTUAL;
......@@ -7133,7 +7130,7 @@ static void test_SetVarHelpContext(void)
V_VT(&v) = VT_INT;
V_INT(&v) = 1;
U(desc).lpvarValue = &v;
desc.lpvarValue = &v;
hr = ICreateTypeInfo_AddVarDesc(cti, 0, &desc);
ok(hr == S_OK, "got %08lx\n", hr);
......@@ -7166,8 +7163,8 @@ static void test_SetVarHelpContext(void)
ok(pdesc->memid == 0x40000000, "got wrong memid: %lx\n", pdesc->memid);
ok(pdesc->elemdescVar.tdesc.vt == VT_INT, "got wrong vardesc type: %u\n", pdesc->elemdescVar.tdesc.vt);
ok(pdesc->varkind == VAR_CONST, "got wrong varkind: %u\n", pdesc->varkind);
ok(V_VT(U(*pdesc).lpvarValue) == VT_INT, "got wrong value type: %u\n", V_VT(U(*pdesc).lpvarValue));
ok(V_INT(U(*pdesc).lpvarValue) == 1, "got wrong value: 0x%x\n", V_INT(U(*pdesc).lpvarValue));
ok(V_VT(pdesc->lpvarValue) == VT_INT, "got wrong value type: %u\n", V_VT(pdesc->lpvarValue));
ok(V_INT(pdesc->lpvarValue) == 1, "got wrong value: 0x%x\n", V_INT(pdesc->lpvarValue));
hr = ITypeInfo_GetDocumentation(ti, pdesc->memid, NULL, NULL, &ctx, NULL);
ok(hr == S_OK, "got %08lx\n", hr);
......@@ -7219,8 +7216,8 @@ static void test_SetFuncAndParamNames(void)
/* put method */
memset(&edesc, 0, sizeof(edesc));
edesc.tdesc.vt = VT_BSTR;
U(edesc).idldesc.dwReserved = 0;
U(edesc).idldesc.wIDLFlags = IDLFLAG_FIN;
edesc.idldesc.dwReserved = 0;
edesc.idldesc.wIDLFlags = IDLFLAG_FIN;
funcdesc.lprgelemdescParam = &edesc;
funcdesc.invkind = INVOKE_PROPERTYPUT;
......@@ -7360,7 +7357,7 @@ static void test_SetDocString(void)
V_VT(&v) = VT_INT;
V_INT(&v) = 1;
U(desc).lpvarValue = &v;
desc.lpvarValue = &v;
hr = ICreateTypeInfo_AddVarDesc(cti, 0, &desc);
ok(hr == S_OK, "got %08lx\n", hr);
......@@ -7428,8 +7425,8 @@ static void test_SetDocString(void)
ok(pdesc->memid == 0x40000000, "got wrong memid: %lx\n", pdesc->memid);
ok(pdesc->elemdescVar.tdesc.vt == VT_INT, "got wrong vardesc type: %u\n", pdesc->elemdescVar.tdesc.vt);
ok(pdesc->varkind == VAR_CONST, "got wrong varkind: %u\n", pdesc->varkind);
ok(V_VT(U(*pdesc).lpvarValue) == VT_INT, "got wrong value type: %u\n", V_VT(U(*pdesc).lpvarValue));
ok(V_INT(U(*pdesc).lpvarValue) == 1, "got wrong value: 0x%x\n", V_INT(U(*pdesc).lpvarValue));
ok(V_VT(pdesc->lpvarValue) == VT_INT, "got wrong value type: %u\n", V_VT(pdesc->lpvarValue));
ok(V_INT(pdesc->lpvarValue) == 1, "got wrong value: 0x%x\n", V_INT(pdesc->lpvarValue));
hr = ITypeInfo_GetDocumentation(ti, pdesc->memid, &namestr, &docstr, NULL, NULL);
ok(hr == S_OK, "got %08lx\n", hr);
......@@ -7863,11 +7860,11 @@ static void testTDA(ITypeLib *tl, struct _TDATest *TDATest,
tdesc.vt = TDATest->vt;
if(TDATest->aux == AUX_TDESC)
U(tdesc).lptdesc = &TDATest->tdesc;
tdesc.lptdesc = &TDATest->tdesc;
else if(TDATest->aux == AUX_ADESC)
U(tdesc).lpadesc = &TDATest->adesc;
tdesc.lpadesc = &TDATest->adesc;
else if(TDATest->aux == AUX_HREF)
U(tdesc).hreftype = hreftype;
tdesc.hreftype = hreftype;
hr = ICreateTypeInfo_SetTypeDescAlias(cti, &tdesc);
ok(hr == S_OK, "for VT %u, got %08lx\n", TDATest->vt, hr);
......@@ -7921,16 +7918,16 @@ static void testTDA(ITypeLib *tl, struct _TDATest *TDATest,
switch(TDATest->aux){
case AUX_HREF:
ok(U(typeattr->tdescAlias).hreftype == hreftype, "got wrong hreftype for VT %u: 0x%lx\n", TDATest->vt, U(typeattr->tdescAlias).hreftype);
ok(typeattr->tdescAlias.hreftype == hreftype, "got wrong hreftype for VT %u: 0x%lx\n", TDATest->vt, typeattr->tdescAlias.hreftype);
break;
case AUX_TDESC:
ok(U(typeattr->tdescAlias).lptdesc->vt == TDATest->tdesc.vt, "got wrong typedesc VT for VT %u: 0x%x\n", TDATest->vt, U(typeattr->tdescAlias).lptdesc->vt);
ok(typeattr->tdescAlias.lptdesc->vt == TDATest->tdesc.vt, "got wrong typedesc VT for VT %u: 0x%x\n", TDATest->vt, typeattr->tdescAlias.lptdesc->vt);
break;
case AUX_ADESC:
ok(U(typeattr->tdescAlias).lpadesc->tdescElem.vt == TDATest->adesc.tdescElem.vt, "got wrong arraydesc element VT for VT %u: 0x%x\n", TDATest->vt, U(typeattr->tdescAlias).lpadesc->tdescElem.vt);
ok(U(typeattr->tdescAlias).lpadesc->cDims == TDATest->adesc.cDims, "got wrong arraydesc dimension count for VT %u: 0x%x\n", TDATest->vt, U(typeattr->tdescAlias).lpadesc->cDims);
ok(U(typeattr->tdescAlias).lpadesc->rgbounds[0].cElements == TDATest->adesc.rgbounds[0].cElements, "got wrong arraydesc element count for VT %u: 0x%lx\n", TDATest->vt, U(typeattr->tdescAlias).lpadesc->rgbounds[0].cElements);
ok(U(typeattr->tdescAlias).lpadesc->rgbounds[0].lLbound == TDATest->adesc.rgbounds[0].lLbound, "got wrong arraydesc lower bound for VT %u: 0x%lx\n", TDATest->vt, U(typeattr->tdescAlias).lpadesc->rgbounds[0].lLbound);
ok(typeattr->tdescAlias.lpadesc->tdescElem.vt == TDATest->adesc.tdescElem.vt, "got wrong arraydesc element VT for VT %u: 0x%x\n", TDATest->vt, typeattr->tdescAlias.lpadesc->tdescElem.vt);
ok(typeattr->tdescAlias.lpadesc->cDims == TDATest->adesc.cDims, "got wrong arraydesc dimension count for VT %u: 0x%x\n", TDATest->vt, typeattr->tdescAlias.lpadesc->cDims);
ok(typeattr->tdescAlias.lpadesc->rgbounds[0].cElements == TDATest->adesc.rgbounds[0].cElements, "got wrong arraydesc element count for VT %u: 0x%lx\n", TDATest->vt, typeattr->tdescAlias.lpadesc->rgbounds[0].cElements);
ok(typeattr->tdescAlias.lpadesc->rgbounds[0].lLbound == TDATest->adesc.rgbounds[0].lLbound, "got wrong arraydesc lower bound for VT %u: 0x%lx\n", TDATest->vt, typeattr->tdescAlias.lpadesc->rgbounds[0].lLbound);
break;
}
......@@ -8499,7 +8496,7 @@ static void test_DeleteFuncDesc(void)
funcdesc.invkind = INVOKE_PROPERTYGET;
funcdesc.callconv = CC_STDCALL;
funcdesc.elemdescFunc.tdesc.vt = VT_BSTR;
U(funcdesc.elemdescFunc).idldesc.wIDLFlags = IDLFLAG_NONE;
funcdesc.elemdescFunc.idldesc.wIDLFlags = IDLFLAG_NONE;
hr = ICreateTypeInfo2_AddFuncDesc(createti2, 0, &funcdesc);
ok(hr == S_OK, "Failed to add a funcdesc, hr %#lx.\n", hr);
......
......@@ -26,7 +26,6 @@
#define COBJMACROS
#define CONST_VTABLE
#define NONAMELESSUNION
#include "windef.h"
#include "winbase.h"
......@@ -461,19 +460,19 @@ static void init(void)
/* Functions to set a DECIMAL */
static void setdec(DECIMAL* dec, BYTE scl, BYTE sgn, ULONG hi32, ULONG64 lo64)
{
S(U(*dec)).scale = scl;
S(U(*dec)).sign = sgn;
dec->scale = scl;
dec->sign = sgn;
dec->Hi32 = hi32;
U1(*dec).Lo64 = lo64;
dec->Lo64 = lo64;
}
static void setdec64(DECIMAL* dec, BYTE scl, BYTE sgn, ULONG hi32, ULONG mid32, ULONG lo32)
{
S(U(*dec)).scale = scl;
S(U(*dec)).sign = sgn;
dec->scale = scl;
dec->sign = sgn;
dec->Hi32 = hi32;
S1(U1(*dec)).Mid32 = mid32;
S1(U1(*dec)).Lo32 = lo32;
dec->Mid32 = mid32;
dec->Lo32 = lo32;
}
/* return the string text of a given variant type */
......@@ -574,7 +573,7 @@ static const char *variantstr( const VARIANT *var )
case VT_UINT:
sprintf( vtstr_buffer[vtstr_current], "VT_UINT(%d)", V_UINT(var) ); break;
case VT_CY:
sprintf( vtstr_buffer[vtstr_current], "VT_CY(%lx%08lx)", S(V_CY(var)).Hi, S(V_CY(var)).Lo ); break;
sprintf( vtstr_buffer[vtstr_current], "VT_CY(%lx%08lx)", V_CY(var).Hi, V_CY(var).Lo ); break;
case VT_DATE:
sprintf( vtstr_buffer[vtstr_current], "VT_DATE(%g)", V_DATE(var) ); break;
default:
......@@ -2543,10 +2542,10 @@ static const char *szFailOk = "Call failed, hres = %08x\n";
ok(V_CY(&vOut).int64 == (LONG64)(val * CY_MULTIPLIER), "Expected r8 = %#I64x, got %#I64x\n", \
(LONG64)val, V_CY(&vOut).int64); }
#define EXPECT_DECIMAL(valHi, valMid, valLo) EXPECT_OK { EXPECT_TYPE(VT_DECIMAL); \
ok((V_DECIMAL(&vOut).Hi32 == valHi) && (S1(U1(V_DECIMAL(&vOut))).Mid32 == valMid) && \
(S1(U1(V_DECIMAL(&vOut))).Lo32 == valLo), \
ok(V_DECIMAL(&vOut).Hi32 == valHi && V_DECIMAL(&vOut).Mid32 == valMid && \
V_DECIMAL(&vOut).Lo32 == valLo, \
"Expected decimal = %x/0x%x%08x, got %lx/0x%lx%08lx\n", valHi, valMid, valLo, \
V_DECIMAL(&vOut).Hi32, S1(U1(V_DECIMAL(&vOut))).Mid32, S1(U1(V_DECIMAL(&vOut))).Lo32); }
V_DECIMAL(&vOut).Hi32, V_DECIMAL(&vOut).Mid32, V_DECIMAL(&vOut).Lo32); }
static void test_VarNumFromParseNum(void)
{
......@@ -3265,11 +3264,11 @@ static void test_VarNot(void)
VARNOT(BSTR, (BSTR)szTrue, BOOL, VARIANT_FALSE);
VARNOT(BSTR, (BSTR)szFalse, BOOL, VARIANT_TRUE);
S(U(*pdec)).sign = DECIMAL_NEG;
S(U(*pdec)).scale = 0;
pdec->sign = DECIMAL_NEG;
pdec->scale = 0;
pdec->Hi32 = 0;
S1(U1(*pdec)).Mid32 = 0;
S1(U1(*pdec)).Lo32 = 1;
pdec->Mid32 = 0;
pdec->Lo32 = 1;
VARNOT(DECIMAL,*pdec,I4,0);
pcy->int64 = 10000;
......@@ -3856,8 +3855,9 @@ static void test_VarMod(void)
else if (l == VT_DECIMAL)
{
V_DECIMAL(&v1).Hi32 = 0;
U1(V_DECIMAL(&v1)).Lo64 = 100;
U(V_DECIMAL(&v1)).signscale = 0;
V_DECIMAL(&v1).Lo64 = 100;
V_DECIMAL(&v1).sign = 0;
V_DECIMAL(&v1).scale = 0;
}
else
V_I4(&v1) = 10000;
......@@ -3877,8 +3877,9 @@ static void test_VarMod(void)
else if (r == VT_DECIMAL)
{
V_DECIMAL(&v2).Hi32 = 0;
U1(V_DECIMAL(&v2)).Lo64 = 100;
U(V_DECIMAL(&v2)).signscale = 0;
V_DECIMAL(&v2).Lo64 = 100;
V_DECIMAL(&v2).sign = 0;
V_DECIMAL(&v2).scale = 0;
}
else
V_I4(&v2) = 10000;
......@@ -4108,11 +4109,11 @@ static void test_VarFix(void)
"VarFix: expected 0x0,%d got 0x%lX,%d\n", VT_NULL, hres, V_VT(&vDst));
V_VT(&v) = VT_DECIMAL;
S(U(*pdec)).sign = DECIMAL_NEG;
S(U(*pdec)).scale = 0;
pdec->sign = DECIMAL_NEG;
pdec->scale = 0;
pdec->Hi32 = 0;
S1(U1(*pdec)).Mid32 = 0;
S1(U1(*pdec)).Lo32 = 1;
pdec->Mid32 = 0;
pdec->Lo32 = 1;
hres = pVarFix(&v,&vDst);
ok(hres == S_OK && V_VT(&vDst) == VT_DECIMAL && !memcmp(&V_DECIMAL(&v), &V_DECIMAL(&vDst), sizeof(DECIMAL)),
"VarFix: expected 0x0,%d,identical, got 0x%lX,%d\n", VT_DECIMAL,
......@@ -4223,11 +4224,11 @@ static void test_VarInt(void)
"VarInt: expected 0x0,%d got 0x%lX,%d\n", VT_NULL, hres, V_VT(&vDst));
V_VT(&v) = VT_DECIMAL;
S(U(*pdec)).sign = DECIMAL_NEG;
S(U(*pdec)).scale = 0;
pdec->sign = DECIMAL_NEG;
pdec->scale = 0;
pdec->Hi32 = 0;
S1(U1(*pdec)).Mid32 = 0;
S1(U1(*pdec)).Lo32 = 1;
pdec->Mid32 = 0;
pdec->Lo32 = 1;
hres = pVarInt(&v,&vDst);
ok(hres == S_OK && V_VT(&vDst) == VT_DECIMAL && !memcmp(&V_DECIMAL(&v), &V_DECIMAL(&vDst), sizeof(DECIMAL)),
"VarInt: expected 0x0,%d,identical, got 0x%lX,%d\n", VT_DECIMAL,
......@@ -4348,23 +4349,23 @@ static void test_VarNeg(void)
"VarNeg: expected 0x0,%d got 0x%lX,%d\n", VT_NULL, hres, V_VT(&vDst));
V_VT(&v) = VT_DECIMAL;
S(U(*pdec)).sign = DECIMAL_NEG;
S(U(*pdec)).scale = 0;
pdec->sign = DECIMAL_NEG;
pdec->scale = 0;
pdec->Hi32 = 0;
S1(U1(*pdec)).Mid32 = 0;
S1(U1(*pdec)).Lo32 = 1;
pdec->Mid32 = 0;
pdec->Lo32 = 1;
hres = pVarNeg(&v,&vDst);
ok(hres == S_OK && V_VT(&vDst) == VT_DECIMAL &&
S(U(V_DECIMAL(&vDst))).sign == 0,
V_DECIMAL(&vDst).sign == 0,
"VarNeg: expected 0x0,%d,0x00, got 0x%lX,%d,%02x\n", VT_DECIMAL,
hres, V_VT(&vDst), S(U(V_DECIMAL(&vDst))).sign);
hres, V_VT(&vDst), V_DECIMAL(&vDst).sign);
S(U(*pdec)).sign = 0;
pdec->sign = 0;
hres = pVarNeg(&v,&vDst);
ok(hres == S_OK && V_VT(&vDst) == VT_DECIMAL &&
S(U(V_DECIMAL(&vDst))).sign == DECIMAL_NEG,
V_DECIMAL(&vDst).sign == DECIMAL_NEG,
"VarNeg: expected 0x0,%d,0x7f, got 0x%lX,%d,%02x\n", VT_DECIMAL,
hres, V_VT(&vDst), S(U(V_DECIMAL(&vDst))).sign);
hres, V_VT(&vDst), V_DECIMAL(&vDst).sign);
V_VT(&v) = VT_CY;
pcy->int64 = -10000;
......@@ -4512,25 +4513,25 @@ static void test_VarRound(void)
pdec = &V_DECIMAL(&v);
V_VT(&v) = VT_DECIMAL;
S(U(*pdec)).sign = ptr->source.sign;
S(U(*pdec)).scale = ptr->source.scale;
pdec->sign = ptr->source.sign;
pdec->scale = ptr->source.scale;
pdec->Hi32 = ptr->source.Hi32;
S1(U1(*pdec)).Mid32 = ptr->source.Mid32;
S1(U1(*pdec)).Lo32 = ptr->source.Lo32;
pdec->Mid32 = ptr->source.Mid32;
pdec->Lo32 = ptr->source.Lo32;
VariantInit(&vDst);
hres = pVarRound(&v, ptr->dec, &vDst);
ok(hres == S_OK, "%d: got 0x%08lx\n", i, hres);
if (hres == S_OK)
{
ok(V_VT(&vDst) == VT_DECIMAL, "%d: got VT %d, expected VT_DECIMAL\n", i, V_VT(&vDst));
ok(S(U(V_DECIMAL(&vDst))).sign == ptr->ret.sign, "%d: got sign 0x%02x, expected 0x%02x\n",
i, S(U(V_DECIMAL(&vDst))).sign, ptr->ret.sign);
ok(V_DECIMAL(&vDst).sign == ptr->ret.sign, "%d: got sign 0x%02x, expected 0x%02x\n",
i, V_DECIMAL(&vDst).sign, ptr->ret.sign);
ok(V_DECIMAL(&vDst).Hi32 == ptr->ret.Hi32, "%d: got Hi32 %ld, expected %ld\n",
i, V_DECIMAL(&vDst).Hi32, ptr->ret.Hi32);
ok(S1(U1(V_DECIMAL(&vDst))).Mid32 == ptr->ret.Mid32, "%d: got Mid32 %ld, expected %ld\n",
i, S1(U1(V_DECIMAL(&vDst))).Mid32, ptr->ret.Mid32);
ok(S1(U1(V_DECIMAL(&vDst))).Lo32 == ptr->ret.Lo32, "%d: got Lo32 %ld, expected %ld\n",
i, S1(U1(V_DECIMAL(&vDst))).Lo32, ptr->ret.Lo32);
ok(V_DECIMAL(&vDst).Mid32 == ptr->ret.Mid32, "%d: got Mid32 %ld, expected %ld\n",
i, V_DECIMAL(&vDst).Mid32, ptr->ret.Mid32);
ok(V_DECIMAL(&vDst).Lo32 == ptr->ret.Lo32, "%d: got Lo32 %ld, expected %ld\n",
i, V_DECIMAL(&vDst).Lo32, ptr->ret.Lo32);
}
}
......
......@@ -101,13 +101,13 @@ static BOOL has_locales;
#define CONVERT_CY(func,val) in.int64 = (LONGLONG)(val * CY_MULTIPLIER); hres = func(in, &out)
#define CONVERT_CY64(func,hi,lo) S(in).Hi = hi; S(in).Lo = lo; in.int64 *= CY_MULTIPLIER; hres = func(in, &out)
#define CONVERT_CY64(func,hi,lo) in.Hi = hi; in.Lo = lo; in.int64 *= CY_MULTIPLIER; hres = func(in, &out)
#define SETDEC(dec, scl, sgn, hi, lo) S(U(dec)).scale = (BYTE)scl; S(U(dec)).sign = (BYTE)sgn; \
dec.Hi32 = (ULONG)hi; U1(dec).Lo64 = (ULONG64)lo
#define SETDEC(dec, scl, sgn, hi, lo) dec.scale = (BYTE)scl; dec.sign = (BYTE)sgn; \
dec.Hi32 = (ULONG)hi; dec.Lo64 = (ULONG64)lo
#define SETDEC64(dec, scl, sgn, hi, mid, lo) S(U(dec)).scale = (BYTE)scl; S(U(dec)).sign = (BYTE)sgn; \
dec.Hi32 = (ULONG)hi; S1(U1(dec)).Mid32 = mid; S1(U1(dec)).Lo32 = lo;
#define SETDEC64(dec, scl, sgn, hi, mid, lo) dec.scale = (BYTE)scl; dec.sign = (BYTE)sgn; \
dec.Hi32 = (ULONG)hi; dec.Mid32 = mid; dec.Lo32 = lo;
#define CONVERT_DEC(func,scl,sgn,hi,lo) SETDEC(in,scl,sgn,hi,lo); hres = func(&in, &out)
......@@ -210,7 +210,7 @@ static BOOL has_locales;
hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_CY); \
ok(hres == S_OK && V_VT(&vDst) == VT_CY && V_CY(&vDst).int64 == CY_MULTIPLIER, \
"->VT_CY hres=0x%lX, type=%d (should be VT_CY), value (%08lx,%08lx) (should be CY_MULTIPLIER)\n", \
hres, V_VT(&vDst), S(V_CY(&vDst)).Hi, S(V_CY(&vDst)).Lo); \
hres, V_VT(&vDst), V_CY(&vDst).Hi, V_CY(&vDst).Lo); \
if (V_VT(&vSrc) != VT_DATE) \
{ \
hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_BSTR); \
......@@ -221,11 +221,11 @@ static BOOL has_locales;
} \
hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_DECIMAL); \
ok(hres == S_OK && V_VT(&vDst) == VT_DECIMAL && \
S(U(V_DECIMAL(&vDst))).sign == 0 && S(U(V_DECIMAL(&vDst))).scale == 0 && \
V_DECIMAL(&vDst).Hi32 == 0 && U1(V_DECIMAL(&vDst)).Lo64 == (ULONGLONG)in, \
V_DECIMAL(&vDst).sign == 0 && V_DECIMAL(&vDst).scale == 0 && \
V_DECIMAL(&vDst).Hi32 == 0 && V_DECIMAL(&vDst).Lo64 == (ULONGLONG)in, \
"->VT_DECIMAL hres=0x%lX, type=%d (should be VT_DECIMAL), sign=%d, scale=%d, hi=%lu, lo=(%8lx %8lx),\n", \
hres, V_VT(&vDst), S(U(V_DECIMAL(&vDst))).sign, S(U(V_DECIMAL(&vDst))).scale, \
V_DECIMAL(&vDst).Hi32, S1(U1(V_DECIMAL(&vDst))).Mid32, S1(U1(V_DECIMAL(&vDst))).Lo32); \
hres, V_VT(&vDst), V_DECIMAL(&vDst).sign, V_DECIMAL(&vDst).scale, \
V_DECIMAL(&vDst).Hi32, V_DECIMAL(&vDst).Mid32, V_DECIMAL(&vDst).Lo32); \
hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_EMPTY); \
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)); \
hres = VariantChangeTypeEx(&vDst, &vSrc, 0, 0, VT_NULL); \
......@@ -3144,12 +3144,12 @@ static void test_VarDateChangeTypeEx(void)
#define EXPECTCY(x) \
ok((hres == S_OK && out.int64 == (LONGLONG)(x*CY_MULTIPLIER)), \
"expected " #x "*CY_MULTIPLIER, got (%8lx %8lx); hres=0x%08lx\n", S(out).Hi, S(out).Lo, hres)
"expected " #x "*CY_MULTIPLIER, got (%8lx %8lx); hres=0x%08lx\n", out.Hi, out.Lo, hres)
#define EXPECTCY64(x,y) \
ok(hres == S_OK && S(out).Hi == (LONG)x && S(out).Lo == y, \
ok(hres == S_OK && out.Hi == (LONG)x && out.Lo == y, \
"expected " #x " " #y " (%lu,%lu), got (%lu,%lu); hres=0x%08lx\n", \
(ULONG)(x), (ULONG)(y), S(out).Hi, S(out).Lo, hres)
(ULONG)(x), (ULONG)(y), out.Hi, out.Lo, hres)
static void test_VarCyFromI1(void)
{
......@@ -3618,25 +3618,25 @@ static void test_VarCyInt(void)
#define CONV_TYPE DECIMAL
#define EXPECTDEC(scl, sgn, hi, lo) ok(hres == S_OK && \
S(U(out)).scale == (BYTE)(scl) && S(U(out)).sign == (BYTE)(sgn) && \
out.Hi32 == (ULONG)(hi) && U1(out).Lo64 == (ULONG64)(lo), \
out.scale == (BYTE)(scl) && out.sign == (BYTE)(sgn) && \
out.Hi32 == (ULONG)(hi) && out.Lo64 == (ULONG64)(lo), \
"expected (%d,%d,%d,%I64x), got (%d,%d,%ld,(%lx %lx)) hres 0x%08lx\n", \
scl, sgn, hi, (LONG64)(lo), S(U(out)).scale, \
S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres)
scl, sgn, hi, (LONG64)(lo), out.scale, \
out.sign, out.Hi32, out.Mid32, out.Lo32, hres)
#define EXPECTDEC64(scl, sgn, hi, mid, lo) ok(hres == S_OK && \
S(U(out)).scale == (BYTE)(scl) && S(U(out)).sign == (BYTE)(sgn) && \
out.Hi32 == (ULONG)(hi) && S1(U1(out)).Mid32 == (ULONG)(mid) && \
S1(U1(out)).Lo32 == (ULONG)(lo), \
out.scale == (BYTE)(scl) && out.sign == (BYTE)(sgn) && \
out.Hi32 == (ULONG)(hi) && out.Mid32 == (ULONG)(mid) && \
out.Lo32 == (ULONG)(lo), \
"expected (%d,%d,%d,(%lx %lx)), got (%d,%d,%ld,(%lx %lx)) hres 0x%08lx\n", \
scl, sgn, hi, (LONG)(mid), (LONG)(lo), S(U(out)).scale, \
S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres)
scl, sgn, hi, (LONG)(mid), (LONG)(lo), out.scale, \
out.sign, out.Hi32, out.Mid32, out.Lo32, hres)
/* expect either a positive or negative zero */
#define EXPECTDECZERO() ok(hres == S_OK && S(U(out)).scale == 0 && \
(S(U(out)).sign == 0 || S(U(out)).sign == 0x80) && out.Hi32 == 0 && U1(out).Lo64 == 0, \
#define EXPECTDECZERO() ok(hres == S_OK && out.scale == 0 && \
(out.sign == 0 || out.sign == 0x80) && out.Hi32 == 0 && out.Lo64 == 0, \
"expected zero, got (%d,%d,%ld,(%lx %lx)) hres 0x%08lx\n", \
S(U(out)).scale, S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres)
out.scale, out.sign, out.Hi32, out.Mid32, out.Lo32, hres)
#define EXPECTDECI if (i < 0) EXPECTDEC(0, 0x80, 0, -i); else EXPECTDEC(0, 0, 0, i)
......@@ -3890,14 +3890,14 @@ static void test_VarDecAdd(void)
EXPECTDEC64(0,0,0xffffffff,0xffffffff,0xfffffffe);
SETDEC64(l,0,0,0xffffffff,0xffffffff,0xffffffff);SETDEC(r,0,0,0,1); MATH2(VarDecAdd);
ok(hres == DISP_E_OVERFLOW,"Expected overflow, got (%d,%d,%ld,(%8lx,%8lx)x) hres 0x%08lx\n",
S(U(out)).scale, S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres);
out.scale, out.sign, out.Hi32, out.Mid32, out.Lo32, hres);
SETDEC64(l,1,0,0xffffffff,0xffffffff,0xffffffff);SETDEC(r,1,0,0,1); MATH2(VarDecAdd);
EXPECTDEC64(0,0,0x19999999,0x99999999,0x9999999A);
SETDEC64(l,0,0,0xe22ea493,0xb30310a7,0x70000000);SETDEC64(r,0,0,0xe22ea493,0xb30310a7,0x70000000); MATH2(VarDecAdd);
ok(hres == DISP_E_OVERFLOW,"Expected overflow, got (%d,%d,%ld,(%8lx,%8lx)x) hres 0x%08lx\n",
S(U(out)).scale, S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres);
out.scale, out.sign, out.Hi32, out.Mid32, out.Lo32, hres);
SETDEC64(l,1,0,0xe22ea493,0xb30310a7,0x70000000);SETDEC64(r,1,0,0xe22ea493,0xb30310a7,0x70000000); MATH2(VarDecAdd);
EXPECTDEC64(0,0,0x2d3c8750,0xbd670354,0xb0000000);
......@@ -3907,15 +3907,15 @@ static void test_VarDecAdd(void)
SETDEC(l,3,0,0,123456); SETDEC64(r,0,0,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF); MATH2(VarDecAdd);
ok(hres == DISP_E_OVERFLOW,"Expected overflow, got (%d,%d,%ld,(%8lx,%8lx)x) hres 0x%08lx\n",
S(U(out)).scale, S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres);
out.scale, out.sign, out.Hi32, out.Mid32, out.Lo32, hres);
SETDEC(l,4,0,0,123456); SETDEC64(r,0,0,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF); MATH2(VarDecAdd);
ok(hres == DISP_E_OVERFLOW,"Expected overflow, got (%d,%d,%ld,(%8lx,%8lx)x) hres 0x%08lx\n",
S(U(out)).scale, S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres);
out.scale, out.sign, out.Hi32, out.Mid32, out.Lo32, hres);
SETDEC(l,5,0,0,123456); SETDEC64(r,0,0,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF); MATH2(VarDecAdd);
ok(hres == DISP_E_OVERFLOW,"Expected overflow, got (%d,%d,%ld,(%8lx,%8lx)x) hres 0x%08lx\n",
S(U(out)).scale, S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres);
out.scale, out.sign, out.Hi32, out.Mid32, out.Lo32, hres);
SETDEC(l,6,0,0,123456); SETDEC64(r,0,0,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF);
MATH2(VarDecAdd); EXPECTDEC64(0,0,-1,0xFFFFFFFF,0xFFFFFFFF);
......@@ -3974,7 +3974,7 @@ static void test_VarDecMul(void)
/* actual overflow - right operand is 10 times the previous value */
SETDEC64(l,0,0,0,0xFFFFFFFF,0xFFFFFFFF); SETDEC64(r,0,0,0,4,0xA817C800); MATH2(VarDecMul);
ok(hres == DISP_E_OVERFLOW,"Expected overflow, got (%d,%d,%ld,(%8lx,%8lx)x) hres 0x%08lx\n",
S(U(out)).scale, S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres);
out.scale, out.sign, out.Hi32, out.Mid32, out.Lo32, hres);
/* here, native oleaut32 has an opportunity to avert the overflow, by reducing the scale of the result */
SETDEC64(l,1,0,0,0xFFFFFFFF,0xFFFFFFFF); SETDEC64(r,0,0,0,4,0xA817C800); MATH2(VarDecMul);EXPECTDEC64(0,0,1999999999,0xFFFFFFFF,0x88CA6C00);
......@@ -3983,7 +3983,7 @@ static void test_VarDecMul(void)
/* actual overflow - right operand is 10 times the previous value */
SETDEC64(l,0,0,1,0xFFFFFFFF,0xFFFFFFFE); SETDEC64(r,0,0,0,2,0x540BE400); MATH2(VarDecMul);
ok(hres == DISP_E_OVERFLOW,"Expected overflow, got (%d,%d,%ld,(%8lx,%8lx)x) hres 0x%08lx\n",
S(U(out)).scale, S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres);
out.scale, out.sign, out.Hi32, out.Mid32, out.Lo32, hres);
/* here, native oleaut32 has an opportunity to avert the overflow, by reducing the scale of the result */
SETDEC64(l,1,0,1,0xFFFFFFFF,0xFFFFFFFE); SETDEC64(r,0,0,0,2,0x540BE400); MATH2(VarDecMul);EXPECTDEC64(0,0,1999999999,0xFFFFFFFF,0x88CA6C00);
......@@ -4011,7 +4011,7 @@ static void test_VarDecDiv(void)
*/
SETDEC(l,1,0,0,45); SETDEC(r,1,0,0,9); MATH2(VarDecDiv); EXPECTDEC(0,0,0,5);
SETDEC(l,2,0,0,450); SETDEC(r,1,0,0,9); MATH2(VarDecDiv);
if (S(U(out)).scale == 1) EXPECTDEC(1,0,0,50);
if (out.scale == 1) EXPECTDEC(1,0,0,50);
else EXPECTDEC(0,0,0,5);
/* inexact divisions */
......@@ -4033,10 +4033,10 @@ static void test_VarDecDiv(void)
/* oddballs */
SETDEC(l,0,0,0,0); SETDEC(r,0,0,0,0); MATH2(VarDecDiv);/* indeterminate */
ok(hres == DISP_E_DIVBYZERO,"Expected division-by-zero, got (%d,%d,%ld,(%8lx,%8lx)x) hres 0x%08lx\n",
S(U(out)).scale, S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres);
out.scale, out.sign, out.Hi32, out.Mid32, out.Lo32, hres);
SETDEC(l,0,0,0,1); SETDEC(r,0,0,0,0); MATH2(VarDecDiv);/* division by zero */
ok(hres == DISP_E_DIVBYZERO,"Expected division-by-zero, got (%d,%d,%ld,(%8lx,%8lx)x) hres 0x%08lx\n",
S(U(out)).scale, S(U(out)).sign, out.Hi32, S1(U1(out)).Mid32, S1(U1(out)).Lo32, hres);
out.scale, out.sign, out.Hi32, out.Mid32, out.Lo32, hres);
}
......@@ -4613,8 +4613,8 @@ static void _BSTR_CY(LONG a, LONG b, const char *str, LCID lcid, int line)
char buff[256];
CY l;
S(l).Lo = b;
S(l).Hi = a;
l.Lo = b;
l.Hi = a;
hr = VarBstrFromCy(l, lcid, LOCALE_NOUSEROVERRIDE, &bstr);
ok(hr == S_OK, "got hr 0x%08lx\n", hr);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment