From 794e1f188494b7d4ff034d2e52731c66f19980ee Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Mon, 24 Jun 2024 18:45:17 +1000 Subject: [PATCH] msado15: Implement _Recordset get/put CacheSize. --- dlls/msado15/recordset.c | 16 ++++++++++++---- dlls/msado15/tests/msado15.c | 16 ++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/dlls/msado15/recordset.c b/dlls/msado15/recordset.c index 36938db88cc..1b1c033320a 100644 --- a/dlls/msado15/recordset.c +++ b/dlls/msado15/recordset.c @@ -50,6 +50,7 @@ struct recordset CursorTypeEnum cursor_type; IRowset *row_set; EditModeEnum editmode; + LONG cache_size; VARIANT filter; DBTYPE *columntypes; @@ -1449,14 +1450,20 @@ static HRESULT WINAPI recordset_put_Bookmark( _Recordset *iface, VARIANT bookmar static HRESULT WINAPI recordset_get_CacheSize( _Recordset *iface, LONG *size ) { - FIXME( "%p, %p\n", iface, size ); - return E_NOTIMPL; + struct recordset *recordset = impl_from_Recordset( iface ); + TRACE( "%p, %p\n", iface, size ); + + *size = recordset->cache_size; + return S_OK; } static HRESULT WINAPI recordset_put_CacheSize( _Recordset *iface, LONG size ) { - FIXME( "%p, %ld\n", iface, size ); - return E_NOTIMPL; + struct recordset *recordset = impl_from_Recordset( iface ); + TRACE( "%p, %ld\n", iface, size ); + + recordset->cache_size = size; + return S_OK; } static HRESULT WINAPI recordset_get_CursorType( _Recordset *iface, CursorTypeEnum *cursor_type ) @@ -2792,6 +2799,7 @@ HRESULT Recordset_create( void **obj ) recordset->cursor_type = adOpenForwardOnly; recordset->row_set = NULL; recordset->editmode = adEditNone; + recordset->cache_size = 1; VariantInit( &recordset->filter ); recordset->columntypes = NULL; recordset->haccessors = NULL; diff --git a/dlls/msado15/tests/msado15.c b/dlls/msado15/tests/msado15.c index 9c9afbc120f..45dbf2c2239 100644 --- a/dlls/msado15/tests/msado15.c +++ b/dlls/msado15/tests/msado15.c @@ -61,6 +61,7 @@ static void test_Recordset(void) HRESULT hr; VARIANT bookmark, filter, active; EditModeEnum editmode; + LONG cache_size; hr = CoCreateInstance( &CLSID_Recordset, NULL, CLSCTX_INPROC_SERVER, &IID__Recordset, (void **)&recordset ); ok( hr == S_OK, "got %08lx\n", hr ); @@ -111,6 +112,21 @@ static void test_Recordset(void) ok( hr == S_OK, "got %08lx\n", hr ); ok( cursor == adOpenForwardOnly, "got %d\n", cursor ); + cache_size = 0; + hr = _Recordset_get_CacheSize( recordset, &cache_size ); + ok( hr == S_OK, "got %08lx\n", hr ); + ok( cache_size == 1, "got %ld\n", cache_size ); + + hr = _Recordset_put_CacheSize( recordset, 5 ); + ok( hr == S_OK, "got %08lx\n", hr ); + + hr = _Recordset_get_CacheSize( recordset, &cache_size ); + ok( hr == S_OK, "got %08lx\n", hr ); + ok( cache_size == 5, "got %ld\n", cache_size ); + + hr = _Recordset_put_CacheSize( recordset, 1 ); + ok( hr == S_OK, "got %08lx\n", hr ); + editmode = -1; hr = _Recordset_get_EditMode( recordset, &editmode ); ok( hr == MAKE_ADO_HRESULT( adErrObjectClosed ), "got %08lx\n", hr );