예제 #1
0
        public void GetDiscoveredDiagonalAttackMoves_BishopH8BlackPawnsInitialPositionTargetInC3()
        {
            // arrange
            var s = new Side("G8",
                new PieceSet<Queen>(),
                new PieceSet<Bishop>(Bitboard.With.H8),
                new PieceSet<Knight>(),
                new PieceSet<Rook>(),
                BlackPawns.InitialPosition
                );

            //var expected = Bitboard.With.F4.G4.E3.G3.E2.F2.Build();

            // arrange
            var moves = s.GetDiscoveredDiagonalAttackMoves("C3", Bitboard.Empty);

            // assert
            moves.Should().Have.SameSequenceAs(
                new Move("G7", "G6"),
                new Move("G7", "G5")
                );
        }
예제 #2
0
        public void GetDiscoveredDiagonalAttackMoves_BishopH8KingF6TargetInC3()
        {
            // arrange
            var s = new Side("F6",
                new PieceSet<Queen>(),
                new PieceSet<Bishop>(Bitboard.With.H8),
                new PieceSet<Knight>(),
                new PieceSet<Rook>(),
                new WhitePawns()
                );

            var expected = Bitboard.With.F7.E7.G6.E6.F5.G5.Build();

            // arrange
            var moves = s.GetDiscoveredDiagonalAttackMoves("C3", Bitboard.Empty).AsMoveboard();

            // assert
            moves.Should().Be(expected);
        }
예제 #3
0
        public void GetDiscoveredDiagonalAttackMoves_BishopH1KingF3TargetInC6()
        {
            // arrange
            var s = new Side("F3",
                new PieceSet<Queen>(),
                new PieceSet<Bishop>(Bitboard.With.H1),
                new PieceSet<Knight>(),
                new PieceSet<Rook>(),
                new WhitePawns()
                );

            var expected = Bitboard.With.F4.G4.E3.G3.E2.F2.Build();

            // arrange
            var moves = s.GetDiscoveredDiagonalAttackMoves("C6", Bitboard.Empty).AsMoveboard();

            // assert
            moves.Should().Be(expected);
        }
예제 #4
0
        public void GetDiscoveredDiagonalAttackMoves_BishopH8BlackPawnF6WhitePawnG5TargetInC3()
        {
            // arrange
            var s = new Side("G8",
                new PieceSet<Queen>(),
                new PieceSet<Bishop>(Bitboard.With.H8),
                new PieceSet<Knight>(),
                new PieceSet<Rook>(),
                new BlackPawns(new Square("F6").AsBoard)
                );

            //var expected = Bitboard.With.F4.G4.E3.G3.E2.F2.Build();

            // arrange
            var moves = s.GetDiscoveredDiagonalAttackMoves("C3", Bitboard.With.G5.Build());

            // assert
            moves.Should().Have.SameSequenceAs(
                new Move("F6", "F5"),
                new Move("F6", "G5")
                );
        }
예제 #5
0
        public void GetDiscoveredDiagonalAttackMoves_BishopA8KingC6TargetInF3()
        {
            // arrange
            var s = new Side("C6",
                new PieceSet<Queen>(),
                new PieceSet<Bishop>(Bitboard.With.A8),
                new PieceSet<Knight>(),
                new PieceSet<Rook>(),
                new WhitePawns()
                );

            var expected = Bitboard.With.C7.D7.B6.D6.B5.C5.Build();

            // arrange
            var moves = s.GetDiscoveredDiagonalAttackMoves("F3", Bitboard.Empty).AsMoveboard();

            // assert
            moves.Should().Be(expected);
        }
예제 #6
0
        public void GetDiscoveredDiagonalAttackMoves_BishopA1RookInD4A8TargetInF6()
        {
            // arrange
            var s = new Side("G1",
                new PieceSet<Queen>(),
                new PieceSet<Bishop>(Bitboard.With.A1),
                new PieceSet<Knight>(),
                new PieceSet<Rook>(Bitboard.With.D4.A8),
                new WhitePawns()
                );

            var expected = Bitboard.With.Rank4.FileD.Except.D4.Build();

            // arrange
            var moves = s.GetDiscoveredDiagonalAttackMoves("F6", Bitboard.Empty).AsMoveboard();

            // assert
            moves.Should().Be(expected);
        }
예제 #7
0
        public void GetDiscoveredDiagonalAttackMoves_BishopA1KnightInD4A8TargetInF6()
        {
            // arrange
            var s = new Side("G1",
                new PieceSet<Queen>(),
                new PieceSet<Bishop>(Bitboard.With.A1),
                new PieceSet<Knight>(Bitboard.With.D4.A8),
                new PieceSet<Rook>(),
                new WhitePawns()
                );

            // arrange
            var moves = s.GetDiscoveredDiagonalAttackMoves("F6", Bitboard.Empty);

            // assert
            moves.Should().Have.SameSequenceAs(
                new Move("D4", "C2"),
                new Move("D4", "E2"),
                new Move("D4", "B3"),
                new Move("D4", "F3"),
                new Move("D4", "B5"),
                new Move("D4", "F5"),
                new Move("D4", "C6"),
                new Move("D4", "E6")
                );
        }
예제 #8
0
        public void GetDiscoveredDiagonalAttackMoves_BishopA1KingD4TargetInF6()
        {
            // arrange
            var s = new Side("D4",
                new PieceSet<Queen>(),
                new PieceSet<Bishop>(Bitboard.With.A1),
                new PieceSet<Knight>(),
                new PieceSet<Rook>(),
                new WhitePawns()
                );

            var expected = Bitboard.With.C4.C5.D5.E4.E3.D3.Build();

            // arrange
            var moves = s.GetDiscoveredDiagonalAttackMoves("F6", Bitboard.Empty).AsMoveboard();

            // assert
            moves.Should().Be(expected);
        }
예제 #9
0
        public void GetDiscoveredDiagonalAttackMoves_BishopH1WhitePawnsInitialPositionTargetInC6()
        {
            // arrange
            var s = new Side("G1",
                             new PieceSet<Queen>(),
                             new PieceSet<Bishop>(Bitboard.With.H1),
                             new PieceSet<Knight>(),
                             new PieceSet<Rook>(),
                             WhitePawns.InitialPosition
                );

            //var expected = Bitboard.With.F4.G4.E3.G3.E2.F2.Build();

            // arrange
            IEnumerable<Move> moves = s.GetDiscoveredDiagonalAttackMoves("C6", Bitboard.Empty);

            // assert
            moves.Should().Have.SameSequenceAs(
                new Move("G2", "G3"),
                new Move("G2", "G4")
                );
        }