public void Execute_can_castle_both_side(Colours colour, bool side) { int rank = colour == Colours.White ? 1 : 8; var king = new KingEntity(colour); var kingStartFile = King.StartPositionFor(colour).X; var kingDestinationFile = side ? ChessFile.G : ChessFile.C; var kingStartLoc = $"{kingStartFile}{rank}".ToBoardLocation(); var kingDestination = $"{kingDestinationFile}{rank}".ToBoardLocation(); var rook = new RookEntity(colour); var rookStartFile = side ? ChessFile.H : ChessFile.A; var rookDestinationFile = side ? ChessFile.F : ChessFile.D; var rookStart = $"{rookStartFile}{rank}".ToBoardLocation(); var rookDestination = $"{rookDestinationFile}{rank}".ToBoardLocation(); var actualKingMove = new BoardMove(kingStartLoc, kingDestination, (int)DefaultActions.MoveOnly); var actualRookMove = new BoardMove(rookStart, rookDestination, (int)DefaultActions.MoveOnly); SetupLocationReturn(kingStartLoc, king); SetupLocationReturn(rookStart, rook); SetupMockActionForMoveType((int)DefaultActions.MoveOnly); Action.Execute(actualKingMove); VerifyActionWasCreated((int)DefaultActions.MoveOnly); VerifyActionWasExecuted(actualKingMove); VerifyActionWasExecuted(actualRookMove); }
public ChessValidationStepsMocker SetupKingCastleEligibility(bool eligible) { ChessPieceEntity entity = new KingEntity(Colours.White); _castleValidationStepsMock.Setup(m => m.IsKingAllowedToCastle( It.IsAny <BoardMove>(), It.IsAny <IReadOnlyBoardState <ChessPieceEntity> >(), out entity)) .Returns(eligible); return(this); }