Mike McCormack : kernel32: Add a short test for GetOverlappedResult.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Feb 21 05:04:06 CST 2006
Module: wine
Branch: refs/heads/master
Commit: f4b447aee7546c9921dd3a9c8d81ccdc6b1b1fae
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=f4b447aee7546c9921dd3a9c8d81ccdc6b1b1fae
Author: Mike McCormack <mike at codeweavers.com>
Date: Tue Feb 21 16:59:29 2006 +0900
kernel32: Add a short test for GetOverlappedResult.
---
dlls/kernel/tests/file.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 58 insertions(+), 0 deletions(-)
diff --git a/dlls/kernel/tests/file.c b/dlls/kernel/tests/file.c
index 093a893..e946413 100644
--- a/dlls/kernel/tests/file.c
+++ b/dlls/kernel/tests/file.c
@@ -1425,6 +1425,63 @@ static void test_OpenFile_exists(void)
ok( hFile == HFILE_ERROR, "hFile != HFILE_ERROR : %ld\n", GetLastError());
}
+static void test_overlapped(void)
+{
+ OVERLAPPED ov;
+ DWORD r, result;
+
+ /* GetOverlappedResult crashes if the 2nd or 3rd param are NULL */
+
+ memset( &ov, 0, sizeof ov );
+ result = 1;
+ r = GetOverlappedResult(0, &ov, &result, 0);
+ ok( r == TRUE, "should return false\n");
+ ok( result == 0, "result wrong\n");
+
+ result = 0;
+ ov.Internal = 0;
+ ov.InternalHigh = 0xabcd;
+ r = GetOverlappedResult(0, &ov, &result, 0);
+ ok( r == TRUE, "should return false\n");
+ ok( result == 0xabcd, "result wrong\n");
+
+ SetLastError( 0xb00 );
+ result = 0;
+ ov.Internal = STATUS_INVALID_HANDLE;
+ ov.InternalHigh = 0xabcd;
+ r = GetOverlappedResult(0, &ov, &result, 0);
+ ok (GetLastError() == ERROR_INVALID_HANDLE, "error wrong\n");
+ ok( r == FALSE, "should return false\n");
+ ok( result == 0xabcd, "result wrong\n");
+
+ result = 0;
+ ov.Internal = STATUS_PENDING;
+ ov.InternalHigh = 0xabcd;
+ r = GetOverlappedResult(0, &ov, &result, 0);
+ todo_wine {
+ ok (GetLastError() == ERROR_IO_INCOMPLETE, "error wrong\n");
+ }
+ ok( r == FALSE, "should return false\n");
+ ok( result == 0, "result wrong\n");
+
+ ov.hEvent = CreateEvent( NULL, 1, 1, NULL );
+ ov.Internal = STATUS_PENDING;
+ ov.InternalHigh = 0xabcd;
+ r = GetOverlappedResult(0, &ov, &result, 0);
+ ok (GetLastError() == ERROR_IO_INCOMPLETE, "error wrong\n");
+ ok( r == FALSE, "should return false\n");
+
+ ResetEvent( ov.hEvent );
+
+ ov.Internal = STATUS_PENDING;
+ ov.InternalHigh = 0;
+ r = GetOverlappedResult(0, &ov, &result, 0);
+ ok (GetLastError() == ERROR_IO_INCOMPLETE, "error wrong\n");
+ ok( r == FALSE, "should return false\n");
+
+ r = CloseHandle( ov.hEvent );
+ ok( r == TRUE, "close handle failed\n");
+}
START_TEST(file)
{
@@ -1455,4 +1512,5 @@ START_TEST(file)
test_async_file_errors();
test_read_write();
test_OpenFile_exists();
+ test_overlapped();
}
More information about the wine-cvs
mailing list