public void Prevent_Movement_When_Start_X_Greater_Than_End_X()
        {
            var   board = Substitute.For <IChessBoard>();
            var   piece = Substitute.For <IChessPiece>();
            IRule rule  = new CannotMoveOnXAxisRule();

            Move move = new Move(piece, 1, 0, 0, 0);

            Assert.That(rule.IsMoveValid(board, move), Is.False);
        }
        public void Allow_Movement_When_Start_X_Equals_End_X()
        {
            var   board = Substitute.For <IChessBoard>();
            var   piece = Substitute.For <IChessPiece>();
            IRule rule  = new CannotMoveOnXAxisRule();

            Move move = new Move(piece, 3, 0, 3, 1);

            Assert.That(rule.IsMoveValid(board, move), Is.True);
        }
        public void Allow_Movement_Across_Multiple_Squares_When_Start_X_Equals_End_X()
        {
            var   board = Substitute.For <IChessBoard>();
            var   piece = Substitute.For <IChessPiece>();
            IRule rule  = new CannotMoveOnXAxisRule();

            board.Width.Returns(8);

            Move move = new Move(piece, 0, 0, 0, board.Height - 1);

            Assert.That(rule.IsMoveValid(board, move));
        }