Alistair Leslie-Hughes : oledb32: Support DB/DATE/TIME/ TIMESTAMP in GetConversionSize for W/STR.

Alexandre Julliard julliard at winehq.org
Tue Jun 27 17:19:06 CDT 2017


Module: wine
Branch: master
Commit: 9d11f0f9624b03c1148922180429cf43923567da
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9d11f0f9624b03c1148922180429cf43923567da

Author: Alistair Leslie-Hughes <leslie_alistair at 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 at hotmail.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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)




More information about the wine-cvs mailing list