Nikolay Sivov : oledb32/tests: A basic test for IRowPosition_Initialize().

Alexandre Julliard julliard at winehq.org
Thu Aug 22 14:18:41 CDT 2013


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

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Thu Aug 22 14:44:17 2013 +0400

oledb32/tests: A basic test for IRowPosition_Initialize().

---

 dlls/oledb32/tests/database.c |  138 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 138 insertions(+), 0 deletions(-)

diff --git a/dlls/oledb32/tests/database.c b/dlls/oledb32/tests/database.c
index f41fd6c..585196c 100644
--- a/dlls/oledb32/tests/database.c
+++ b/dlls/oledb32/tests/database.c
@@ -20,6 +20,7 @@
 #include <stdio.h>
 
 #define COBJMACROS
+#define CONST_VTABLE
 #define NONAMELESSUNION
 #define NONAMELESSSTRUCT
 
@@ -277,6 +278,142 @@ if (hr == S_OK) {
     IRowPosition_Release(rowpos);
 }
 
+typedef struct
+{
+    IRowset IRowset_iface;
+    IChapteredRowset IChapteredRowset_iface;
+} test_rset_t;
+
+static test_rset_t test_rset;
+
+static HRESULT WINAPI rset_QI(IRowset *iface, REFIID riid, void **obj)
+{
+    if (IsEqualIID(riid, &IID_IUnknown) ||
+        IsEqualIID(riid, &IID_IRowset))
+    {
+        *obj = &test_rset.IRowset_iface;
+        return S_OK;
+    }
+    else if (IsEqualIID(riid, &IID_IChapteredRowset))
+    {
+        *obj = &test_rset.IChapteredRowset_iface;
+        return S_OK;
+    }
+
+    ok(0, "unexpected riid %s\n", debugstr_guid(riid));
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI rset_AddRef(IRowset *iface)
+{
+    return 2;
+}
+
+static ULONG WINAPI rset_Release(IRowset *iface)
+{
+    return 1;
+}
+
+static HRESULT WINAPI rset_AddRefRows(IRowset *iface, DBCOUNTITEM cRows,
+    const HROW rghRows[], DBREFCOUNT rgRefCounts[], DBROWSTATUS rgRowStatus[])
+{
+    ok(0, "unexpected call\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI rset_GetData(IRowset *iface, HROW hRow, HACCESSOR hAccessor, void *pData)
+{
+    ok(0, "unexpected call\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI rset_GetNextRows(IRowset *iface, HCHAPTER hReserved, DBROWOFFSET lRowsOffset,
+    DBROWCOUNT cRows, DBCOUNTITEM *pcRowObtained, HROW **prghRows)
+{
+    ok(0, "unexpected call\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI rset_ReleaseRows(IRowset *iface, DBCOUNTITEM cRows, const HROW rghRows[], DBROWOPTIONS rgRowOptions[],
+    DBREFCOUNT rgRefCounts[], DBROWSTATUS rgRowStatus[])
+{
+    ok(0, "unexpected call\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI rset_RestartPosition(IRowset *iface, HCHAPTER hReserved)
+{
+    ok(0, "unexpected call\n");
+    return E_NOTIMPL;
+}
+
+static const IRowsetVtbl rset_vtbl = {
+    rset_QI,
+    rset_AddRef,
+    rset_Release,
+    rset_AddRefRows,
+    rset_GetData,
+    rset_GetNextRows,
+    rset_ReleaseRows,
+    rset_RestartPosition
+};
+
+static HRESULT WINAPI chrset_QI(IChapteredRowset *iface, REFIID riid, void **obj)
+{
+    return IRowset_QueryInterface(&test_rset.IRowset_iface, riid, obj);
+}
+
+static ULONG WINAPI chrset_AddRef(IChapteredRowset *iface)
+{
+    return IRowset_AddRef(&test_rset.IRowset_iface);
+}
+
+static ULONG WINAPI chrset_Release(IChapteredRowset *iface)
+{
+    return IRowset_Release(&test_rset.IRowset_iface);
+}
+
+static HRESULT WINAPI chrset_AddRefChapter(IChapteredRowset *iface, HCHAPTER chapter, DBREFCOUNT *refcount)
+{
+    ok(0, "unexpected call\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI chrset_ReleaseChapter(IChapteredRowset *iface, HCHAPTER chapter, DBREFCOUNT *refcount)
+{
+    ok(0, "unexpected call\n");
+    return E_NOTIMPL;
+}
+
+static const IChapteredRowsetVtbl chrset_vtbl = {
+    chrset_QI,
+    chrset_AddRef,
+    chrset_Release,
+    chrset_AddRefChapter,
+    chrset_ReleaseChapter
+};
+
+static void init_test_rset(void)
+{
+    test_rset.IRowset_iface.lpVtbl = &rset_vtbl;
+    test_rset.IChapteredRowset_iface.lpVtbl = &chrset_vtbl;
+}
+
+static void test_rowpos_initialize(void)
+{
+    IRowPosition *rowpos;
+    HRESULT hr;
+
+    hr = CoCreateInstance(&CLSID_OLEDB_ROWPOSITIONLIBRARY, NULL, CLSCTX_INPROC_SERVER, &IID_IRowPosition, (void**)&rowpos);
+    ok(hr == S_OK, "got %08x\n", hr);
+
+    init_test_rset();
+    hr = IRowPosition_Initialize(rowpos, (IUnknown*)&test_rset.IRowset_iface);
+    ok(hr == S_OK, "got %08x\n", hr);
+
+    IRowPosition_Release(rowpos);
+}
+
 START_TEST(database)
 {
     OleInitialize(NULL);
@@ -287,6 +424,7 @@ START_TEST(database)
 
     /* row position */
     test_rowposition();
+    test_rowpos_initialize();
 
     OleUninitialize();
 }




More information about the wine-cvs mailing list