[PATCH 01/11] mfplat/tests: Add more comprehensive media source tests.

Nikolay Sivov nsivov at codeweavers.com
Wed Feb 5 00:22:49 CST 2020


On 2/4/20 8:17 PM, Derek Lesho wrote:
> +static BOOL expect_event(IMFMediaEventGenerator *gen, struct expected_event *expected, PROPVARIANT *out)
> +{
> +    HRESULT hr;
> +    IMFMediaEvent *event;
> +    BOOL ret = TRUE;
> +
> +    hr = IMFMediaEventGenerator_GetEvent(gen, 0, &event);
> +    ok(hr == S_OK, "Failed to get event from media source, hr %#x.\n", hr);
> +    {
> +        HRESULT status_code;
> +        hr = IMFMediaEvent_GetStatus(event, &status_code);
> +        ok (hr == S_OK, "Failed to get status code, hr %#x.\n", hr);
> +        ok (status_code == expected->status_code, "Unexpected status code %#x, expected %#x.\n",
> +            status_code, expected->status_code);
> +
> +        if (hr != S_OK || status_code != expected->status_code)
> +            ret = FALSE;
> +    }
> +    {
> +        MediaEventType event_type;
> +        hr = IMFMediaEvent_GetType(event, &event_type);
> +        ok(hr == S_OK, "Failed to event type, hr %#x.\n", hr);
> +        ok(event_type == expected->type, "Unexpected event type %u, expected %u.\n",
> +            event_type, expected->type);
> +
> +        if (hr != S_OK || event_type != expected->type)
> +            ret = FALSE;
> +    }
> +    if (expected->extended_type)
> +    {
> +        GUID extended_type;
> +        BOOL is_equal;
> +        hr = IMFMediaEvent_GetExtendedType(event, &extended_type);
> +        ok(hr == S_OK, "Failed to get extended type, hr %#x.\n", hr);
> +        is_equal = IsEqualGUID(&extended_type, expected->extended_type);
> +        ok(is_equal, "Unexpected extended type %s, expected %s.\n",
> +            debugstr_guid(&extended_type), debugstr_guid(expected->extended_type));
> +
> +        if (hr != S_OK || !is_equal)
> +            ret = FALSE;
> +    }
> +    if (out)
> +    {
> +        hr = IMFMediaEvent_GetValue(event, out);
> +        ok (hr == S_OK, "Failed to get value of event, hr %#x.\n", hr);
> +
> +        if (hr != S_OK)
> +            ret = FALSE;
> +    }
> +    IMFMediaEvent_Release(event);
> +
> +    return ret;
> +}
I don't understand the purpose of such code arrangement. If you want to 
test for equality, get all relevant attributes and use them in a single 
test condition. Once you have event object it's safe to assume that 
getters won't fail. If extended type is not used you might as well drop 
it from expected data and compare to a constant.



More information about the wine-devel mailing list