[PATCH 1/5] dmusic: Add some tests for enumerating and creating ports.
Christian Costa
titan.costa at gmail.com
Thu Mar 29 01:52:37 CDT 2012
---
configure.ac | 1
dlls/dmusic/tests/Makefile.in | 7 +++
dlls/dmusic/tests/dmusic.c | 100 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 108 insertions(+), 0 deletions(-)
create mode 100644 dlls/dmusic/tests/Makefile.in
create mode 100644 dlls/dmusic/tests/dmusic.c
diff --git a/configure.ac b/configure.ac
index 805825d..f55b2ff 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2528,6 +2528,7 @@ WINE_CONFIG_DLL(dmscript)
WINE_CONFIG_DLL(dmstyle)
WINE_CONFIG_DLL(dmsynth)
WINE_CONFIG_DLL(dmusic)
+WINE_CONFIG_TEST(dlls/dmusic/tests)
WINE_CONFIG_DLL(dmusic32,,[implib])
WINE_CONFIG_DLL(dnsapi,,[implib])
WINE_CONFIG_TEST(dlls/dnsapi/tests)
diff --git a/dlls/dmusic/tests/Makefile.in b/dlls/dmusic/tests/Makefile.in
new file mode 100644
index 0000000..3a762f2
--- /dev/null
+++ b/dlls/dmusic/tests/Makefile.in
@@ -0,0 +1,7 @@
+TESTDLL = dmusic.dll
+IMPORTS = oleaut32 ole32 uuid
+
+C_SRCS = \
+ dmusic.c
+
+ at MAKE_TEST_RULES@
diff --git a/dlls/dmusic/tests/dmusic.c b/dlls/dmusic/tests/dmusic.c
new file mode 100644
index 0000000..62fe0a3
--- /dev/null
+++ b/dlls/dmusic/tests/dmusic.c
@@ -0,0 +1,100 @@
+/*
+ * Unit tests for dmusic functions
+ *
+ * Copyright (C) 2012 Christian Costa
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#define COBJMACROS
+
+#include <stdio.h>
+
+#include "wine/test.h"
+#include "uuids.h"
+#include "ole2.h"
+#include "initguid.h"
+#include "dmusici.h"
+
+static inline char* debugstr_guid(CONST GUID *id)
+{
+ static char string[39];
+ sprintf(string, "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
+ id->Data1, id->Data2, id->Data3,
+ id->Data4[0], id->Data4[1], id->Data4[2], id->Data4[3],
+ id->Data4[4], id->Data4[5], id->Data4[6], id->Data4[7] );
+ return string;
+}
+
+static void test_dmusic(void)
+{
+ IDirectMusic *dmusic = NULL;
+ HRESULT hr;
+ ULONG index = 0;
+ DMUS_PORTCAPS port_caps;
+ DMUS_PORTPARAMS port_params;
+ IDirectMusicPort *port = NULL;
+
+ hr = CoCreateInstance(&CLSID_DirectMusic, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectMusic, (LPVOID*)&dmusic);
+ ok(hr == S_OK, "CoCreateInstance returned: %x\n", hr);
+
+ port_params.dwSize = sizeof(port_params);
+ port_params.dwValidParams = DMUS_PORTPARAMS_CHANNELGROUPS | DMUS_PORTPARAMS_AUDIOCHANNELS;
+ port_params.dwChannelGroups = 1;
+ port_params.dwAudioChannels = 2;
+
+ /* No port can be created before SetDirectSound is called */
+ hr = IDirectMusic_CreatePort(dmusic, &GUID_NULL, &port_params, &port, NULL);
+ todo_wine ok(hr == DMUS_E_DSOUND_NOT_SET, "IDirectMusic_CreatePort returned: %x\n", hr);
+
+ hr = IDirectMusic_SetDirectSound(dmusic, NULL, NULL);
+ ok(hr == S_OK, "IDirectMusic_SetDirectSound returned: %x\n", hr);
+
+ /* Test creation of default port with GUID_NULL */
+ hr = IDirectMusic_CreatePort(dmusic, &GUID_NULL, &port_params, &port, NULL);
+ todo_wine ok(hr == S_OK, "IDirectMusic_CreatePort returned: %x\n", hr);
+
+ port_caps.dwSize = sizeof(port_caps);
+ while (IDirectMusic_EnumPort(dmusic, index, &port_caps) == S_OK)
+ {
+ ok(port_caps.dwSize == sizeof(port_caps), "DMUS_PORTCAPS dwSize member is wrong (%u)\n", port_caps.dwSize);
+ trace("Port %u:\n", index);
+ trace(" dwFlags = %x\n", port_caps.dwFlags);
+ trace(" guidPort = %s\n", debugstr_guid(&port_caps.guidPort));
+ trace(" dwClass = %u\n", port_caps.dwClass);
+ trace(" dwType = %u\n", port_caps.dwType);
+ trace(" dwMemorySize = %u\n", port_caps.dwMemorySize);
+ trace(" dwMaxChannelGroups = %u\n", port_caps.dwMaxChannelGroups);
+ trace(" dwMaxVoices = %u\n", port_caps.dwMaxVoices);
+ trace(" dwMaxAudioChannels = %u\n", port_caps.dwMaxAudioChannels);
+ trace(" dwEffectFlags = %x\n", port_caps.dwEffectFlags);
+ trace(" wszDescription = %s\n", wine_dbgstr_w(port_caps.wszDescription));
+ index++;
+ }
+
+ if (port)
+ IDirectMusicPort_Release(port);
+ if (dmusic)
+ IDirectMusic_Release(dmusic);
+}
+
+START_TEST(dmusic)
+{
+ CoInitializeEx(NULL, COINIT_MULTITHREADED);
+
+ test_dmusic();
+
+ CoUninitialize();
+}
More information about the wine-patches
mailing list