public void GetPiece_Returns_Null_If_No_Piece_At_Location() { var boardCoordinate = new BoardCoordinate(2, 1); var piece = _board.GetPiece(boardCoordinate); Assert.IsNull(piece); }
public override IEnumerable<BoardCoordinate> GetLegalMovesFromCoordinate(BoardCoordinate origin, int boardSize) { var straight = getStraightMovesFromCoordinate(origin, boardSize); var diagonal = getDiagonalMovesFromCoordinate(origin, boardSize); var all = straight.Union(diagonal); return all.Where(bc => bc.IsValidForBoard(boardSize)); }
public void Returns_1_3_When_White_Passed_1_1_And_Has_Not_Moved() { var legalMoves = _pawn.GetLegalMovesFromCoordinate(_startingLocation, _board.BoardSize); var target = new BoardCoordinate(1, 3); Assert.IsTrue(legalMoves.Contains(target)); }
protected IEnumerable<BoardCoordinate> buildStraightMovesEnumeration(BoardCoordinate origin, int distance) { yield return new BoardCoordinate(origin.XCoordinate + distance, origin.YCoordinate); yield return new BoardCoordinate(origin.XCoordinate - distance, origin.YCoordinate); yield return new BoardCoordinate(origin.XCoordinate, origin.YCoordinate + distance); yield return new BoardCoordinate(origin.XCoordinate, origin.YCoordinate - distance); }
public void Gets_Piece_That_Has_Been_Added() { var boardCoordinate = new BoardCoordinate(2, 1); _board.AddPiece(_rook, boardCoordinate); var gottenPiece = _board.GetPiece(boardCoordinate); Assert.AreEqual(_rook, gottenPiece); }
public void Does_Not_Return_1_8_When_Black_Passed_1_7() { _pawn = new Pawn(PlayerColor.Black); _startingLocation = new BoardCoordinate(1, 7); var legalMoves = _pawn.GetLegalMovesFromCoordinate(_startingLocation, _board.BoardSize); var target = new BoardCoordinate(1, 8); Assert.IsFalse(legalMoves.Contains(target)); }
protected IEnumerable<BoardCoordinate> getKnightlyMoves(BoardCoordinate origin) { yield return new BoardCoordinate(origin.XCoordinate + 1, origin.YCoordinate + 2); yield return new BoardCoordinate(origin.XCoordinate + 1, origin.YCoordinate - 2); yield return new BoardCoordinate(origin.XCoordinate - 1, origin.YCoordinate + 2); yield return new BoardCoordinate(origin.XCoordinate - 1, origin.YCoordinate - 2); yield return new BoardCoordinate(origin.XCoordinate + 2, origin.YCoordinate + 1); yield return new BoardCoordinate(origin.XCoordinate + 2, origin.YCoordinate - 1); yield return new BoardCoordinate(origin.XCoordinate - 2, origin.YCoordinate + 1); yield return new BoardCoordinate(origin.XCoordinate - 2, origin.YCoordinate - 1); }
public Piece GetPiece(BoardCoordinate location) { if (_pieces.ContainsKey(location)) { return _pieces[location]; } else { return null; } }
public override IEnumerable<BoardCoordinate> GetLegalMovesFromCoordinate(BoardCoordinate origin, int boardSize) { int colorValue = 1; if (Color == PlayerColor.Black) { colorValue = -1; } yield return new BoardCoordinate(origin.XCoordinate, origin.YCoordinate + (1*colorValue)); // forward 1 yield return new BoardCoordinate(origin.XCoordinate + 1, origin.YCoordinate + (1 * colorValue)); // capture diagonal right yield return new BoardCoordinate(origin.XCoordinate - 1, origin.YCoordinate + (1 * colorValue)); // capture diagonal left if (!HasMoved) { yield return new BoardCoordinate(origin.XCoordinate, origin.YCoordinate + (2 * colorValue)); // double-move } }
public void AddPiece(Piece piece, BoardCoordinate location) { if (location.IsValidForBoard(BoardSize)) { if (!_pieces.ContainsKey(location)) { _pieces.Add(location, piece); } else { throw new InvalidOperationException("BoardCoordinate Is Occupied"); } } else { throw new InvalidOperationException("BoardCoordinate Is Out Of Range"); } }
public void Returns_False_for_Y_Less_Than_1() { var boardCoordinate = new BoardCoordinate(8, 0); Assert.IsFalse(boardCoordinate.IsValidForBoard(8)); }
public MoveAttempt(Board board, BoardCoordinate origin, BoardCoordinate destination) { _board = board; _origin = origin; _destination = destination; }
public void Does_Not_Return_Diagonal() { var legalMoves = _piece.GetLegalMovesFromCoordinate(_startingLocation, _board.BoardSize); var target = new BoardCoordinate(2, 2); Assert.IsFalse(legalMoves.Contains(target)); }
public void Returns_1_8_When_Passed_1_1() { var legalMoves = _piece.GetLegalMovesFromCoordinate(_startingLocation, _board.BoardSize); var target = new BoardCoordinate(1, 8); Assert.IsTrue(legalMoves.Contains(target)); }
public void RemovePiece(BoardCoordinate location) { _pieces.Remove(location); }
protected IEnumerable<BoardCoordinate> getStraightMovesFromCoordinate(BoardCoordinate origin, int maxDistance) { var coordinates = Enumerable.Range(1, maxDistance); return coordinates.SelectMany(c => buildStraightMovesEnumeration(origin, c)); }
public abstract IEnumerable<BoardCoordinate> GetLegalMovesFromCoordinate(BoardCoordinate origin, int boardSize);
public void Returns_1_3_When_Passed_2_1() { var legalMoves = _piece.GetLegalMovesFromCoordinate(_startingLocation, _board.BoardSize); var target = new BoardCoordinate(1, 3); Assert.Contains(target, legalMoves.ToList()); }
public override IEnumerable<BoardCoordinate> GetLegalMovesFromCoordinate(BoardCoordinate origin, int boardSize) { return getStraightMovesFromCoordinate(origin, boardSize).Where(bc => bc.IsValidForBoard(boardSize)); }
public void Add_Piece_To_Unoccupied_Square_Does_Not_ThrowException() { var boardCoordinate = new BoardCoordinate(2, 1); Assert.DoesNotThrow(() => _board.AddPiece(_rook, boardCoordinate), "Adding a piece to an unoccupied location should not throw an exception"); }
public void Returns_1_1_When_Passed_5_5() { var legalMoves = _piece.GetLegalMovesFromCoordinate(new BoardCoordinate(5, 5), _board.BoardSize); var target = new BoardCoordinate(1, 1); Assert.IsTrue(legalMoves.Contains(target)); }
public void Add_Piece_To_Invalid_Square_Throws_Exception() { var boardCoordinate = new BoardCoordinate(1, 9); Assert.Throws(typeof(InvalidOperationException), () => _board.AddPiece(new Pawn(PlayerColor.White), boardCoordinate)); }
public void Setup() { _board = new Board(8); _piece = new Knight(PlayerColor.White); _startingLocation = new BoardCoordinate(2, 1); }
public void Returns_False_for_Y_Great_Than_BoardSize() { var boardCoordinate = new BoardCoordinate(8, 9); Assert.IsFalse(boardCoordinate.IsValidForBoard(8)); }
public void Setup() { _board = new Board(8); _pawn = new Pawn(PlayerColor.White); _startingLocation = new BoardCoordinate(1, 1); }
public void Returns_True_for_Valid_Coordinate() { var boardCoordinate = new BoardCoordinate(1, 8); Assert.IsTrue(boardCoordinate.IsValidForBoard(8)); }
public Path(BoardCoordinate start, BoardCoordinate end) { _origin = start; _destination = end; }
public void Setup() { _board = new Board(8); _piece = new Queen(PlayerColor.White); _startLocation = new BoardCoordinate(1, 1); }