From f23b46464e074665af54cf4cee98427f2900fde6 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Fri, 26 Sep 2014 13:28:53 +1000 Subject: [PATCH] dpnet: Show SetSP adds a component. --- dlls/dpnet/address.c | 3 +++ dlls/dpnet/tests/address.c | 44 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/dlls/dpnet/address.c b/dlls/dpnet/address.c index 6add84296be..2cea1eac559 100644 --- a/dlls/dpnet/address.c +++ b/dlls/dpnet/address.c @@ -259,6 +259,9 @@ static HRESULT WINAPI IDirectPlay8AddressImpl_SetSP(IDirectPlay8Address *iface, This->init = TRUE; This->SP_guid = *pguidSP; + + IDirectPlay8Address_AddComponent(iface, DPNA_KEY_PROVIDER, &This->SP_guid, sizeof(GUID), DPNA_DATATYPE_GUID); + return DPN_OK; } diff --git a/dlls/dpnet/tests/address.c b/dlls/dpnet/tests/address.c index 2d38d8c1d94..4d825bbce25 100644 --- a/dlls/dpnet/tests/address.c +++ b/dlls/dpnet/tests/address.c @@ -171,6 +171,49 @@ static void address_addcomponents(void) } } +static void address_setsp(void) +{ + HRESULT hr; + IDirectPlay8Address *localaddr = NULL; + + hr = CoCreateInstance( &CLSID_DirectPlay8Address, NULL, CLSCTX_ALL, &IID_IDirectPlay8Address, (LPVOID*)&localaddr); + ok(hr == S_OK, "Failed to create IDirectPlay8Address object\n"); + if(SUCCEEDED(hr)) + { + DWORD components; + WCHAR *name; + GUID guid = IID_Random; + DWORD type; + DWORD namelen = 0; + DWORD bufflen = 0; + + hr = IDirectPlay8Address_GetNumComponents(localaddr, &components); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(components == 0, "components=%d", components); + + hr = IDirectPlay8Address_SetSP(localaddr, &CLSID_DP8SP_TCPIP); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = IDirectPlay8Address_GetNumComponents(localaddr, &components); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(components == 1, "components=%d", components); + + hr = IDirectPlay8Address_GetComponentByIndex(localaddr, 0, NULL, &namelen, NULL, &bufflen, &type); + todo_wine ok(hr == DPNERR_BUFFERTOOSMALL, "got 0x%08x\n", hr); + + name = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, namelen * sizeof(WCHAR)); + + hr = IDirectPlay8Address_GetComponentByIndex(localaddr, 0, name, &namelen, (void*)&guid, &bufflen, &type); + ok(hr == S_OK, "got 0x%08x\n", hr); + todo_wine ok(type == DPNA_DATATYPE_GUID, "wrong datatype: %d\n", type); + todo_wine ok(IsEqualGUID(&guid, &CLSID_DP8SP_TCPIP), "wrong guid\n"); + + HeapFree(GetProcessHeap(), 0, name); + + IDirectPlay8Address_Release(localaddr); + } +} + START_TEST(address) { HRESULT hr; @@ -182,6 +225,7 @@ START_TEST(address) create_directplay_address(); address_addcomponents(); + address_setsp(); CoUninitialize(); }