fixed tests
[mono.git] / mcs / class / System / Test / System.Net.Sockets / TcpClientTest.cs
1 // System.Net.Sockets.TcpClientTest.cs\r
2 //\r
3 // Authors:\r
4 //    Phillip Pearson (pp@myelin.co.nz)\r
5 //    Martin Willemoes Hansen (mwh@sysrq.dk)\r
6 //\r
7 // (C) Copyright 2001 Phillip Pearson (http://www.myelin.co.nz)\r
8 // (C) Copyright 2003 Martin Willemoes Hansen\r
9 //\r
10 \r
11 using System;\r
12 using System.Net;\r
13 using System.Net.Sockets;\r
14 using NUnit.Framework;\r
15 \r
16 namespace MonoTests.System.Net.Sockets {\r
17 \r
18         /// <summary>\r
19         /// Tests System.Net.Sockets.TcpClient\r
20         /// </summary>\r
21         [TestFixture]\r
22         public class TcpClientTest {\r
23                 \r
24                 /// <summary>\r
25                 /// Tests the TcpClient object\r
26                 /// (from System.Net.Sockets)\r
27                 /// </summary>\r
28                 [Test]\r
29                 public void TcpClient()\r
30                 {\r
31                         // set up a listening Socket\r
32                         Socket lSock = new Socket(AddressFamily.InterNetwork,\r
33                                 SocketType.Stream, ProtocolType.Tcp);\r
34                         \r
35                         lSock.Bind(new IPEndPoint(IPAddress.Any, 8765));\r
36                         lSock.Listen(-1);\r
37 \r
38 \r
39                         // connect to it with a TcpClient\r
40                         TcpClient outClient = new TcpClient("localhost", 8765);\r
41                         Socket inSock = lSock.Accept();\r
42 \r
43                         \r
44                         // now try exchanging data\r
45                         NetworkStream stream = outClient.GetStream();\r
46 \r
47                         const int len = 1024;\r
48                         byte[] outBuf = new Byte[len];\r
49                         for (int i=0; i<len; i++) \r
50                         {\r
51                                 outBuf[i] = (byte)(i % 256);\r
52                         }\r
53 \r
54                         // send it\r
55                         stream.Write(outBuf,0,len);\r
56 \r
57                         // and see if it comes back\r
58                         byte[] inBuf = new Byte[len];\r
59                         int ret = inSock.Receive(inBuf, 0, len, 0);\r
60                         Assertion.Assert(ret != 0);\r
61 \r
62                         for (int i=0; i<len; i++) \r
63                         {\r
64                                 Assertion.Assert(inBuf[i] == outBuf[i]);\r
65                         }\r
66                         \r
67 \r
68                         // tidy up\r
69                         inSock.Close();\r
70                         outClient.Close();\r
71                         lSock.Close();\r
72                         \r
73                 }       \r
74 \r
75 #if NET_2_0\r
76                 [Test]\r
77                 [ExpectedException (typeof(ArgumentNullException))]\r
78                 public void ConnectMultiNull ()\r
79                 {\r
80                         TcpClient client = new TcpClient ();\r
81                         IPAddress[] ipAddresses = null;\r
82                         \r
83                         client.Connect (ipAddresses, 1234);\r
84                 }\r
85                 \r
86                 [Test]\r
87                 public void ConnectMultiAny ()\r
88                 {\r
89                         TcpClient client = new TcpClient ();\r
90                         IPAddress[] ipAddresses = new IPAddress[1];\r
91                         \r
92                         ipAddresses[0] = IPAddress.Any;\r
93                         \r
94                         try {\r
95                                 client.Connect (ipAddresses, 1234);\r
96                                 Assert.Fail ("ConnectMultiAny #1");\r
97                         } catch (SocketException ex) {\r
98                                 Assertion.AssertEquals ("ConnectMultiAny #2",\r
99                                                         10049, ex.ErrorCode);\r
100                         } catch {\r
101                                 Assert.Fail ("ConnectMultiAny #3");\r
102                         }\r
103                 }\r
104                 \r
105                 [Test]\r
106                 public void ConnectMultiRefused ()\r
107                 {\r
108                         TcpClient client = new TcpClient ();\r
109                         IPAddress[] ipAddresses = new IPAddress[1];\r
110                         \r
111                         ipAddresses[0] = IPAddress.Loopback;\r
112                         \r
113                         try {\r
114                                 client.Connect (ipAddresses, 1234);\r
115                                 Assert.Fail ("ConnectMultiRefused #1");\r
116                         } catch (SocketException ex) {\r
117                                 Assertion.AssertEquals ("ConnectMultiRefused #2", 10061, ex.ErrorCode);\r
118                         } catch {\r
119                                 Assert.Fail ("ConnectMultiRefused #3");\r
120                         }\r
121                 }\r
122                 \r
123 #endif\r
124                 \r
125         }\r
126 \r
127 }\r