public void TestPSocketArgsFactory() { PSocketArgsFactory sut = new PSocketArgsFactory(3000, 1000); var res1 = sut.GetEmptyArgs(); Assert.NotNull(res1); Assert.Null(res1.Buffer); var res2 = sut.AllocateArgs(); Assert.NotNull(res2); Assert.NotNull(res2.Buffer); Assert.Equal(0, res2.Offset); Assert.Equal(1000, res2.Count); var res3 = sut.AllocateArgs(); Assert.NotNull(res3); Assert.NotNull(res3.Buffer); Assert.Equal(1000, res3.Offset); Assert.Equal(1000, res3.Count); var res4 = sut.AllocateArgs(); Assert.NotNull(res4); Assert.NotNull(res4.Buffer); Assert.Equal(2000, res4.Offset); Assert.Equal(1000, res4.Count); Assert.Throws <ArgumentException>(() => sut.AllocateArgs()); sut.FreeArgs(res3); var res5 = sut.AllocateArgs(); Assert.NotNull(res5); Assert.NotNull(res5.Buffer); Assert.Equal(1000, res5.Offset); Assert.Equal(1000, res5.Count); var t1 = new SocketAsyncEventArgs(); Assert.Throws <ArgumentException>(() => sut.FreeArgs(t1)); PSocketAsyncEventArgs t2 = new PSocketAsyncEventArgs(); t2.SetBuffer(new byte[10]); Assert.Throws <ArgumentException>(() => sut.FreeArgs(t2 as ISocketAsyncEventArgs)); }
// Removing this test for now as it access the internet public void TestGETRequest() { int received = 0; var factory = new PSocketArgsFactory(8384, 512); using (var cli = new SocketConn(new PSocket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp), factory)) { var connect = cli.Connect( new NetAddress("178.62.88.250", 80), (a) => { if (a.BytesTransferred > 0) { received += a.BytesTransferred; } return(true); } ); connect.ContinueWith((res) => { Assert.True(res.Result); Task.Run(() => { var sb = new StringBuilder(); sb.Append("GET / HTTP/1.1\r\n"); sb.Append("Host: ionot.com\r\n"); sb.Append("Connection: keep-alive\r\n"); sb.Append("Cache-Control: no-cache\r\n"); sb.Append("User-Agent: PrimitiveBase\r\n"); sb.Append("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n"); sb.Append("Accept-Encoding: gzip, deflate\r\n"); sb.Append("Accept-Language: en-GB,en;q=0.9,en-US;q=0.8\r\n"); sb.Append("\r\n"); var bytes = ASCIIEncoding.ASCII.GetBytes(sb.ToString()); var send = cli.SendBuffer(bytes); send.ContinueWith((res2) => { Assert.True(res2.Result); }); }); }); Thread.Sleep(3000); Assert.NotEqual(0, received); } }