Module: wine Branch: master Commit: 9d11f0f9624b03c1148922180429cf43923567da URL: http://source.winehq.org/git/wine.git/?a=commit;h=9d11f0f9624b03c11489221804...
Author: Alistair Leslie-Hughes leslie_alistair@hotmail.com Date: Mon Jun 26 00:48:29 2017 +0000
oledb32: Support DB/DATE/TIME/TIMESTAMP in GetConversionSize for W/STR.
Signed-off-by: Alistair Leslie-Hughes leslie_alistair@hotmail.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/oledb32/convert.c | 6 ++++ dlls/oledb32/tests/convert.c | 69 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+)
diff --git a/dlls/oledb32/convert.c b/dlls/oledb32/convert.c index d959f65..91de291 100644 --- a/dlls/oledb32/convert.c +++ b/dlls/oledb32/convert.c @@ -1409,6 +1409,9 @@ static HRESULT WINAPI convert_GetConversionSize(IDataConvert* iface, case DBTYPE_I8: case DBTYPE_UI8: case DBTYPE_R4: + case DBTYPE_DBDATE: + case DBTYPE_DBTIMESTAMP: + case DBTYPE_DBTIME: break; default: FIXME("unimplemented for %04x -> DBTYPE_STR\n", src_type); @@ -1453,6 +1456,9 @@ static HRESULT WINAPI convert_GetConversionSize(IDataConvert* iface, case DBTYPE_I8: case DBTYPE_UI8: case DBTYPE_R4: + case DBTYPE_DBDATE: + case DBTYPE_DBTIMESTAMP: + case DBTYPE_DBTIME: break; default: FIXME("unimplemented for %04x -> DBTYPE_WSTR\n", src_type); diff --git a/dlls/oledb32/tests/convert.c b/dlls/oledb32/tests/convert.c index 82afb59..813c72a 100644 --- a/dlls/oledb32/tests/convert.c +++ b/dlls/oledb32/tests/convert.c @@ -2722,6 +2722,9 @@ static void test_getconversionsize(void) LONGLONG i8 = 202; DATE dbdate; DECIMAL dec; + DBTIMESTAMP ts = {2013, 5, 14, 2, 4, 12, 0}; + DBTIME dbtime; + DBDATE dbdate1;
/* same way as CanConvert fails here */ dst_len = 0; @@ -2993,6 +2996,39 @@ static void test_getconversionsize(void) ok(dst_len == 110, "%ld\n", dst_len);
dst_len = 0; + src_len = sizeof(ts); + hr = IDataConvert_GetConversionSize(convert, DBTYPE_DBTIMESTAMP, DBTYPE_WSTR, &src_len, &dst_len, &ts); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(dst_len == 110, "%ld\n", dst_len); + + dst_len = 0; + hr = IDataConvert_GetConversionSize(convert, DBTYPE_DBTIMESTAMP, DBTYPE_WSTR, NULL, &dst_len, NULL); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(dst_len == 110, "%ld\n", dst_len); + + dst_len = 0; + src_len = sizeof(dbtime); + hr = IDataConvert_GetConversionSize(convert, DBTYPE_DBTIME, DBTYPE_WSTR, &src_len, &dst_len, &dbtime); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(dst_len == 110, "%ld\n", dst_len); + + dst_len = 0; + hr = IDataConvert_GetConversionSize(convert, DBTYPE_DBTIME, DBTYPE_WSTR, NULL, &dst_len, NULL); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(dst_len == 110, "%ld\n", dst_len); + + dst_len = 0; + src_len = sizeof(dbdate1); + hr = IDataConvert_GetConversionSize(convert, DBTYPE_DBDATE, DBTYPE_WSTR, &src_len, &dst_len, &dbdate1); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(dst_len == 110, "%ld\n", dst_len); + + dst_len = 0; + hr = IDataConvert_GetConversionSize(convert, DBTYPE_DBDATE, DBTYPE_WSTR, NULL, &dst_len, NULL); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(dst_len == 110, "%ld\n", dst_len); + + dst_len = 0; src_len = sizeof(i4); hr = IDataConvert_GetConversionSize(convert, DBTYPE_I4, DBTYPE_STR, &src_len, &dst_len, &i4); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -3112,6 +3148,39 @@ static void test_getconversionsize(void) hr = IDataConvert_GetConversionSize(convert, DBTYPE_EMPTY, DBTYPE_STR, NULL, &dst_len, NULL); ok(hr == S_OK, "got 0x%08x\n", hr); ok(dst_len == 110, "%ld\n", dst_len); + + dst_len = 0; + src_len = sizeof(ts); + hr = IDataConvert_GetConversionSize(convert, DBTYPE_DBTIMESTAMP, DBTYPE_STR, &src_len, &dst_len, &ts); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(dst_len == 110, "%ld\n", dst_len); + + dst_len = 0; + hr = IDataConvert_GetConversionSize(convert, DBTYPE_DBTIMESTAMP, DBTYPE_STR, NULL, &dst_len, NULL); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(dst_len == 110, "%ld\n", dst_len); + + dst_len = 0; + src_len = sizeof(dbtime); + hr = IDataConvert_GetConversionSize(convert, DBTYPE_DBTIME, DBTYPE_STR, &src_len, &dst_len, &dbtime); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(dst_len == 110, "%ld\n", dst_len); + + dst_len = 0; + hr = IDataConvert_GetConversionSize(convert, DBTYPE_DBTIME, DBTYPE_STR, NULL, &dst_len, NULL); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(dst_len == 110, "%ld\n", dst_len); + + dst_len = 0; + src_len = sizeof(dbdate1); + hr = IDataConvert_GetConversionSize(convert, DBTYPE_DBDATE, DBTYPE_STR, &src_len, &dst_len, &dbdate1); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(dst_len == 110, "%ld\n", dst_len); + + dst_len = 0; + hr = IDataConvert_GetConversionSize(convert, DBTYPE_DBDATE, DBTYPE_STR, NULL, &dst_len, NULL); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(dst_len == 110, "%ld\n", dst_len); }
static void test_converttobytes(void)