mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-31 12:54:13 +00:00
ole32/tests: Improve the HGLOBAL stream tests for Seek.
This commit is contained in:
parent
9d8160c52a
commit
4cd390ca4e
1 changed files with 154 additions and 6 deletions
|
@ -75,23 +75,171 @@ static void test_streamonhglobal(IStream *pStream)
|
|||
hr = IStream_SetSize(pStream, ull);
|
||||
ok_ole_success(hr, "IStream_SetSize");
|
||||
|
||||
/* ignores HighPart */
|
||||
/* IStream_Seek -- NULL position argument */
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = 0;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_CUR, NULL);
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
|
||||
/* IStream_Seek -- valid position argument (seek from current position) */
|
||||
ull.u.HighPart = 0xCAFECAFE;
|
||||
ull.u.LowPart = 0xCAFECAFE;
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = 0;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_CUR, &ull);
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
ok(ull.u.LowPart == sizeof(data), "should have set LowPart to %d instead of %d\n", sizeof(data), ull.u.LowPart);
|
||||
ok(ull.u.HighPart == 0, "should have set HighPart to 0 instead of %d\n", ull.u.HighPart);
|
||||
|
||||
/* IStream_Seek -- invalid seek argument */
|
||||
ull.u.HighPart = 0xCAFECAFE;
|
||||
ull.u.LowPart = 0xCAFECAFE;
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = 123;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_END+1, &ull);
|
||||
todo_wine
|
||||
ok(hr == STG_E_SEEKERROR, "IStream_Seek should have returned STG_E_SEEKERROR instead of 0x%08x\n", hr);
|
||||
todo_wine
|
||||
ok(ull.u.LowPart == sizeof(data), "should have set LowPart to %d instead of %d\n", sizeof(data), ull.u.LowPart);
|
||||
todo_wine
|
||||
ok(ull.u.HighPart == 0, "should not have changed HighPart, got %d\n", ull.u.HighPart);
|
||||
|
||||
/* IStream_Seek -- valid position argument (seek to beginning) */
|
||||
ull.u.HighPart = 0xCAFECAFE;
|
||||
ull.u.LowPart = 0xCAFECAFE;
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = 0;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_SET, &ull);
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
ok(ull.u.LowPart == 0, "should have set LowPart to 0 instead of %d\n", ull.u.LowPart);
|
||||
ok(ull.u.HighPart == 0, "should have set HighPart to 0 instead of %d\n", ull.u.HighPart);
|
||||
|
||||
/* IStream_Seek -- valid position argument (seek to end) */
|
||||
ull.u.HighPart = 0xCAFECAFE;
|
||||
ull.u.LowPart = 0xCAFECAFE;
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = 0;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_END, &ull);
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
ok(ull.u.LowPart == 0, "should have set LowPart to 0 instead of %d\n", ull.u.LowPart);
|
||||
ok(ull.u.HighPart == 0, "should have set HighPart to 0 instead of %d\n", ull.u.HighPart);
|
||||
|
||||
/* IStream_Seek -- ignore HighPart in the move value (seek from current position) */
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = sizeof(data);
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_SET, &ull);
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
|
||||
ull.u.HighPart = 0xCAFECAFE;
|
||||
ull.u.LowPart = 0xCAFECAFE;
|
||||
ll.u.HighPart = -1;
|
||||
ll.u.LowPart = 0;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_CUR, &ull);
|
||||
todo_wine
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
todo_wine
|
||||
ok(ull.u.LowPart == sizeof(data), "should have set LowPart to %d instead of %d\n", sizeof(data), ull.u.LowPart);
|
||||
todo_wine
|
||||
ok(ull.u.HighPart == 0, "should have set HighPart to 0 instead of %d\n", ull.u.HighPart);
|
||||
|
||||
/* IStream_Seek -- ignore HighPart in the move value (seek to beginning) */
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = sizeof(data);
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_SET, &ull);
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
|
||||
ull.u.HighPart = 0xCAFECAFE;
|
||||
ull.u.LowPart = 0xCAFECAFE;
|
||||
ll.u.HighPart = -1;
|
||||
ll.u.LowPart = 0;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_SET, &ull);
|
||||
todo_wine
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
todo_wine
|
||||
ok(ull.u.LowPart == 0, "should have set LowPart to 0 instead of %d\n", ull.u.LowPart);
|
||||
todo_wine
|
||||
ok(ull.u.HighPart == 0, "should have set HighPart to 0 instead of %d\n", ull.u.HighPart);
|
||||
|
||||
/* ignores HighPart */
|
||||
ll.u.HighPart = -1;
|
||||
ll.u.LowPart = 0;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_CUR, NULL);
|
||||
todo_wine
|
||||
/* IStream_Seek -- invalid LowPart value (seek from current position) */
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = sizeof(data);
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_SET, &ull);
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
|
||||
ull.u.HighPart = 0xCAFECAFE;
|
||||
ull.u.LowPart = 0xCAFECAFE;
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = 0x80000000;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_CUR, &ull);
|
||||
todo_wine
|
||||
ok(hr == STG_E_SEEKERROR, "IStream_Seek should have returned STG_E_SEEKERROR instead of 0x%08x\n", hr);
|
||||
todo_wine
|
||||
ok(ull.u.LowPart == sizeof(data), "should have set LowPart to %d instead of %d\n", sizeof(data), ull.u.LowPart);
|
||||
ok(ull.u.HighPart == 0, "should have set HighPart to 0 instead of %d\n", ull.u.HighPart);
|
||||
|
||||
/* IStream_Seek -- invalid LowPart value (seek to beginning) */
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = sizeof(data);
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_SET, &ull);
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
|
||||
ull.u.HighPart = 0xCAFECAFE;
|
||||
ull.u.LowPart = 0xCAFECAFE;
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = 0x80000000;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_SET, &ull);
|
||||
todo_wine
|
||||
ok(hr == STG_E_SEEKERROR, "IStream_Seek should have returned STG_E_SEEKERROR instead of 0x%08x\n", hr);
|
||||
todo_wine
|
||||
ok(ull.u.LowPart == sizeof(data), "should have set LowPart to %d instead of %d\n", sizeof(data), ull.u.LowPart);
|
||||
ok(ull.u.HighPart == 0, "should have set HighPart to 0 instead of %d\n", ull.u.HighPart);
|
||||
|
||||
/* IStream_Seek -- valid LowPart value (seek to beginning) */
|
||||
ull.u.HighPart = 0xCAFECAFE;
|
||||
ull.u.LowPart = 0xCAFECAFE;
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = 0x7FFFFFFF;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_SET, &ull);
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
ok(ull.u.LowPart == 0x7FFFFFFF, "should have set LowPart to 0x7FFFFFFF instead of %08x\n", ull.u.LowPart);
|
||||
ok(ull.u.HighPart == 0, "should have set HighPart to 0 instead of %d\n", ull.u.HighPart);
|
||||
|
||||
/* IStream_Seek -- valid LowPart value (seek from current position) */
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = 0;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_SET, &ull);
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
|
||||
ull.u.HighPart = 0xCAFECAFE;
|
||||
ull.u.LowPart = 0xCAFECAFE;
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = 0x7FFFFFFF;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_CUR, &ull);
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
ok(ull.u.LowPart == 0x7FFFFFFF, "should have set LowPart to 0x7FFFFFFF instead of %08x\n", ull.u.LowPart);
|
||||
ok(ull.u.HighPart == 0, "should have set HighPart to 0 instead of %d\n", ull.u.HighPart);
|
||||
|
||||
/* IStream_Seek -- second seek allows you to go past 0x7FFFFFFF size */
|
||||
ull.u.HighPart = 0xCAFECAFE;
|
||||
ull.u.LowPart = 0xCAFECAFE;
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = 9;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_CUR, &ull);
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
ok(ull.u.LowPart == 0x80000008, "should have set LowPart to 0x80000008 instead of %08x\n", ull.u.LowPart);
|
||||
ok(ull.u.HighPart == 0, "should have set HighPart to 0 instead of %d\n", ull.u.HighPart);
|
||||
|
||||
/* IStream_Seek -- seek wraps position/size on integer overflow */
|
||||
ull.u.HighPart = 0xCAFECAFE;
|
||||
ull.u.LowPart = 0xCAFECAFE;
|
||||
ll.u.HighPart = 0;
|
||||
ll.u.LowPart = 0x7FFFFFFF;
|
||||
hr = IStream_Seek(pStream, ll, STREAM_SEEK_CUR, &ull);
|
||||
ok_ole_success(hr, "IStream_Seek");
|
||||
ok(ull.u.LowPart == 0x00000007, "should have set LowPart to 0x00000007 instead of %08x\n", ull.u.LowPart);
|
||||
todo_wine
|
||||
ok(ull.u.HighPart == 0, "should have set HighPart to 0 instead of %d\n", ull.u.HighPart);
|
||||
|
||||
hr = IStream_Commit(pStream, STGC_DEFAULT);
|
||||
ok_ole_success(hr, "IStream_Commit");
|
||||
|
||||
|
|
Loading…
Reference in a new issue