PATCH: Unit tests for dplayx API calls

Sami Aario sami.aario at surfeu.fi
Sat Dec 27 19:06:56 CST 2003


Patch includes some new files.

Changelog:
Added some unit tests for dplayx API calls, mainly to test return values.
Some of them are apparently undocumented but at least one application
(Icewind Dale) relies on them. These tests are in no way all-inclusive;
their main reason is to prevent regressions that would make this one
application stop working. The tests rely on a previously submitted patch
to dplayx/dplay.c.
-------------- next part --------------
Index: configure
===================================================================
RCS file: /home/wine/wine/configure,v
retrieving revision 1.498
diff -u -r1.498 configure
--- configure	13 Dec 2003 03:51:20 -0000	1.498
+++ configure	28 Dec 2003 00:33:01 -0000
@@ -17275,7 +17275,7 @@
 MAKE_PROG_RULES=programs/Makeprog.rules
 
 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ac_config_files="$ac_config_files Make.rules dlls/Makedll.rules dlls/Maketest.rules libs/Makelib.rules programs/Makeprog.rules Makefile dlls/Makefile dlls/advapi32/Makefile dlls/advapi32/tests/Makefile dlls/avicap32/Makefile dlls/avifil32/Makefile dlls/cabinet/Makefile dlls/capi2032/Makefile dlls/cfgmgr32/Makefile dlls/comcat/Makefile dlls/comctl32/Makefile dlls/comctl32/tests/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/crypt32/Makefile dlls/ctl3d/Makefile dlls/wined3d/Makefile dlls/d3d8/Makefile dlls/d3d9/Makefile dlls/d3dim/Makefile dlls/d3dx8/Makefile dlls/dciman32/Makefile dlls/ddraw/Makefile dlls/ddraw/tests/Makefile dlls/devenum/Makefile dlls/dinput/Makefile dlls/dinput8/Makefile dlls/dmband/Makefile dlls/dmcompos/Makefile dlls/dmime/Makefile dlls/dmloader/Makefile dlls/dmscript/Makefile dlls/dmstyle/Makefile dlls/dmsynth/Makefile dlls/dmusic/Makefile dlls/dmusic32/Makefile dlls/dplay/Makefile dlls/dplayx/Makefile dlls/dpnhpast/Makefile dlls/dsound/Makefile dlls/dsound/tests/Makefile dlls/gdi/Makefile dlls/gdi/tests/Makefile dlls/glu32/Makefile dlls/glut32/Makefile dlls/icmp/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/iphlpapi/Makefile dlls/kernel/Makefile dlls/kernel/tests/Makefile dlls/lzexpand/Makefile dlls/mapi32/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm/imaadp32/Makefile dlls/msacm/msadp32/Makefile dlls/msacm/msg711/Makefile dlls/msacm/winemp3/Makefile dlls/msdmo/Makefile dlls/mshtml/Makefile dlls/msi/Makefile dlls/msimg32/Makefile dlls/msisys/Makefile dlls/msnet32/Makefile dlls/msvcrt/Makefile dlls/msvcrt/tests/Makefile dlls/msvcrt20/Makefile dlls/msvcrtd/Makefile dlls/msvideo/Makefile dlls/msvideo/msrle32/Makefile dlls/mswsock/Makefile dlls/netapi32/Makefile dlls/netapi32/tests/Makefile dlls/ntdll/Makefile dlls/ntdll/tests/Makefile dlls/odbc32/Makefile dlls/ole32/Makefile dlls/oleacc/Makefile dlls/oleaut32/Makefile dlls/oleaut32/tests/Makefile dlls/olecli/Makefile dlls/oledlg/Makefile dlls/olepro32/Makefile dlls/olesvr/Makefile dlls/opengl32/Makefile dlls/psapi/Makefile dlls/qcap/Makefile dlls/quartz/Makefile dlls/rasapi32/Makefile dlls/richedit/Makefile dlls/rpcrt4/Makefile dlls/rpcrt4/tests/Makefile dlls/serialui/Makefile dlls/setupapi/Makefile dlls/shdocvw/Makefile dlls/shell32/Makefile dlls/shell32/tests/Makefile dlls/shfolder/Makefile dlls/shlwapi/Makefile dlls/shlwapi/tests/Makefile dlls/snmpapi/Makefile dlls/sti/Makefile dlls/tapi32/Makefile dlls/ttydrv/Makefile dlls/twain/Makefile dlls/unicows/Makefile dlls/url/Makefile dlls/urlmon/Makefile dlls/urlmon/tests/Makefile dlls/user/Makefile dlls/user/tests/Makefile dlls/uxtheme/Makefile dlls/version/Makefile dlls/win32s/Makefile dlls/winaspi/Makefile dlls/winedos/Makefile dlls/wineps/Makefile dlls/wininet/Makefile dlls/wininet/tests/Makefile dlls/winmm/Makefile dlls/winmm/joystick/Makefile dlls/winmm/mcianim/Makefile dlls/winmm/mciavi/Makefile dlls/winmm/mcicda/Makefile dlls/winmm/mciseq/Makefile dlls/winmm/mciwave/Makefile dlls/winmm/midimap/Makefile dlls/winmm/tests/Makefile dlls/winmm/wavemap/Makefile dlls/winmm/winealsa/Makefile dlls/winmm/winearts/Makefile dlls/winmm/wineaudioio/Makefile dlls/winmm/winenas/Makefile dlls/winmm/winejack/Makefile dlls/winmm/wineoss/Makefile dlls/winnls/Makefile dlls/winsock/Makefile dlls/winsock/tests/Makefile dlls/winspool/Makefile dlls/winspool/tests/Makefile dlls/wintab32/Makefile dlls/wintrust/Makefile dlls/wow32/Makefile dlls/wsock32/Makefile dlls/x11drv/Makefile documentation/Makefile include/Makefile libs/Makefile libs/port/Makefile libs/unicode/Makefile libs/uuid/Makefile libs/wine/Makefile libs/wpp/Makefile loader/Makefile programs/Makefile programs/avitools/Makefile programs/clock/Makefile programs/cmdlgtst/Makefile programs/control/Makefile programs/expand/Makefile programs/notepad/Makefile programs/progman/Makefile programs/regedit/Makefile programs/regsvr32/Makefile programs/rpcss/Makefile programs/rundll32/Makefile programs/start/Makefile programs/uninstaller/Makefile programs/view/Makefile programs/wcmd/Makefile programs/wineboot/Makefile programs/winecfg/Makefile programs/wineconsole/Makefile programs/winedbg/Makefile programs/winefile/Makefile programs/winemenubuilder/Makefile programs/winemine/Makefile programs/winepath/Makefile programs/winetest/Makefile programs/winevdm/Makefile programs/winhelp/Makefile programs/winver/Makefile server/Makefile tools/Makefile tools/widl/Makefile tools/winapi/Makefile tools/winebuild/Makefile tools/winedump/Makefile tools/winegcc/Makefile tools/wmc/Makefile tools/wrc/Makefile"
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ac_config_files="$ac_config_files Make.rules dlls/Makedll.rules dlls/Maketest.rules libs/Makelib.rules programs/Makeprog.rules Makefile dlls/Makefile dlls/advapi32/Makefile dlls/advapi32/tests/Makefile dlls/avicap32/Makefile dlls/avifil32/Makefile dlls/cabinet/Makefile dlls/capi2032/Makefile dlls/cfgmgr32/Makefile dlls/comcat/Makefile dlls/comctl32/Makefile dlls/comctl32/tests/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/crypt32/Makefile dlls/ctl3d/Makefile dlls/wined3d/Makefile dlls/d3d8/Makefile dlls/d3d9/Makefile dlls/d3dim/Makefile dlls/d3dx8/Makefile dlls/dciman32/Makefile dlls/ddraw/Makefile dlls/ddraw/tests/Makefile dlls/devenum/Makefile dlls/dinput/Makefile dlls/dinput8/Makefile dlls/dmband/Makefile dlls/dmcompos/Makefile dlls/dmime/Makefile dlls/dmloader/Makefile dlls/dmscript/Makefile dlls/dmstyle/Makefile dlls/dmsynth/Makefile dlls/dmusic/Makefile dlls/dmusic32/Makefile dlls/dplay/Makefile dlls/dplayx/Makefile dlls/dplayx/tests/Makefile dlls/dpnhpast/Makefile dlls/dsound/Makefile dlls/dsound/tests/Makefile dlls/gdi/Makefile dlls/gdi/tests/Makefile dlls/glu32/Makefile dlls/glut32/Makefile dlls/icmp/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/iphlpapi/Makefile dlls/kernel/Makefile dlls/kernel/tests/Makefile dlls/lzexpand/Makefile dlls/mapi32/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm/imaadp32/Makefile dlls/msacm/msadp32/Makefile dlls/msacm/msg711/Makefile dlls/msacm/winemp3/Makefile dlls/msdmo/Makefile dlls/mshtml/Makefile dlls/msi/Makefile dlls/msimg32/Makefile dlls/msisys/Makefile dlls/msnet32/Makefile dlls/msvcrt/Makefile dlls/msvcrt/tests/Makefile dlls/msvcrt20/Makefile dlls/msvcrtd/Makefile dlls/msvideo/Makefile dlls/msvideo/msrle32/Makefile dlls/mswsock/Makefile dlls/netapi32/Makefile dlls/netapi32/tests/Makefile dlls/ntdll/Makefile dlls/ntdll/tests/Makefile dlls/odbc32/Makefile dlls/ole32/Makefile dlls/oleacc/Makefile dlls/oleaut32/Makefile dlls/oleaut32/tests/Makefile dlls/olecli/Makefile dlls/oledlg/Makefile dlls/olepro32/Makefile dlls/olesvr/Makefile dlls/opengl32/Makefile dlls/psapi/Makefile dlls/qcap/Makefile dlls/quartz/Makefile dlls/rasapi32/Makefile dlls/richedit/Makefile dlls/rpcrt4/Makefile dlls/rpcrt4/tests/Makefile dlls/serialui/Makefile dlls/setupapi/Makefile dlls/shdocvw/Makefile dlls/shell32/Makefile dlls/shell32/tests/Makefile dlls/shfolder/Makefile dlls/shlwapi/Makefile dlls/shlwapi/tests/Makefile dlls/snmpapi/Makefile dlls/sti/Makefile dlls/tapi32/Makefile dlls/ttydrv/Makefile dlls/twain/Makefile dlls/unicows/Makefile dlls/url/Makefile dlls/urlmon/Makefile dlls/urlmon/tests/Makefile dlls/user/Makefile dlls/user/tests/Makefile dlls/uxtheme/Makefile dlls/version/Makefile dlls/win32s/Makefile dlls/winaspi/Makefile dlls/winedos/Makefile dlls/wineps/Makefile dlls/wininet/Makefile dlls/wininet/tests/Makefile dlls/winmm/Makefile dlls/winmm/joystick/Makefile dlls/winmm/mcianim/Makefile dlls/winmm/mciavi/Makefile dlls/winmm/mcicda/Makefile dlls/winmm/mciseq/Makefile dlls/winmm/mciwave/Makefile dlls/winmm/midimap/Makefile dlls/winmm/tests/Makefile dlls/winmm/wavemap/Makefile dlls/winmm/winealsa/Makefile dlls/winmm/winearts/Makefile dlls/winmm/wineaudioio/Makefile dlls/winmm/winenas/Makefile dlls/winmm/winejack/Makefile dlls/winmm/wineoss/Makefile dlls/winnls/Makefile dlls/winsock/Makefile dlls/winsock/tests/Makefile dlls/winspool/Makefile dlls/winspool/tests/Makefile dlls/wintab32/Makefile dlls/wintrust/Makefile dlls/wow32/Makefile dlls/wsock32/Makefile dlls/x11drv/Makefile documentation/Makefile include/Makefile libs/Makefile libs/port/Makefile libs/unicode/Makefile libs/uuid/Makefile libs/wine/Makefile libs/wpp/Makefile loader/Makefile programs/Makefile programs/avitools/Makefile programs/clock/Makefile programs/cmdlgtst/Makefile programs/control/Makefile programs/expand/Makefile programs/notepad/Makefile programs/progman/Makefile programs/regedit/Makefile programs/regsvr32/Makefile programs/rpcss/Makefile programs/rundll32/Makefile programs/start/Makefile programs/uninstaller/Makefile programs/view/Makefile programs/wcmd/Makefile programs/wineboot/Makefile programs/winecfg/Makefile programs/wineconsole/Makefile programs/winedbg/Makefile programs/winefile/Makefile programs/winemenubuilder/Makefile programs/winemine/Makefile programs/winepath/Makefile programs/winetest/Makefile programs/winevdm/Makefile programs/winhelp/Makefile programs/winver/Makefile server/Makefile tools/Makefile tools/widl/Makefile tools/winapi/Makefile tools/winebuild/Makefile tools/winedump/Makefile tools/winegcc/Makefile tools/wmc/Makefile tools/wrc/Makefile"
 
 
 cat >confcache <<\_ACEOF
@@ -17848,6 +17848,7 @@
   "dlls/dmusic32/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/dmusic32/Makefile" ;;
   "dlls/dplay/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/dplay/Makefile" ;;
   "dlls/dplayx/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/dplayx/Makefile" ;;
+  "dlls/dplayx/tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/dplayx/tests/Makefile" ;;
   "dlls/dpnhpast/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/dpnhpast/Makefile" ;;
   "dlls/dsound/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/dsound/Makefile" ;;
   "dlls/dsound/tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/dsound/tests/Makefile" ;;
Index: configure.ac
===================================================================
RCS file: /home/wine/wine/configure.ac,v
retrieving revision 1.217
diff -u -r1.217 configure.ac
--- configure.ac	5 Dec 2003 00:20:28 -0000	1.217
+++ configure.ac	28 Dec 2003 00:33:05 -0000
@@ -1515,6 +1515,7 @@
 dlls/dmusic32/Makefile
 dlls/dplay/Makefile
 dlls/dplayx/Makefile
+dlls/dplayx/tests/Makefile
 dlls/dpnhpast/Makefile
 dlls/dsound/Makefile
 dlls/dsound/tests/Makefile
Index: dlls/dplayx/Makefile.in
===================================================================
RCS file: /home/wine/wine/dlls/dplayx/Makefile.in,v
retrieving revision 1.28
diff -u -r1.28 Makefile.in
--- dlls/dplayx/Makefile.in	11 Oct 2003 01:09:19 -0000	1.28
+++ dlls/dplayx/Makefile.in	28 Dec 2003 00:33:07 -0000
@@ -21,6 +21,8 @@
 
 RC_SRCS = version.rc
 
+SUBDIRS = tests
+
 @MAKE_DLL_RULES@
 
 ### Dependencies:
--- /dev/null	Sun Mar  9 04:57:43 2003
+++ dlls/dplayx/tests/Makefile.in	Sat Dec 27 19:21:10 2003
@@ -0,0 +1,14 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+TESTDLL   = dplayx.dll
+IMPORTS   = dplayx ole32
+EXTRALIBS = $(LIBUUID)
+
+CTESTS = \
+	dplayx.c
+
+ at MAKE_TEST_RULES@
+
+### Dependencies:
--- /dev/null	Sun Mar  9 04:57:43 2003
+++ dlls/dplayx/tests/dplayx.c	Sun Dec 28 03:14:13 2003
@@ -0,0 +1,185 @@
+/*
+ * Unit tests for dplayx functions
+ *
+ * Copyright (C) 2003 Sami Aario
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#define _WIN32_DCOM 
+#include <windows.h>
+#include <windowsx.h>
+#include <dplay.h>
+#include <dplobby.h>
+#include <assert.h>
+#include <objbase.h>
+#include "wine/test.h"
+
+/* Unique id, generated using vbguidgen.exe */
+GUID CLSID_DirectPlayTest =
+{
+    0xD96E48FF,
+    0x1D1A,
+    0x4B5A,
+    { 0x94, 0x76, 0x48, 0xE1, 0x66, 0x6E, 0x44, 0x05 }
+};
+
+static BOOL WINAPI enumconnectionscallback(LPCGUID lpguidSP,
+                                           LPVOID lpConnection,
+                                           DWORD dwConnectionSize,
+                                           LPCDPNAME lpName,
+                                           DWORD dwFlags,
+                                           LPVOID lpContext)
+{
+    return TRUE;
+}
+
+static BOOL WINAPI enumgroupplayerscallback(DPID dpId,
+                                            DWORD dwPlayerType,
+                                            LPCDPNAME lpName,
+                                            DWORD dwFlags,
+                                            LPVOID lpContext)
+{
+    return TRUE;
+}
+
+void testsessionfunctions(IDirectPlay4A* pDP,
+                          HRESULT ehr1, HRESULT ehr2,
+                          HRESULT ehr3, HRESULT ehr4)
+{
+    DPID idFrom, idTo;
+    LPVOID lpvMsgBuffer = NULL;
+    DWORD dwMsgBufferSize = 0x80;
+    LPDPSESSIONDESC2 lpSessDesc = NULL;
+    DWORD dwDataSize;
+    HRESULT hr;
+
+    lpvMsgBuffer = GlobalAllocPtr(GHND, dwMsgBufferSize);
+    assert(lpvMsgBuffer != NULL);
+    hr = IDirectPlay3_Receive(pDP, &idFrom, &idTo, 0,
+                              lpvMsgBuffer, &dwMsgBufferSize);
+    ok(hr==ehr1, "IDirectPlay3_Receive returned: %lx"
+       ", expected: %lx", hr, ehr1);
+    hr = IDirectPlay3_GetSessionDesc(pDP, NULL, &dwDataSize);
+    /* Only attempt to allocate memory if GetSessionDesc was successful */
+    if (hr == DP_OK)
+    {
+        lpSessDesc = (LPDPSESSIONDESC2)GlobalAllocPtr(GHND, dwDataSize);
+        assert(lpSessDesc != NULL);
+    }
+    hr = IDirectPlay3_GetSessionDesc(pDP, lpSessDesc, &dwDataSize);
+    ok(hr==ehr2, "IDirectPlay3_GetSessionDesc returned: %lx"
+       ", expected: %lx", hr, ehr2);
+    /* FIXME: Find out what the lpSessDesc parameter is supposed to be. */
+    hr = IDirectPlay3_SetSessionDesc(pDP, lpSessDesc, 0);
+    ok(hr==ehr2, "IDirectPlay3_SetSessionDesc returned: %lx"
+       ", expected: %lx", hr, ehr2);
+    hr = IDirectPlay3_EnumGroupPlayers(pDP, 0, NULL,
+                                       enumgroupplayerscallback, NULL, 0);
+    ok(hr==ehr3, "IDirectPlay3_EnumGroupPlayers returned: %lx"
+       ", expected: %lx", hr, ehr3);
+    hr = IDirectPlay3_DestroyPlayer(pDP, 0);
+    ok(hr==ehr4, "IDirectPlay3_DestroyPlayer returned: %lx"
+       ", expected: %lx", hr, ehr4);
+    GlobalFreePtr(lpvMsgBuffer);
+    lpvMsgBuffer = NULL;
+    if (lpSessDesc != NULL)
+    {
+        GlobalFreePtr(lpSessDesc);
+        lpSessDesc = NULL;
+    }
+}
+
+
+int testdplayx()
+{
+    IDirectPlay4A* pDP = NULL;
+    IDirectPlayLobby* pDPL = NULL;
+    IDirectPlayLobby3A* pDPL3A = NULL;
+    DPCOMPOUNDADDRESSELEMENT Address;
+    LPVOID lpConnection = NULL;
+    DWORD AddressSize = 0;
+    HRESULT hr;
+
+    CoInitializeEx(NULL, COINIT_MULTITHREADED);
+    hr = CoCreateInstance(&CLSID_DirectPlay, NULL, CLSCTX_INPROC_SERVER,
+                          &IID_IDirectPlay4A, (LPVOID*) &pDP);
+    assert(hr == S_OK);
+    hr = DirectPlayLobbyCreateA(NULL, &pDPL, NULL, NULL, 0);
+    ok(hr==DP_OK,"DirectPlayLobbyCreateA returned: %lx",hr);
+    hr = IDirectPlayLobby_QueryInterface(pDPL, &IID_IDirectPlayLobby3A,
+                                         (LPVOID*) &pDPL3A);
+    ok(hr==DP_OK,"IDirectPlayLobby_QueryInterface returned: %lx",hr);
+    hr = IDirectPlayLobby_Release(pDPL);
+    ok(hr==0,"IDirectPlayLobby_Release returned: %lx",hr);
+    hr = IDirectPlay3_EnumConnections(pDP, &CLSID_DirectPlayTest,
+                                      &enumconnectionscallback, NULL, 1);
+    ok(hr==DP_OK,"IDirectPlay3_EnumConnections returned: %lx",hr);
+
+    Address.guidDataType = DPAID_ServiceProvider;
+    Address.dwDataSize = sizeof(GUID);
+    Address.lpData = (LPVOID)&DPSPGUID_TCPIP;
+    IDirectPlayLobby_CreateCompoundAddress(pDPL3A, &Address, 1,
+                                           NULL, &AddressSize);
+    lpConnection = GlobalAllocPtr(GHND, AddressSize);
+    assert(lpConnection != NULL);
+    hr = IDirectPlayLobby_CreateCompoundAddress(pDPL3A, &Address, 1,
+                                                lpConnection, &AddressSize);
+    ok(hr==DP_OK,"IDirectPlayLobby_CreateCompoundAddress returned: %lx",hr);
+
+    /* Test return values when the connection is uninitialized.
+       NOTE: this behavior is undocumented as far as I can tell. However,
+       at least one application (Icewind Dale) relies on it. */
+    testsessionfunctions(pDP, DPERR_UNINITIALIZED, DPERR_UNINITIALIZED,
+                              DPERR_UNINITIALIZED, DPERR_UNINITIALIZED);
+
+    /* Test return values when the connection is initialized.
+       NOTE: it is legal for InitializeConnection to fail if the return
+       value is DPERR_UNAVAILABLE. */
+    hr = IDirectPlay3_InitializeConnection(pDP, lpConnection, 0);
+    if (hr != DPERR_UNAVAILABLE)
+    {
+        ok(hr==DP_OK,"IDirectPlay3_InitializeConnection returned: %lx"
+                     ", expected: DP_OK",hr);
+        testsessionfunctions(pDP, DPERR_NOMESSAGES, DPERR_NOSESSIONS,
+                                  DPERR_INVALIDGROUP, DPERR_INVALIDPLAYER);
+
+        /* Test initialization of the connection when it has already been
+           successfully initialized. */
+        hr = IDirectPlay3_InitializeConnection(pDP, lpConnection, 0);
+        assert(hr == DPERR_ALREADYINITIALIZED);
+        ok(hr==DPERR_ALREADYINITIALIZED,
+           "IDirectPlay3_InitializeConnection returned: %lx"
+           ", expected: DPERR_ALREADYINITIALIZED",hr);
+    }
+
+    hr = IDirectPlayLobby_Release(pDPL3A);
+    ok(hr==0,"IDirectPlayLobby_Release returned: %lx",hr);
+    hr = IDirectPlay3_Release(pDP);
+    todo_wine
+    {
+        ok(hr==0,"IDirectPlay3_Release returned: %lx",hr);
+    }
+    GlobalFreePtr(lpConnection);
+    lpConnection = NULL;
+
+    CoUninitialize();
+    return 0;
+}
+
+START_TEST(dplayx)
+{
+    testdplayx();
+}
--- /dev/null	Sun Mar  9 04:57:43 2003
+++ dlls/dplayx/tests/.cvsignore	Fri Dec 26 17:23:14 2003
@@ -0,0 +1,4 @@
+Makefile
+dplayx_test.exe.spec.c
+dplayx.ok
+testlist.c


More information about the wine-patches mailing list