oledb32/tests: Add CanConvert tests.

This commit is contained in:
Huw Davies 2009-09-17 14:35:25 +01:00 committed by Alexandre Julliard
parent 05926a10ff
commit 5028334c9a
2 changed files with 77 additions and 1 deletions

View File

@ -3,7 +3,7 @@ TOPOBJDIR = ../../..
SRCDIR = @srcdir@
VPATH = @srcdir@
TESTDLL = oledb32.dll
IMPORTS = ole32 gdi32 advapi32 kernel32
IMPORTS = oleaut32 ole32 gdi32 advapi32 kernel32
CTESTS = \
convert.c

View File

@ -144,9 +144,85 @@ static void test_dcinfo(void)
IDCInfo_Release(info);
}
struct can_convert
{
DBTYPE type;
DWORD can_convert_to;
} simple_convert[] =
{
{DBTYPE_EMPTY, 0x23bfd9ff},
{DBTYPE_NULL, 0x00001002},
{DBTYPE_I2, 0x3b9fd9ff},
{DBTYPE_I4, 0x3bdfd9ff},
{DBTYPE_R4, 0x3b9fd9ff},
{DBTYPE_R8, 0x3b9fd9ff},
{DBTYPE_CY, 0x039fd97f},
{DBTYPE_DATE, 0x399f99bf},
{DBTYPE_BSTR, 0x3bffd9ff},
{DBTYPE_IDISPATCH, 0x3bffffff},
{DBTYPE_ERROR, 0x01001500},
{DBTYPE_BOOL, 0x039fd9ff},
{DBTYPE_VARIANT, 0x3bffffff},
{DBTYPE_IUNKNOWN, 0x00003203},
{DBTYPE_DECIMAL, 0x3b9fd97f},
{DBTYPE_I1, 0x3b9fd9ff},
{DBTYPE_UI1, 0x3b9fd9ff},
{DBTYPE_UI2, 0x3b9fd9ff},
{DBTYPE_UI4, 0x3bdfd9ff},
{DBTYPE_I8, 0x03dfd97f},
{DBTYPE_UI8, 0x03dfd97f},
{DBTYPE_GUID, 0x01e01103},
{DBTYPE_BYTES, 0x01fc110b},
{DBTYPE_STR, 0x3bffd9ff},
{DBTYPE_WSTR, 0x3bffd9ff},
{DBTYPE_NUMERIC, 0x039fd97f},
{DBTYPE_UDT, 0x00000000},
{DBTYPE_DBDATE, 0x39801183},
{DBTYPE_DBTIME, 0x39801183},
{DBTYPE_DBTIMESTAMP, 0x39801183}
};
static void test_canconvert(void)
{
IDataConvert *convert;
HRESULT hr;
int src_idx, dst_idx;
hr = CoCreateInstance(&CLSID_OLEDB_CONVERSIONLIBRARY, NULL, CLSCTX_INPROC_SERVER, &IID_IDataConvert, (void**)&convert);
if(FAILED(hr))
{
win_skip("Unable to load oledb conversion library\n");
return;
}
for(src_idx = 0; src_idx < sizeof(simple_convert) / sizeof(simple_convert[0]); src_idx++)
for(dst_idx = 0; dst_idx < sizeof(simple_convert) / sizeof(simple_convert[0]); dst_idx++)
{
BOOL expect;
hr = IDataConvert_CanConvert(convert, simple_convert[src_idx].type, simple_convert[dst_idx].type);
expect = (simple_convert[src_idx].can_convert_to >> dst_idx) & 1;
todo_wine
ok((hr == S_OK && expect == TRUE) ||
(hr == S_FALSE && expect == FALSE),
"%04x -> %04x: got %08x expect conversion to be %spossible\n", simple_convert[src_idx].type,
simple_convert[dst_idx].type, hr, expect ? "" : "not ");
}
IDataConvert_Release(convert);
}
START_TEST(convert)
{
OleInitialize(NULL);
test_dcinfo();
test_canconvert();
OleUninitialize();
}