From: Bernhard Kölbl <bkoelbl@codeweavers.com> --- dlls/msvfw32/tests/mciwnd.c | 48 ++++++++++++++++++++++++++++++++++ dlls/msvfw32/tests/msvfw32.rc | 4 +++ dlls/msvfw32/tests/test.mp3 | Bin 0 -> 2156 bytes 3 files changed, 52 insertions(+) create mode 100644 dlls/msvfw32/tests/test.mp3 diff --git a/dlls/msvfw32/tests/mciwnd.c b/dlls/msvfw32/tests/mciwnd.c index 6599fd4be85..a54ab07ee4f 100644 --- a/dlls/msvfw32/tests/mciwnd.c +++ b/dlls/msvfw32/tests/mciwnd.c @@ -381,7 +381,55 @@ static void test_MCIWndCreate(void) DeleteFileA(fname); } +static WCHAR *load_resource(const WCHAR *res_name) +{ + static WCHAR path[MAX_PATH]; + DWORD written; + HANDLE file; + HRSRC res; + void *ptr; + + GetTempPathW(ARRAY_SIZE(path), path); + wcscat_s(path, ARRAY_SIZE(path), res_name); + + file = CreateFileW(path, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0); + ok(file != INVALID_HANDLE_VALUE, "creation of file %s failed, error %ld\n", debugstr_w(path), GetLastError()); + + res = FindResourceW(NULL, res_name, (LPCWSTR)RT_RCDATA); + ok(!!res, "failed to load resource %s, error %ld\n", debugstr_w(res_name), GetLastError()); + + ptr = LockResource(LoadResource(GetModuleHandleA(NULL), res)); + WriteFile(file, ptr, SizeofResource(GetModuleHandleA(NULL), res), &written, NULL); + ok(written == SizeofResource(GetModuleHandleA(NULL), res), "failed to write resource\n"); + CloseHandle(file); + + return path; +} + +static void test_audio_playback(void) +{ + HINSTANCE hisnt = GetModuleHandleW(NULL); + WCHAR *test_file = load_resource(L"test.mp3"); + HWND parent, mci_wnd; + DWORD error; + + parent = CreateWindowExW(0, L"static", L"msvfw32 test", WS_POPUP, 0, 0, 100, 100, 0, 0, 0, NULL); + ok(!!parent, "failed to create parent window\n"); + + mci_wnd = MCIWndCreateW(parent, hisnt, MCIWNDF_SHOWMODE, NULL); + ok(!!parent, "failed to create mci window\n"); + + error = SendMessageW(mci_wnd, MCIWNDM_OPENW, 0, (DWORD_PTR)test_file); + todo_wine ok(!error, "failed to set playback source, error %lu\n", error); + + pump_messages(); + + DestroyWindow(mci_wnd); + DestroyWindow(parent); +} + START_TEST(mciwnd) { test_MCIWndCreate(); + test_audio_playback(); } diff --git a/dlls/msvfw32/tests/msvfw32.rc b/dlls/msvfw32/tests/msvfw32.rc index 463e7448edd..8f4dbcb22f7 100644 --- a/dlls/msvfw32/tests/msvfw32.rc +++ b/dlls/msvfw32/tests/msvfw32.rc @@ -20,3 +20,7 @@ /* @makedep: msvfw32.manifest */ 1 RT_MANIFEST msvfw32.manifest + +/* ffmpeg -f lavfi -i "sine=frequency=500" -t 0.5 -ar 48000 -b:a 32k -f mp3 -acodec mp3 -write_xing 0 test.mp3 */ +/* @makedep: test.mp3 */ +test.mp3 RCDATA "test.mp3" diff --git a/dlls/msvfw32/tests/test.mp3 b/dlls/msvfw32/tests/test.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..57ec6e36c3093015a2920803ce4d4009052b70f8 GIT binary patch literal 2156 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 literal 0 HcmV?d00001 -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9704