Huw Davies : oledb32/tests: Fix some failing tests on win98.

Alexandre Julliard julliard at winehq.org
Wed Nov 4 10:26:26 CST 2009


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

Author: Huw Davies <huw at codeweavers.com>
Date:   Wed Nov  4 11:23:18 2009 +0000

oledb32/tests: Fix some failing tests on win98.

---

 dlls/oledb32/tests/convert.c |   89 ++++++++++++++++++++++++-----------------
 include/oledberr.h           |    2 +
 2 files changed, 54 insertions(+), 37 deletions(-)

diff --git a/dlls/oledb32/tests/convert.c b/dlls/oledb32/tests/convert.c
index 07b2d84..1f7ca08 100644
--- a/dlls/oledb32/tests/convert.c
+++ b/dlls/oledb32/tests/convert.c
@@ -555,26 +555,31 @@ todo_wine
     dst = 0x1234;
     ((LARGE_INTEGER*)src)->QuadPart = 0x1234abcd;
     hr = IDataConvert_DataConvert(convert, DBTYPE_I8, DBTYPE_I2, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
-    ok(hr == DB_E_ERRORSOCCURRED, "got %08x\n", hr);
-    ok(dst_status == DBSTATUS_E_DATAOVERFLOW, "got %08x\n", dst_status);
-    ok(dst_len == sizeof(dst), "got %d\n", dst_len);
-    ok(dst == 0x1234, "got %08x\n", dst);
-
-    dst = 0x1234;
-    ((LARGE_INTEGER*)src)->QuadPart = 0x4321;
-    hr = IDataConvert_DataConvert(convert, DBTYPE_I8, DBTYPE_I2, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
-    ok(hr == S_OK, "got %08x\n", hr);
-    ok(dst_status == DBSTATUS_S_OK, "got %08x\n", dst_status);
-    ok(dst_len == sizeof(dst), "got %d\n", dst_len);
-    ok(dst == 0x4321, "got %08x\n", dst);
-
-    dst = 0x1234;
-    ((ULARGE_INTEGER*)src)->QuadPart = 0x4321;
-    hr = IDataConvert_DataConvert(convert, DBTYPE_UI8, DBTYPE_I2, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
-    ok(hr == S_OK, "got %08x\n", hr);
-    ok(dst_status == DBSTATUS_S_OK, "got %08x\n", dst_status);
-    ok(dst_len == sizeof(dst), "got %d\n", dst_len);
-    ok(dst == 0x4321, "got %08x\n", dst);
+    ok(hr == DB_E_ERRORSOCCURRED ||
+       broken(hr == DB_E_UNSUPPORTEDCONVERSION), /* win98 */
+       "got %08x\n", hr);
+    if(hr != DB_E_UNSUPPORTEDCONVERSION) /* win98 doesn't support I8/UI8 */
+    {
+        ok(dst_status == DBSTATUS_E_DATAOVERFLOW, "got %08x\n", dst_status);
+        ok(dst_len == sizeof(dst), "got %d\n", dst_len);
+        ok(dst == 0x1234, "got %08x\n", dst);
+
+        dst = 0x1234;
+        ((LARGE_INTEGER*)src)->QuadPart = 0x4321;
+        hr = IDataConvert_DataConvert(convert, DBTYPE_I8, DBTYPE_I2, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
+        ok(hr == S_OK, "got %08x\n", hr);
+        ok(dst_status == DBSTATUS_S_OK, "got %08x\n", dst_status);
+        ok(dst_len == sizeof(dst), "got %d\n", dst_len);
+        ok(dst == 0x4321, "got %08x\n", dst);
+
+        dst = 0x1234;
+        ((ULARGE_INTEGER*)src)->QuadPart = 0x4321;
+        hr = IDataConvert_DataConvert(convert, DBTYPE_UI8, DBTYPE_I2, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
+        ok(hr == S_OK, "got %08x\n", hr);
+        ok(dst_status == DBSTATUS_S_OK, "got %08x\n", dst_status);
+        ok(dst_len == sizeof(dst), "got %d\n", dst_len);
+        ok(dst == 0x4321, "got %08x\n", dst);
+    }
 
     dst = 0x1234;
     strcpy((char *)src, "10");
@@ -798,18 +803,23 @@ todo_wine
     i4 = 0x12345678;
     ((LARGE_INTEGER*)src)->QuadPart = 0x1234abcd;
     hr = IDataConvert_DataConvert(convert, DBTYPE_I8, DBTYPE_I4, 0, &dst_len, src, &i4, sizeof(i4), 0, &dst_status, 0, 0, 0);
-    ok(hr == S_OK, "got %08x\n", hr);
-    ok(dst_status == DBSTATUS_S_OK, "got %08x\n", dst_status);
-    ok(dst_len == sizeof(i4), "got %d\n", dst_len);
-    ok(i4 == 0x1234abcd, "got %08x\n", i4);
-
-    i4 = 0x12345678;
-    ((ULARGE_INTEGER*)src)->QuadPart = 0x1234abcd;
-    hr = IDataConvert_DataConvert(convert, DBTYPE_UI8, DBTYPE_I4, 0, &dst_len, src, &i4, sizeof(i4), 0, &dst_status, 0, 0, 0);
-    ok(hr == S_OK, "got %08x\n", hr);
-    ok(dst_status == DBSTATUS_S_OK, "got %08x\n", dst_status);
-    ok(dst_len == sizeof(i4), "got %d\n", dst_len);
-    ok(i4 == 0x1234abcd, "got %08x\n", i4);
+    ok(hr == S_OK ||
+       broken(hr == DB_E_UNSUPPORTEDCONVERSION), /* win98 */
+       "got %08x\n", hr);
+    if(hr != DB_E_UNSUPPORTEDCONVERSION) /* win98 doesn't support I8/UI8 */
+    {
+        ok(dst_status == DBSTATUS_S_OK, "got %08x\n", dst_status);
+        ok(dst_len == sizeof(i4), "got %d\n", dst_len);
+        ok(i4 == 0x1234abcd, "got %08x\n", i4);
+
+        i4 = 0x12345678;
+        ((ULARGE_INTEGER*)src)->QuadPart = 0x1234abcd;
+        hr = IDataConvert_DataConvert(convert, DBTYPE_UI8, DBTYPE_I4, 0, &dst_len, src, &i4, sizeof(i4), 0, &dst_status, 0, 0, 0);
+        ok(hr == S_OK, "got %08x\n", hr);
+        ok(dst_status == DBSTATUS_S_OK, "got %08x\n", dst_status);
+        ok(dst_len == sizeof(i4), "got %d\n", dst_len);
+        ok(i4 == 0x1234abcd, "got %08x\n", i4);
+    }
 
     i4 = 0x12345678;
     strcpy((char *)src, "10");
@@ -1174,11 +1184,16 @@ static void test_converttofiletime(void)
     ((FILETIME *)src)->dwLowDateTime = 0x12345678;
     ((FILETIME *)src)->dwHighDateTime = 0x9abcdef0;
     hr = IDataConvert_DataConvert(convert, DBTYPE_FILETIME, DBTYPE_FILETIME, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
-    ok(hr == S_OK, "got %08x\n", hr);
-    ok(dst_status == DBSTATUS_S_OK, "got %08x\n", dst_status);
-    ok(dst_len == sizeof(dst), "got %d\n", dst_len);
-    ok(dst.dwLowDateTime == 0x12345678, "got %08x\n", dst.dwLowDateTime);
-    ok(dst.dwHighDateTime == 0x9abcdef0, "got %08x\n", dst.dwHighDateTime);
+    ok(hr == S_OK ||
+       broken(hr == DB_E_BADBINDINFO), /* win98 */
+       "got %08x\n", hr);
+    if(SUCCEEDED(hr))
+    {
+        ok(dst_status == DBSTATUS_S_OK, "got %08x\n", dst_status);
+        ok(dst_len == sizeof(dst), "got %d\n", dst_len);
+        ok(dst.dwLowDateTime == 0x12345678, "got %08x\n", dst.dwLowDateTime);
+        ok(dst.dwHighDateTime == 0x9abcdef0, "got %08x\n", dst.dwHighDateTime);
+    }
 
     IDataConvert_Release(convert);
 }
diff --git a/include/oledberr.h b/include/oledberr.h
index b534531..e25e40e 100644
--- a/include/oledberr.h
+++ b/include/oledberr.h
@@ -21,6 +21,8 @@
 #ifndef __WINE_OLEDBERR_H
 #define __WINE_OLEDBERR_H
 
+#define DB_E_BADBINDINFO                    0x80040e08
+
 #define DB_E_NOTFOUND                       0x80040e19
 
 #define DB_E_UNSUPPORTEDCONVERSION          0x80040e1d




More information about the wine-cvs mailing list