Merge pull request #2799 from BrzVlad/fix-conc-card-clean
[mono.git] / mcs / class / System / Test / System.Net.Sockets / TcpListenerTest.cs
index 92d505b99a62885c410f20861ee75f4b3be7e803..b8594b8f11e7e489de6a1834bcb4dda1c1d7f655 100644 (file)
@@ -15,16 +15,19 @@ using System.Net;
 using System.Net.Sockets;
 using NUnit.Framework;
 
+using MonoTests.Helpers;
+
 namespace MonoTests.System.Net.Sockets
 {
        [TestFixture]
-       public class TcpListenerTest : Assertion
+       public class TcpListenerTest
        {
                [Test]
                public void TcpListener ()
                {
+                       var port = NetworkHelpers.FindFreePort ();
                        // listen with a new listener (IPv4 is the default)
-                       TcpListener inListener = new TcpListener (8766);
+                       TcpListener inListener = new TcpListener (port);
                        inListener.Start();
                        
 
@@ -37,14 +40,14 @@ namespace MonoTests.System.Net.Sockets
                                        /// Only keep IPv4 addresses, our Server is in IPv4 only mode.
                                        outSock = new Socket (address.AddressFamily, SocketType.Stream,
                                                ProtocolType.IP);
-                                       IPEndPoint remote = new IPEndPoint (address, 8766);
+                                       IPEndPoint remote = new IPEndPoint (address, port);
                                        outSock.Connect (remote);
                                        break;
                                }
                        }
                        
                        // make sure the connection arrives
-                       Assert (inListener.Pending ());
+                       Assert.IsTrue (inListener.Pending ());
                        Socket inSock = inListener.AcceptSocket ();
 
                        // now send some data and see if it comes out the other end
@@ -60,9 +63,9 @@ namespace MonoTests.System.Net.Sockets
 
 
                        // let's see if it arrived OK
-                       Assert(ret != 0);
+                       Assert.IsTrue (ret != 0);
                        for (int i=0; i<len; i++) 
-                               Assert (inBuf[i] == outBuf [i]);
+                               Assert.IsTrue (inBuf[i] == outBuf [i]);
 
                        // tidy up after ourselves
                        inSock.Close ();
@@ -79,7 +82,7 @@ namespace MonoTests.System.Net.Sockets
                        new TcpListener (65535);
                        try { new TcpListener (65536); } catch { nex++; }
                        try { new TcpListener (100000); } catch { nex++; }
-                       Assert (nex == 3);                      
+                       Assert.IsTrue (nex == 3);                       
                }
 
                [Test]
@@ -106,7 +109,7 @@ namespace MonoTests.System.Net.Sockets
                class MyListener : TcpListener
                {
                        public MyListener ()
-                               : base (IPAddress.Loopback, 5000)
+                               : base (IPAddress.Loopback, NetworkHelpers.FindFreePort ())
                        {
                        }
 
@@ -124,23 +127,23 @@ namespace MonoTests.System.Net.Sockets
                public void PreStartStatus ()
                {
                        MyListener listener = new MyListener ();
-                       AssertEquals ("#01", false, listener.IsActive);
-                       Assert ("#02", null != listener.GetSocket ());
+                       Assert.AreEqual (false, listener.IsActive, "#01");
+                       Assert.IsTrue (null != listener.GetSocket (), "#02");
                        try {
                                listener.AcceptSocket ();
-                               Fail ("Exception not thrown");
+                               Assert.Fail ("Exception not thrown");
                        } catch (InvalidOperationException) {
                        }
 
                        try {
                                listener.AcceptTcpClient ();
-                               Fail ("Exception not thrown");
+                               Assert.Fail ("Exception not thrown");
                        } catch (InvalidOperationException) {
                        }
 
                        try {
                                listener.Pending ();
-                               Fail ("Exception not thrown");
+                               Assert.Fail ("Exception not thrown");
                        } catch (InvalidOperationException) {
                        }
 
@@ -152,20 +155,42 @@ namespace MonoTests.System.Net.Sockets
                {
                        MyListener listener = new MyListener ();
                        listener.Start ();
-                       AssertEquals ("#01", true, listener.IsActive);
-                       Assert ("#02", null != listener.GetSocket ());
+                       Assert.AreEqual (true, listener.IsActive, "#01");
+                       Assert.IsTrue (null != listener.GetSocket (), "#02");
                        
                        Socket sock = listener.GetSocket ();
                        listener.Start (); // Start called twice
-                       AssertEquals ("#03", true, listener.IsActive);
-                       Assert ("#04", null != listener.GetSocket ());
+                       Assert.AreEqual (true, listener.IsActive, "#03");
+                       Assert.IsTrue (null != listener.GetSocket (), "#04");
 
-                       AssertEquals ("#05", false, listener.Pending ());
+                       Assert.AreEqual (false, listener.Pending (), "#05");
 
                        listener.Stop ();
-                       AssertEquals ("#06", false, listener.IsActive);
-                       Assert ("#07", null != listener.GetSocket ());
-                       Assert ("#08", sock != listener.GetSocket ());
+                       Assert.AreEqual (false, listener.IsActive, "#06");
+                       Assert.IsTrue (null != listener.GetSocket (), "#07");
+                       Assert.IsTrue (sock != listener.GetSocket (), "#08");
+               }
+
+               [Test]
+               public void StartListenMoreThan5 ()
+               {
+                       var port = NetworkHelpers.FindFreePort ();
+                       TcpListener listen = new TcpListener (IPAddress.Loopback, port);
+
+                       listen.Start (6);
+                       listen.Stop ();
+                       
+                       listen.Start (256);
+                       listen.Stop ();
+                       
+                       listen.Start (1024);
+                       listen.Stop ();
+
+                       listen.Start (32768);
+                       listen.Stop ();
+                       
+                       listen.Start (65536);
+                       listen.Stop ();
                }
        }
 }