2004-10-14 Dick Porter <dick@ximian.com>
authorDick Porter <dick@acm.org>
Thu, 14 Oct 2004 13:05:44 +0000 (13:05 -0000)
committerDick Porter <dick@acm.org>
Thu, 14 Oct 2004 13:05:44 +0000 (13:05 -0000)
* SocketTest.cs: Test the blocking status of accepted sockets

svn path=/trunk/mcs/; revision=34991

mcs/class/System/Test/System.Net.Sockets/ChangeLog
mcs/class/System/Test/System.Net.Sockets/SocketTest.cs

index 977b0aded7be7e37feb241eb5ae51dcd172ccfef..a726ad1413faa2360bfd0187097288f3ec3de71f 100644 (file)
@@ -1,3 +1,7 @@
+2004-10-14  Dick Porter  <dick@ximian.com>
+
+       * SocketTest.cs: Test the blocking status of accepted sockets
+
 2004-06-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
 
        * SocketTest.cs: added test for Select with empty lists. Changed the
index e506f0688e5e41c55e99adc1343479eb8a9d9bb8..32048e1401488e568b5ad999806050acc8533fcc 100644 (file)
@@ -43,6 +43,45 @@ namespace MonoTests.System.Net.Sockets
                        Socket.Select (list, list, list, 1000);
                }
                
+               private bool BlockingConnect (bool block)
+               {
+                       IPEndPoint ep = new IPEndPoint(IPAddress.Any, 1234);
+                       Socket server = new Socket(AddressFamily.InterNetwork,
+                                                  SocketType.Stream,
+                                                  ProtocolType.Tcp);
+                       server.Bind(ep);
+                       server.Blocking=block;
+
+                       server.Listen(0);
+
+                       Socket conn = new Socket (AddressFamily.InterNetwork,
+                                                 SocketType.Stream,
+                                                 ProtocolType.Tcp);
+                       conn.Connect (ep);
+
+                       Socket client = server.Accept();
+                       bool client_block = client.Blocking;
+
+                       client.Close();
+                       conn.Close();
+                       server.Close();
+                       
+                       return(client_block);
+               }
+
+               [Test]
+               public void AcceptBlockingStatus()
+               {
+                       bool block;
+
+                       block = BlockingConnect(true);
+                       Assertion.AssertEquals ("BlockingStatus01",
+                                               block, true);
+
+                       block = BlockingConnect(false);
+                       Assertion.AssertEquals ("BlockingStatus02",
+                                               block, false);
+               }
        }
 
 }