Louis Lenders : dpnet: Fill the DPN_SP_CAPS structure in IDirectPlay8Peer_GetSPCaps with some sane values + tests .

Alexandre Julliard julliard at winehq.org
Mon Sep 26 16:15:11 CDT 2011


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

Author: Louis Lenders <xerox_xerox2000 at yahoo.co.uk>
Date:   Fri Sep 23 23:17:58 2011 +0200

dpnet: Fill the DPN_SP_CAPS structure in IDirectPlay8Peer_GetSPCaps with some sane values + tests.

---

 dlls/dpnet/peer.c       |   19 +++++++++++++++++--
 dlls/dpnet/tests/peer.c |   27 +++++++++++++++++++++++++++
 2 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/dlls/dpnet/peer.c b/dlls/dpnet/peer.c
index 307b306..5b89fb4 100644
--- a/dlls/dpnet/peer.c
+++ b/dlls/dpnet/peer.c
@@ -389,9 +389,24 @@ static HRESULT WINAPI IDirectPlay8PeerImpl_SetSPCaps(IDirectPlay8Peer *iface, co
 static HRESULT WINAPI IDirectPlay8PeerImpl_GetSPCaps(IDirectPlay8Peer *iface, const GUID * const pguidSP,
         DPN_SP_CAPS * const pdpspCaps, const DWORD dwFlags)
 {
-    FIXME("(%p)->(%p,%p,%x): stub\n", iface, pguidSP, pdpspCaps, dwFlags);
+    TRACE("(%p)->(%p,%p,%x)\n", iface, pguidSP, pdpspCaps, dwFlags);
 
-    return DPNERR_GENERIC;
+    if(pdpspCaps->dwSize != sizeof(DPN_SP_CAPS))
+    {
+        return DPNERR_INVALIDPARAM;
+    }
+
+    pdpspCaps->dwFlags = DPNSPCAPS_SUPPORTSDPNSRV | DPNSPCAPS_SUPPORTSBROADCAST |
+                         DPNSPCAPS_SUPPORTSALLADAPTERS | DPNSPCAPS_SUPPORTSTHREADPOOL;
+    pdpspCaps->dwNumThreads = 3;
+    pdpspCaps->dwDefaultEnumCount = 5;
+    pdpspCaps->dwDefaultEnumRetryInterval = 1500;
+    pdpspCaps->dwDefaultEnumTimeout = 1500;
+    pdpspCaps->dwMaxEnumPayloadSize = 983;
+    pdpspCaps->dwBuffersPerThread = 1;
+    pdpspCaps->dwSystemBufferSize = 8192;
+
+    return DPN_OK;
 }
 
 static HRESULT WINAPI IDirectPlay8PeerImpl_GetConnectionInfo(IDirectPlay8Peer *iface, const DPNID dpnid,
diff --git a/dlls/dpnet/tests/peer.c b/dlls/dpnet/tests/peer.c
index 67e0ace..dd0b408 100644
--- a/dlls/dpnet/tests/peer.c
+++ b/dlls/dpnet/tests/peer.c
@@ -115,6 +115,32 @@ static void test_enum_service_providers(void)
     ok(HeapFree(GetProcessHeap(), 0, serv_prov_info), "Failed freeing server provider info\n");
 }
 
+static void test_get_sp_caps(void)
+{
+    DPN_SP_CAPS caps;
+    HRESULT hr;
+
+    memset(&caps, 0, sizeof(DPN_SP_CAPS));
+
+    hr = IDirectPlay8Peer_GetSPCaps(peer, &CLSID_DP8SP_TCPIP, &caps, 0);
+    ok(hr == DPNERR_INVALIDPARAM, "GetSPCaps unexpectedly returned %x\n", hr);
+
+    caps.dwSize = sizeof(DPN_SP_CAPS);
+
+    hr = IDirectPlay8Peer_GetSPCaps(peer, &CLSID_DP8SP_TCPIP, &caps, 0);
+    ok(hr == DPN_OK, "GetSPCaps failed with %x\n", hr);
+
+    ok(caps.dwFlags == (DPNSPCAPS_SUPPORTSDPNSRV | DPNSPCAPS_SUPPORTSBROADCAST | DPNSPCAPS_SUPPORTSALLADAPTERS |
+                        DPNSPCAPS_SUPPORTSTHREADPOOL), "provider unexpectedly misses some capability flags\n");
+    ok(caps.dwNumThreads == 3, "expected 3, got %d\n", caps.dwNumThreads);
+    ok(caps.dwDefaultEnumCount == 5, "expected 5, got %d\n", caps.dwDefaultEnumCount);
+    ok(caps.dwDefaultEnumRetryInterval == 1500, "expected 1500, got %d\n", caps.dwDefaultEnumRetryInterval);
+    ok(caps.dwDefaultEnumTimeout == 1500, "expected 1500, got %d\n", caps.dwDefaultEnumTimeout);
+    ok(caps.dwMaxEnumPayloadSize == 983, "expected 983, got %d\n", caps.dwMaxEnumPayloadSize);
+    ok(caps.dwBuffersPerThread == 1, "expected 1, got %d\n", caps.dwBuffersPerThread);
+    ok(caps.dwSystemBufferSize == 8192, "expected 8192, got %d\n", caps.dwSystemBufferSize);
+}
+
 static void test_cleanup_dp(void)
 {
     HRESULT hr;
@@ -132,5 +158,6 @@ START_TEST(peer)
 {
     test_init_dp();
     test_enum_service_providers();
+    test_get_sp_caps();
     test_cleanup_dp();
 }




More information about the wine-cvs mailing list