Module: wine Branch: master Commit: 6255b031af691988f96c4e648c4f0975575f0487 URL: https://source.winehq.org/git/wine.git/?a=commit;h=6255b031af691988f96c4e648...
Author: Aaro Altonen a.altonen@hotmail.com Date: Mon May 25 17:01:30 2020 +0300
msado15: Implement _Command get/put CommandType.
Signed-off-by: Aaro Altonen a.altonen@hotmail.com Signed-off-by: Hans Leidekker hans@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msado15/command.c | 34 ++++++++++++++++++++++++++++------ dlls/msado15/tests/msado15.c | 13 +++++++++++++ 2 files changed, 41 insertions(+), 6 deletions(-)
diff --git a/dlls/msado15/command.c b/dlls/msado15/command.c index a96fd73990..9081f1554f 100644 --- a/dlls/msado15/command.c +++ b/dlls/msado15/command.c @@ -31,8 +31,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(msado15);
struct command { - _Command Command_iface; - LONG ref; + _Command Command_iface; + LONG ref; + CommandTypeEnum type; };
static inline struct command *impl_from_Command( _Command *iface ) @@ -193,14 +194,34 @@ static HRESULT WINAPI command_get_Parameters( _Command *iface, Parameters **para
static HRESULT WINAPI command_put_CommandType( _Command *iface, CommandTypeEnum type ) { - FIXME( "%p, %d\n", iface, type ); - return E_NOTIMPL; + struct command *command = impl_from_Command( iface ); + + TRACE( "%p, %d\n", iface, type ); + + switch (type) + { + case adCmdUnspecified: + case adCmdUnknown: + case adCmdText: + case adCmdTable: + case adCmdStoredProc: + case adCmdFile: + case adCmdTableDirect: + command->type = type; + return S_OK; + } + + return MAKE_ADO_HRESULT( adErrInvalidArgument ); }
static HRESULT WINAPI command_get_CommandType( _Command *iface, CommandTypeEnum *type ) { - FIXME( "%p, %p\n", iface, type ); - return E_NOTIMPL; + struct command *command = impl_from_Command( iface ); + + TRACE( "%p, %p\n", iface, type ); + + *type = command->type; + return S_OK; }
static HRESULT WINAPI command_get_Name(_Command *iface, BSTR *name) @@ -305,6 +326,7 @@ HRESULT Command_create( void **obj )
if (!(command = heap_alloc( sizeof(*command) ))) return E_OUTOFMEMORY; command->Command_iface.lpVtbl = &command_vtbl; + command->type = adCmdUnknown; command->ref = 1;
*obj = &command->Command_iface; diff --git a/dlls/msado15/tests/msado15.c b/dlls/msado15/tests/msado15.c index fb77936bba..b17430a93d 100644 --- a/dlls/msado15/tests/msado15.c +++ b/dlls/msado15/tests/msado15.c @@ -742,6 +742,7 @@ static void test_Command(void) _ADO *ado; Command15 *command15; Command25 *command25; + CommandTypeEnum cmd_type = adCmdUnspecified;
hr = CoCreateInstance( &CLSID_Command, NULL, CLSCTX_INPROC_SERVER, &IID__Command, (void **)&command ); ok( hr == S_OK, "got %08x\n", hr ); @@ -758,6 +759,18 @@ static void test_Command(void) ok( hr == S_OK, "got %08x\n", hr ); Command25_Release( command25 );
+ hr = _Command_get_CommandType( command, &cmd_type ); + ok( hr == S_OK, "got %08x\n", hr ); + ok( cmd_type == adCmdUnknown, "got %08x\n", cmd_type ); + + _Command_put_CommandType( command, adCmdText ); + hr = _Command_get_CommandType( command, &cmd_type ); + ok( hr == S_OK, "got %08x\n", hr ); + ok( cmd_type == adCmdText, "got %08x\n", cmd_type ); + + hr = _Command_put_CommandType( command, 0xdeadbeef ); + ok( hr == MAKE_ADO_HRESULT( adErrInvalidArgument ), "got %08x\n", hr ); + _Command_Release( command ); }