[2/6] wininet/tests: Add tests for asynchronous InternetReadFileEx.

Jacek Caban jacek at codeweavers.com
Tue Apr 26 07:30:09 CDT 2016


Hi Sebastian,

On 04/25/16 21:41, Sebastian Lackner wrote:
> +    memset( &ib, 0, sizeof(ib) );
> +    memset( buffer, 0, sizeof(buffer) );
> +    ib.dwStructSize = sizeof(ib);
> +    for (count = 0; count < sizeof(buffer); count += ib.dwBufferLength)
> +    {
> +        ib.lpvBuffer = buffer + count;
> +        ib.dwBufferLength = sizeof(buffer) - count;
> +
> +        SET_OPTIONAL( INTERNET_STATUS_RECEIVING_RESPONSE );
> +        SET_OPTIONAL( INTERNET_STATUS_RESPONSE_RECEIVED );
> +
> +        ret = InternetReadFileExA( req, &ib, 0, 0xdeadbeef );
> +        if (!ret)
> +        {
> +            ok( GetLastError() == ERROR_IO_PENDING, "expected ERROR_IO_PENDING, got %u\n", GetLastError() );
> +            SET_EXPECT( INTERNET_STATUS_REQUEST_COMPLETE );
> +            SetEvent( conn_wait_event );
> +            WaitForSingleObject( hCompleteEvent, INFINITE );
> +            ok( req_error == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", req_error );
> +            CHECK_NOTIFIED( INTERNET_STATUS_REQUEST_COMPLETE );
> +        }

It's a nice way to force async read, but when you add tests with
predictable reads it would be nice to take more advantage of that. What
do you think about:

- call InternetReadFileEx and check that it's done sync
- call InternetReadFileEx and check that it's done async
- set conn_wait_event, wait completion and make sure we read all
remaining data
- call InternetReadFileEx and make sure it synchronously hits the end of
data

Thanks,
Jacek



More information about the wine-devel mailing list