Ismael Barros : dplayx: Tests for GetPlayerCaps.
Alexandre Julliard
julliard at winehq.org
Mon Aug 4 08:53:54 CDT 2008
Module: wine
Branch: master
Commit: c50a626aa1d044cd751aee40dbd7f3bad976cd60
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c50a626aa1d044cd751aee40dbd7f3bad976cd60
Author: Ismael Barros <razielmine at gmail.com>
Date: Sat Aug 2 21:52:14 2008 +0200
dplayx: Tests for GetPlayerCaps.
---
dlls/dplayx/tests/dplayx.c | 161 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 161 insertions(+), 0 deletions(-)
diff --git a/dlls/dplayx/tests/dplayx.c b/dlls/dplayx/tests/dplayx.c
index 7cac4b5..499fb8b 100644
--- a/dlls/dplayx/tests/dplayx.c
+++ b/dlls/dplayx/tests/dplayx.c
@@ -1926,6 +1926,166 @@ static void test_CreatePlayer(void)
}
+/* GetPlayerCaps */
+
+static void test_GetPlayerCaps(void)
+{
+
+ LPDIRECTPLAY4 pDP[2];
+ DPSESSIONDESC2 dpsd;
+ DPID dpid[2];
+ HRESULT hr;
+ UINT i;
+
+ DPCAPS playerCaps;
+ DWORD dwFlags;
+
+
+ for (i=0; i<2; i++)
+ {
+ CoCreateInstance( &CLSID_DirectPlay, NULL, CLSCTX_ALL,
+ &IID_IDirectPlay4A, (LPVOID*) &pDP[i] );
+ }
+ ZeroMemory( &dpsd, sizeof(DPSESSIONDESC2) );
+ dpsd.dwSize = sizeof(DPSESSIONDESC2);
+ dpsd.guidApplication = appGuid;
+ dpsd.dwMaxPlayers = 10;
+
+ ZeroMemory( &playerCaps, sizeof(DPCAPS) );
+
+
+ /* Uninitialized service provider */
+ playerCaps.dwSize = 0;
+ hr = IDirectPlayX_GetPlayerCaps( pDP[0], 0, &playerCaps, 0 );
+ checkHR( DPERR_UNINITIALIZED, hr );
+
+ playerCaps.dwSize = sizeof(DPCAPS);
+ hr = IDirectPlayX_GetPlayerCaps( pDP[0], 0, &playerCaps, 0 );
+ checkHR( DPERR_UNINITIALIZED, hr );
+
+
+ init_TCPIP_provider( pDP[0], "127.0.0.1", 0 );
+ init_TCPIP_provider( pDP[1], "127.0.0.1", 0 );
+
+
+ /* No session */
+ playerCaps.dwSize = 0;
+
+ hr = IDirectPlayX_GetPlayerCaps( pDP[0], 0, &playerCaps, 0 );
+ todo_wine checkHR( DPERR_INVALIDPARAMS, hr );
+
+ if ( hr == DPERR_UNINITIALIZED )
+ {
+ skip( "GetPlayerCaps not implemented\n" );
+ return;
+ }
+
+ playerCaps.dwSize = sizeof(DPCAPS);
+
+ hr = IDirectPlayX_GetPlayerCaps( pDP[0], 0, &playerCaps, 0 );
+ checkHR( DPERR_INVALIDPLAYER, hr );
+
+ hr = IDirectPlayX_GetPlayerCaps( pDP[0], 2, &playerCaps, 0 );
+ checkHR( DPERR_INVALIDPLAYER, hr );
+
+
+ hr = IDirectPlayX_Open( pDP[0], &dpsd, DPOPEN_CREATE );
+ checkHR( DP_OK, hr );
+ hr = IDirectPlayX_EnumSessions( pDP[1], &dpsd, 0, EnumSessions_cb_join,
+ (LPVOID) pDP[1], 0 );
+ checkHR( DP_OK, hr );
+
+ for (i=0; i<2; i++)
+ {
+ hr = IDirectPlayX_CreatePlayer( pDP[i], &dpid[i],
+ NULL, NULL, NULL, 0, 0 );
+ checkHR( DP_OK, hr );
+ }
+
+
+ /* Uninitialized playerCaps */
+ playerCaps.dwSize = 0;
+
+ hr = IDirectPlayX_GetPlayerCaps( pDP[0], 0, &playerCaps, 0 );
+ checkHR( DPERR_INVALIDPARAMS, hr );
+
+ hr = IDirectPlayX_GetPlayerCaps( pDP[0], 2, &playerCaps, 0 );
+ checkHR( DPERR_INVALIDPARAMS, hr );
+
+ hr = IDirectPlayX_GetPlayerCaps( pDP[0], dpid[0], &playerCaps, 0 );
+ checkHR( DPERR_INVALIDPARAMS, hr );
+
+
+ /* Invalid player */
+ playerCaps.dwSize = sizeof(DPCAPS);
+
+ hr = IDirectPlayX_GetPlayerCaps( pDP[0], 0, &playerCaps, 0 );
+ checkHR( DPERR_INVALIDPLAYER, hr );
+
+ hr = IDirectPlayX_GetPlayerCaps( pDP[0], 2, &playerCaps, 0 );
+ checkHR( DPERR_INVALIDPLAYER, hr );
+
+ hr = IDirectPlayX_GetPlayerCaps( pDP[0], dpid[0], &playerCaps, 0 );
+ checkHR( DP_OK, hr );
+
+
+ /* Regular parameters */
+ for (i=0; i<2; i++)
+ {
+ for (dwFlags=0;
+ dwFlags<=DPGETCAPS_GUARANTEED;
+ dwFlags+=DPGETCAPS_GUARANTEED)
+ {
+
+ hr = IDirectPlayX_GetPlayerCaps( pDP[0], dpid[i],
+ &playerCaps, dwFlags );
+ checkHR( DP_OK, hr );
+
+
+ check( sizeof(DPCAPS), playerCaps.dwSize );
+ check( 40, playerCaps.dwSize );
+ check( 0, playerCaps.dwMaxQueueSize );
+ check( 0, playerCaps.dwHundredBaud );
+ check( 0, playerCaps.dwLatency );
+ check( 65536, playerCaps.dwMaxLocalPlayers );
+ check( 20, playerCaps.dwHeaderLength );
+
+ if ( i == 0 )
+ {
+ checkFlags( DPCAPS_ISHOST |
+ DPCAPS_GUARANTEEDOPTIMIZED |
+ DPCAPS_GUARANTEEDSUPPORTED |
+ DPCAPS_ASYNCSUPPORTED |
+ DPPLAYERCAPS_LOCAL,
+ playerCaps.dwFlags, FLAGS_DPCAPS );
+ }
+ else
+ checkFlags( DPCAPS_ISHOST |
+ DPCAPS_GUARANTEEDOPTIMIZED |
+ DPCAPS_GUARANTEEDSUPPORTED |
+ DPCAPS_ASYNCSUPPORTED,
+ playerCaps.dwFlags, FLAGS_DPCAPS );
+
+ if ( dwFlags == DPGETCAPS_GUARANTEED )
+ {
+ check( 1048547, playerCaps.dwMaxBufferSize );
+ check( 64, playerCaps.dwMaxPlayers );
+ }
+ else
+ {
+ check( 65479, playerCaps.dwMaxBufferSize );
+ check( 65536, playerCaps.dwMaxPlayers );
+ }
+
+ }
+ }
+
+
+ IDirectPlayX_Release( pDP[0] );
+ IDirectPlayX_Release( pDP[1] );
+
+}
+
START_TEST(dplayx)
{
@@ -1941,6 +2101,7 @@ START_TEST(dplayx)
test_SessionDesc();
test_CreatePlayer();
+ test_GetPlayerCaps();
CoUninitialize();
}
More information about the wine-cvs
mailing list