public void FahClientCommand_ExecuteThrowsInvalidOperationExceptionWhenConnectionIsNotConnected()
        {
            // Arrange
            var command = new FahClientCommand(new FahClientConnection("foo", 2000));

            // Act & Assert
            Assert.Throws <InvalidOperationException>(() => command.Execute());
        }
 public void FahClientCommand_ExecuteThrowsInvalidOperationExceptionWhenTcpConnectionIsNoLongerConnected()
 {
     // Arrange
     using (var connection = new MockFahClientConnection())
     {
         connection.Open();
         var command = new FahClientCommand(connection);
         // Act & Assert
         Assert.Throws <InvalidOperationException>(() => command.Execute());
     }
 }
        public void FahClientCommand_ExecuteRethrowsExceptionFromStreamWriteAndClosesTheConnection()
        {
            // Arrange
            Func <TcpConnection> factory = () => new MockTcpConnection(() => new MockStreamThrowsOnWrite());

            using (var connection = new FahClientConnection("foo", 2000, new MockTcpConnectionFactory(factory)))
            {
                connection.Open();
                var command = new FahClientCommand(connection);
                // Act & Assert
                Assert.Throws <IOException>(() => command.Execute());
                Assert.IsFalse(connection.Connected);
            }
        }
        public void FahClientCommand_ExecuteWritesNullCommandTextToConnection()
        {
            // Arrange
            var tcpConnectionFactory = new MockTcpConnectionFactory();

            using (var connection = new FahClientConnection("foo", 2000, tcpConnectionFactory))
            {
                connection.Open();
                var command = new FahClientCommand(connection, null);
                // Act
                int bytesWritten = command.Execute();
                // Assert
                Assert.AreEqual(0, bytesWritten);
                var memoryStream = (MemoryStream)tcpConnectionFactory.TcpConnection.GetStream();
                Assert.AreEqual("", Encoding.ASCII.GetString(memoryStream.ToArray()));
            }
        }