Testing edge cases and undocumented behavior

Joerg-Cyril.Hoehle at t-systems.com Joerg-Cyril.Hoehle at t-systems.com
Fri Aug 26 05:53:02 CDT 2011

Vincent Povirk wrote:
>A test that passes on Windows and fails on Wine is not sufficient to
>motivate a change to Wine.

I wished Wine had "wine_dont" beside "todo_wine".  Exact same
behaviour, it justs reads differently.

2 examples:

mmdevapi has a bug where after Initialize(SHARED, unsupported_format)
is returned with an error, Initialize(SHARED, supported_format) fails
with ALREADY_INITIALIZED, yet the device is unusable.  I've written
tests to detect this, because I want to know if MS fixes that in w8,
but I don't advise Wine to mimic that behavior now.

if (mode == SHARED && ...) wine_dont
    ok(hr == E_ALREADY_INITIALIZED, "Initialize #2 returned %08u\n", hr);
    ok(hr == S_OK, "Initialize #2 returned %08u\n", hr);
Should MS fix the apparent bug, remove the 3 topmost lines.

The MIDI player MCISEQ.DLL was obviously rewritten for NT: my tests
reveal numerous differences in the details.  Most visible: the
MCI_RESUME command was dropped.  In w9x, an app could implement:
if (window_msg == lost_focus)
  mciSendCommand("Pause all");
if (window_msg == got_focus)
  mciSendCommand("Resume all");
and it would continue playing A/V where it left off.  Since NT/XP,
it'll loose music after its window is activated again.

Wine's MCI supports the Resume command, presumably because it was
written in 1999.  I've put some todo_wine in the MCI tests that should
read wine_dont instead of todo_wine because I don't want somebody to
come by and "fix" the deviation from XP by dropping the Resume command.

	Jörg Höhle

More information about the wine-devel mailing list