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