public void IsUnderAttackEmpty() { var s = new ChessState(); var players = new List<Player> { new Player(1), new Player(2) }; var from = new Position(1, 1); var to = new Position(2, 2); s[from] = ChessPieceFactory.CreatePiece('K', new EnglishFENPresentation(), players); s[from].Move(from); Assert.IsTrue(s.IsUnderAttack(to, players[1])); }
private Boolean IsKingsPathFree(Position from, Position to, ChessState cState) { Boolean result = true; switch (CType) { case CastlingType.Kingside: for (int kingPathFile = from.File + 1; kingPathFile <= to.File; ++kingPathFile) result &= !cState.IsUnderAttack(new Position(kingPathFile, from.Rank), cState[from].Player); break; case CastlingType.Queenside: for (int kingPathFile = from.File - 1; kingPathFile >= to.File; --kingPathFile) result &= !cState.IsUnderAttack(new Position(kingPathFile, from.Rank), cState[from].Player); break; } return result; }