public async Task Move_ToBusyField_ShouldStayInPlace()
        {
            // Arrange
            var figure      = new Figure();
            var oldPosition = figure.Position;
            var figure1     = new Figure {
                Position = new Point(1, 1)
            };

            var board = new Board {
                Figures = new List <Figure>()
            };

            board.Figures.Add(figure);
            board.Figures.Add(figure1);

            var newPosition = new Point(1, 1);
            var command     = new CheckerCommand(figure, board.Figures, newPosition);

            // Act
            command.Move();

            // Assert
            figure.Position.Should().Be(oldPosition);
        }
        public async Task Move_ToTopFreePlace_ShouldMakeMove()
        {
            // Arrange
            var board = new Board {
                Figures = new List <Figure> {
                    new Figure()
                }
            };
            var position = new Point(1, 1);
            var command  = new CheckerCommand(board.Figures.First(), board.Figures, position);

            // Act
            command.Move();

            // Assert
            board.Figures.First().Position.Should().Be(position);
        }
        public async Task Move_ToOutOfBoard_ShouldStayInPlace(int oldX, int oldY, int newX, int newY)
        {
            // Arrange
            var figure      = new Figure();
            var oldPosition = figure.Position = new Point(oldX, oldY);
            var newPosition = new Point(newX, newY);
            var board       = new Board {
                Figures = new List <Figure>()
            };

            board.Figures.Add(figure);
            var command = new CheckerCommand(figure, board.Figures, newPosition);

            // Act
            command.Move();

            // Assert
            figure.Position.Should().Be(oldPosition);
        }
        public async Task Move_ToInaccessiblePlace_ShouldStayInPlace(int x, int y)
        {
            // Arrange
            var figure      = new Figure();
            var oldPosition = figure.Position;
            var newPosition = new Point(x, y);
            var board       = new Board {
                Figures = new List <Figure>()
            };

            board.Figures.Add(figure);
            var command = new CheckerCommand(figure, board.Figures, newPosition);

            // Act
            command.Move();

            // Assert
            figure.Position.Should().Be(oldPosition);
        }