GetSocket() public method

public GetSocket ( ) : ISocket
return ISocket
        public void Getting_sockets_in_parallel_will_create_a_new_socket() {

            // Arrange
            var pool = new ConnectionPool(_factory.Create);

            // Act
            var s1 = pool.GetSocket();
            var s2 = pool.GetSocket();

            // Assert
            Assert.AreEqual(2, _factory.Sockets.Count);
        }
        public void Getting_sockets_sequentially_will_not_create_a_new_socket() {

            // Arrange
            var pool = new ConnectionPool(_factory.Create);

            // Act
            var s1 = pool.GetSocket();
            s1.Dispose();
            var s2 = pool.GetSocket();

            // Assert
            Assert.AreEqual(1, _factory.Sockets.Count);
        }
        public void Disposing_client_returns_socket_to_pool() {

            // Arrange
            var pool = new ConnectionPool(_factory.Create);

            // Act
            var client = new ClacksClient(pool);
            client.Dispose();
            var s = pool.GetSocket();

            // Assert
            Assert.AreEqual(1, _factory.Sockets.Count);
        }
        public void Disposing_pool_socket_does_not_dispose_underlying_socket() {

            // Arrange
            var pool = new ConnectionPool(_factory.Create);

            // Act
            var s1 = pool.GetSocket();
            s1.Dispose();

            // Assert
            Assert.AreEqual(1, _factory.Sockets.Count);
            Assert.AreNotSame(_factory.Sockets[0], s1);
            Assert.AreEqual(0, _factory.Sockets[0].DisposeCalled);
        }
        public void Getting_sockets_quickly_in_sequence_when_the_first_has_closed_will_return_closed_socket() {

            // Arrange
            var pool = new ConnectionPool(_factory.Create);

            // Act
            var s1 = pool.GetSocket();
            s1.Dispose();
            _factory.Sockets[0].Connected = false;
            var s2 = pool.GetSocket();

            // Assert
            Assert.AreEqual(1, _factory.Sockets.Count);
            Assert.IsFalse(s2.Connected);
        }
        public void Getting_sockets_slowly_in_sequence_when_the_first_has_closed_will_return_new_socket() {

            // Arrange
            var pool = new ConnectionPool(_factory.Create);
            pool.CheckInterval = TimeSpan.FromSeconds(1);

            // Act
            var s1 = pool.GetSocket();
            s1.Dispose();
            _factory.Sockets[0].Connected = false;
            Thread.Sleep(3000);
            var s2 = pool.GetSocket();

            // Assert
            Assert.AreEqual(2, _factory.Sockets.Count);
        }