示例#1
0
        public static void ShouldCalculateValueToPlayer()
        {
            whiteKnight = (Knight)board['b', 3].Piece.Object;

            var move = new Move(whitePlayer, whiteKnight, board['a', 1]);

            move.OutcomeValue.Should().Be(2);
        }
示例#2
0
        public static void ShouldDetectWhenMoveWillResultInCheck()
        {
            Knight blackKnight = (Knight)board['b', 5].Piece.Object;

            var move = new Move(blackPlayer, blackKnight, board['c', 3]);

            move.GetMoveType().Should().Contain(Move.MoveType.Check);
        }
示例#3
0
        public static void ShouldDetectWhenMoveWillResultInCheckmate()
        {
            Knight blackKnight = (Knight)board['g', 7].Piece.Object;

            Move move = new Move(blackPlayer, blackKnight, board['f', 5]);

            move.GetMoveType().Should().Contain(Move.MoveType.Checkmate);
        }
示例#4
0
        public static void ShouldFindAllValidMoveDestinations()
        {
            Board board = new Game.Simulation.Board(squares: Game.Simulation.Board.DefaultEmptySquares());

            Piece knight = new Knight(Color.white);

            board['e', 4].Piece = knight;

            List <Square> possibleMoves = knight.FindAllPossibleLegalMoveDestinations();

            AssertContains(actual: possibleMoves, board['f', 2],
                           board['d', 2],
                           board['c', 3],
                           board['c', 5],
                           board['d', 6],
                           board['f', 6],
                           board['g', 5],
                           board['g', 3]);
        }
示例#5
0
        public static void ShouldFindOwnPiecesOnBoard()
        {
            Pawn   pawnF2   = (Pawn)Piece.Create('♙');
            Pawn   pawnG2   = (Pawn)Piece.Create('♙');
            Knight knightG1 = (Knight)Piece.Create('♘');

            var squares = new Square[, ]
            {
                { new Square('♜', 'a', 1), new Square('♟', 'a', 2), new Square(' ', 'a', 3), new Square(' ', 'a', 4), new Square(' ', 'a', 5), new Square(' ', 'a', 6), new Square(' ', 'a', 7), new Square(' ', 'a', 8) },

                { new Square(' ', 'b', 1), new Square(' ', 'b', 2), new Square(' ', 'b', 3), new Square(' ', 'b', 4), new Square(' ', 'b', 5), new Square(' ', 'b', 6), new Square(' ', 'b', 7), new Square(' ', 'b', 8) },

                { new Square(' ', 'c', 1), new Square(' ', 'c', 2), new Square(' ', 'c', 3), new Square(' ', 'c', 4), new Square(' ', 'c', 5), new Square(' ', 'c', 6), new Square(' ', 'c', 7), new Square(' ', 'c', 8) },

                { new Square(' ', 'd', 1), new Square(' ', 'd', 2), new Square(' ', 'd', 3), new Square(' ', 'd', 4), new Square(' ', 'd', 5), new Square(' ', 'd', 6), new Square(' ', 'd', 7), new Square(' ', 'd', 8) },

                { new Square(' ', 'e', 1), new Square(' ', 'e', 2), new Square(' ', 'e', 3), new Square(' ', 'e', 4), new Square(' ', 'e', 5), new Square(' ', 'e', 6), new Square(' ', 'e', 7), new Square(' ', 'e', 8) },

                { new Square('♝', 'f', 1), new Square(' ', 'f', 2), new Square(' ', 'f', 3), new Square(' ', 'f', 4), new Square(' ', 'f', 5), new Square(' ', 'f', 6), new Square(pawnF2, 'f', 7), new Square(' ', 'f', 8) },

                { new Square(' ', 'g', 1), new Square('♟', 'g', 2), new Square(' ', 'g', 3), new Square(' ', 'g', 4), new Square(' ', 'g', 5), new Square(' ', 'g', 6), new Square(pawnG2, 'g', 7), new Square(knightG1, 'g', 8) },

                { new Square(' ', 'h', 1), new Square(' ', 'h', 2), new Square(' ', 'h', 3), new Square(' ', 'h', 4), new Square(' ', 'h', 5), new Square(' ', 'h', 6), new Square(' ', 'h', 7), new Square(' ', 'h', 8) }
            };

            var mock      = new Mock <Board>(MockBehavior.Default);
            var mockBoard = mock.Object;

            mock.Setup(
                self => self.Squares)
            .Returns(
                () => squares);

            Player player = new AI(Color.white);

            player.Board = mockBoard;
            HashSet <IPiece> pieces = player.findOwnPiecesOnBoard(mockBoard);

            //checks that pawnF2, pawnG2, and knightG1 (and nothing else) are in pieces, but in no particular order
            AdditionalCollectionAssertions.AssertContains(actual: pieces, knightG1, pawnF2, pawnG2);
        }