예제 #1
0
        public void GetDiscoveredStraightAttackMoves_RookE1PawnE3TargetE7_ReturnsEmpty()
        {
            // arrange
            var s = new Side("G1",
                new PieceSet<Queen>(),
                new PieceSet<Bishop>(),
                new PieceSet<Knight>(),
                new PieceSet<Rook>(new Square("E1")),
                new WhitePawns(Bitboard.With.A3.Build())
                );

            // act
            var result = s.GetDiscoverdStraightAttackMoves(new Square("E7"), Bitboard.Empty);

            // assert
            result.Count().Should().Be(0);
        }
예제 #2
0
        public void GetDiscoveredStraightAttackMoves_RookE1PawnE3EnemyD4TargetE7_ReturnsE3D4()
        {
            // arrange
            var s = new Side("G1",
                new PieceSet<Queen>(),
                new PieceSet<Bishop>(),
                new PieceSet<Knight>(),
                new PieceSet<Rook>(new Square("E1")),
                new WhitePawns(Bitboard.With.Rank2.E3.Except.E2.Build())
                );

            // act
            var result = s.GetDiscoverdStraightAttackMoves(new Square("E7"), new Square("D4").AsBoard);

            // assert
            result.Should().Have.SameSequenceAs(
                new Move("E3", "D4")
                );
        }
예제 #3
0
        public void GetDiscoveredStraightAttackMoves_RookA4PawnB4TargetE4_ReturnsB4B5()
        {
            // arrange
            var s = new Side("G1",
                new PieceSet<Queen>(),
                new PieceSet<Bishop>(),
                new PieceSet<Knight>(),
                new PieceSet<Rook>(new Square("A4")),
                new WhitePawns(Bitboard.With.Rank2.B4.Except.B2.Build())
                );

            // act
            var result = s.GetDiscoverdStraightAttackMoves(new Square("E4"), Bitboard.Empty);

            // assert
            result.Should().Have.SameSequenceAs(
                new Move("B4", "B5")
                );
        }
예제 #4
0
        public void GetDiscoveredStraightAttackMoves_RookE1KnightE2TargetE7_AllKnightMoves()
        {
            // arrange
            var s = new Side("A1",
                new PieceSet<Queen>(),
                new PieceSet<Bishop>(),
                new PieceSet<Knight>(new Square("E2")),
                new PieceSet<Rook>(new Square("E1")),
                new WhitePawns()
                );

            var expected = new PieceSet<Knight>(new Square("E2")).GetMoves(Bitboard.Empty, Bitboard.Empty);

            // act
            var result = s.GetDiscoverdStraightAttackMoves(new Square("E7"), Bitboard.Empty);

            // assert
            result.Should().Have.SameSequenceAs(expected);
        }
예제 #5
0
        public void GetDiscoveredStraightAttackMoves_RookE1KingE3TargetE7()
        {
            // arrange
            var s = new Side("E3",
                             new PieceSet<Queen>(),
                             new PieceSet<Bishop>(),
                             new PieceSet<Knight>(),
                             new PieceSet<Rook>(new Square("E1")),
                             new WhitePawns()
                );

            IEnumerable<Move> expected = new PieceSet<King>(new Square("E3")).GetMoves(Bitboard.Empty, Bitboard.Empty,
                                                                                       Bitboard.Full,
                                                                                       ~Bitboard.With.FileE.Build());

            // act
            IEnumerable<Move> result = s.GetDiscoverdStraightAttackMoves(new Square("E7"), Bitboard.Empty);

            // assert
            result.Should().Have.SameSequenceAs(expected);
        }