public void WhenMoveIsNotPromotionReturnFalse() { var movementHistoryMock = new Mock <IMovementHistory>(MockBehavior.Strict); var piecesMock = new Mock <IEnumerable <IChessPiece> >(MockBehavior.Strict); var notPromotionMove = new ChessMove(new Position(0, 1), new Position(0, 3)); var piecePromoter = new PiecePromoter(movementHistoryMock.Object); var result = piecePromoter .PromoteIfPromotionMove(notPromotionMove, piecesMock.Object); Assert.IsFalse(result); }
public void WhenMoveIsPromotionPromotePawnAndReturnTrue() { var movementHistoryMock = new Mock <IMovementHistory>(MockBehavior.Strict); var promotedPawn = new Mock <IChessPiece>(MockBehavior.Strict); var promoteType = ChessPieceType.Queen; var promotionMove = new ChessMove(new Position(0, 0), new Position(0, 0), pawnPromotion: promoteType); var pawnPosition = new Position(3, 0); var moves = new List <ChessMove>() { new ChessMove(new Position(0, 1), new Position(0, 3)), new ChessMove(new Position(3, 1), pawnPosition), }; promotedPawn .SetupGet(p => p.Position) .Returns(pawnPosition); promotedPawn .Setup(p => p.Promote(promoteType)); movementHistoryMock .SetupGet(h => h.ChessMoves) .Returns(moves); movementHistoryMock .Setup(h => h.Add(promotionMove)); var piecePromoter = new PiecePromoter(movementHistoryMock.Object); var pieces = new List <IChessPiece>() { promotedPawn.Object }; var result = piecePromoter .PromoteIfPromotionMove(promotionMove, pieces); Assert.IsTrue(result); promotedPawn .Verify(p => p.Promote(promoteType)); movementHistoryMock .Verify(h => h.Add(promotionMove)); }