Module: wine Branch: master Commit: 0efdde1f428c51e71fba97824dd4a59149e295af URL: http://source.winehq.org/git/wine.git/?a=commit;h=0efdde1f428c51e71fba97824d...
Author: Huw Davies huw@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