Beispiel #1
0
            public void GetPiece_Returns_Null_If_No_Piece_At_Location()
            {
                var boardCoordinate = new BoardCoordinate(2, 1);
                var piece = _board.GetPiece(boardCoordinate);

                Assert.IsNull(piece);
            }
Beispiel #2
0
 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));
 }
Beispiel #3
0
            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));
            }
Beispiel #4
0
 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);
 }
Beispiel #5
0
 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);
 }
Beispiel #6
0
 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));
 }
Beispiel #7
0
 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);
 }
Beispiel #8
0
 public Piece GetPiece(BoardCoordinate location)
 {
     if (_pieces.ContainsKey(location))
     {
         return _pieces[location];
     }
     else
     {
         return null;
     }
 }
Beispiel #9
0
        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
            }
        }
Beispiel #10
0
 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");
     }
 }
Beispiel #11
0
 public void Returns_False_for_Y_Less_Than_1()
 {
     var boardCoordinate = new BoardCoordinate(8, 0);
     Assert.IsFalse(boardCoordinate.IsValidForBoard(8));
 }
Beispiel #12
0
 public MoveAttempt(Board board, BoardCoordinate origin, BoardCoordinate destination)
 {
     _board = board;
     _origin = origin;
     _destination = destination;
 }
Beispiel #13
0
 public void Does_Not_Return_Diagonal()
 {
     var legalMoves = _piece.GetLegalMovesFromCoordinate(_startingLocation, _board.BoardSize);
     var target = new BoardCoordinate(2, 2);
     Assert.IsFalse(legalMoves.Contains(target));
 }
Beispiel #14
0
 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));
 }
Beispiel #15
0
 public void RemovePiece(BoardCoordinate location)
 {
     _pieces.Remove(location);
 }
Beispiel #16
0
 protected IEnumerable<BoardCoordinate> getStraightMovesFromCoordinate(BoardCoordinate origin, int maxDistance)
 {
     var coordinates = Enumerable.Range(1, maxDistance);
     return coordinates.SelectMany(c => buildStraightMovesEnumeration(origin, c));
 }
Beispiel #17
0
 public abstract IEnumerable<BoardCoordinate> GetLegalMovesFromCoordinate(BoardCoordinate origin, int boardSize);
Beispiel #18
0
 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());
 }
Beispiel #19
0
 public override IEnumerable<BoardCoordinate> GetLegalMovesFromCoordinate(BoardCoordinate origin, int boardSize)
 {
     return getStraightMovesFromCoordinate(origin, boardSize).Where(bc => bc.IsValidForBoard(boardSize));
 }
Beispiel #20
0
 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");
 }
Beispiel #21
0
 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));
 }
Beispiel #22
0
 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));
 }
Beispiel #23
0
 public void Setup()
 {
     _board = new Board(8);
     _piece = new Knight(PlayerColor.White);
     _startingLocation = new BoardCoordinate(2, 1);
 }
Beispiel #24
0
 public void Returns_False_for_Y_Great_Than_BoardSize()
 {
     var boardCoordinate = new BoardCoordinate(8, 9);
     Assert.IsFalse(boardCoordinate.IsValidForBoard(8));
 }
Beispiel #25
0
 public void Setup()
 {
     _board = new Board(8);
     _pawn = new Pawn(PlayerColor.White);
     _startingLocation = new BoardCoordinate(1, 1);
 }
Beispiel #26
0
 public void Returns_True_for_Valid_Coordinate()
 {
     var boardCoordinate = new BoardCoordinate(1, 8);
     Assert.IsTrue(boardCoordinate.IsValidForBoard(8));
 }
Beispiel #27
0
 public Path(BoardCoordinate start, BoardCoordinate end)
 {
     _origin = start;
     _destination = end;
 }
Beispiel #28
0
 public void Setup()
 {
     _board = new Board(8);
     _piece = new Queen(PlayerColor.White);
     _startLocation = new BoardCoordinate(1, 1);
 }