Alexandre Julliard : kernel32: Added some last error tests for mailslots.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Apr 3 06:48:20 CDT 2007


Module: wine
Branch: master
Commit: 2a86f347fad221bfbd4d0c71c4ac4f08be2a8999
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2a86f347fad221bfbd4d0c71c4ac4f08be2a8999

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Apr  2 20:25:08 2007 +0200

kernel32: Added some last error tests for mailslots.

---

 dlls/kernel32/tests/mailslot.c |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/dlls/kernel32/tests/mailslot.c b/dlls/kernel32/tests/mailslot.c
index eb50ab1..0c47fde 100644
--- a/dlls/kernel32/tests/mailslot.c
+++ b/dlls/kernel32/tests/mailslot.c
@@ -82,8 +82,10 @@ static int mailslot_test(void)
     memset(buffer, 0, sizeof buffer);
     ok( !ReadFile( hSlot, buffer, sizeof buffer, &count, NULL),
             "slot read\n");
+    ok( GetLastError() == ERROR_SEM_TIMEOUT, "wrong error %u\n", GetLastError() );
     ok( !WriteFile( hSlot, buffer, sizeof buffer, &count, NULL),
             "slot write\n");
+    ok( GetLastError() == ERROR_ACCESS_DENIED, "wrong error %u\n", GetLastError() );
 
     /* now try and openthe client, but with the wrong sharing mode */
     hWriter = CreateFile(szmspath, GENERIC_READ|GENERIC_WRITE,
@@ -103,8 +105,10 @@ static int mailslot_test(void)
      */
     ok( !ReadFile( hSlot, buffer, sizeof buffer/2, &count, NULL),
             "slot read\n");
+    ok( GetLastError() == ERROR_SEM_TIMEOUT, "wrong error %u\n", GetLastError() );
     ok( !WriteFile( hSlot, buffer, sizeof buffer/2, &count, NULL),
             "slot write\n");
+    ok( GetLastError() == ERROR_ACCESS_DENIED, "wrong error %u\n", GetLastError() );
 
     /*
      * we can't read from this client, 
@@ -112,10 +116,12 @@ static int mailslot_test(void)
      */
     ok( !ReadFile( hWriter, buffer, sizeof buffer/2, &count, NULL),
             "can read client\n");
+    todo_wine ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %u\n", GetLastError() );
     ok( WriteFile( hWriter, buffer, sizeof buffer/2, &count, NULL),
             "can't write client\n");
     ok( !ReadFile( hWriter, buffer, sizeof buffer/2, &count, NULL),
             "can read client\n");
+    todo_wine ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong error %u\n", GetLastError() );
 
     /*
      * seeing as there's something in the slot,
@@ -128,6 +134,7 @@ static int mailslot_test(void)
     /* but not again */
     ok( !ReadFile( hSlot, buffer, sizeof buffer, &count, NULL),
             "slot read\n");
+    ok( GetLastError() == ERROR_SEM_TIMEOUT, "wrong error %u\n", GetLastError() );
 
     /* now try open another writer... should fail */
     hWriter2 = CreateFile(szmspath, GENERIC_READ|GENERIC_WRITE,
@@ -183,6 +190,7 @@ static int mailslot_test(void)
 
     /* check there's still no data */
     ok( !ReadFile( hSlot, buffer, sizeof buffer, &count, NULL), "slot read\n");
+    ok( GetLastError() == ERROR_SEM_TIMEOUT, "wrong error %u\n", GetLastError() );
 
     /* write two messages */
     buffer[0] = 'a';
@@ -275,12 +283,25 @@ static int mailslot_test(void)
     /* check that reads fail */
     ok( !ReadFile( hSlot, buffer, sizeof buffer, &count, NULL),
         "3rd slot read succeeded\n");
+    ok( GetLastError() == ERROR_SEM_TIMEOUT, "wrong error %u\n", GetLastError() );
 
     /* finally close the mailslot and its client */
     ok( CloseHandle( hWriter2 ), "closing 2nd client\n");
     ok( CloseHandle( hWriter ), "closing the client\n");
     ok( CloseHandle( hSlot ), "closing the mailslot\n");
 
+    /* test timeouts */
+    hSlot = CreateMailslot( szmspath, 0, 1000, NULL );
+    ok( hSlot != INVALID_HANDLE_VALUE , "valid mailslot failed\n");
+    count = 0;
+    memset(buffer, 0, sizeof buffer);
+    dwTimeout = GetTickCount();
+    ok( !ReadFile( hSlot, buffer, sizeof buffer, &count, NULL), "slot read\n");
+    ok( GetLastError() == ERROR_SEM_TIMEOUT, "wrong error %u\n", GetLastError() );
+    dwTimeout = GetTickCount() - dwTimeout;
+    todo_wine ok( dwTimeout >= 1000, "timeout too short %u\n", dwTimeout );
+    ok( CloseHandle( hSlot ), "closing the mailslot\n");
+
     return 0;
 }
 




More information about the wine-cvs mailing list