private SingleCardPlayResult PlaySingleCardDraw() { var singleCardPlayResult = _gameRoundService.GetResultIfNotEnoughCardsToContinue(_currentRound); if (singleCardPlayResult == null) { _gameRoundService.AddCardFromAllPlayersToPot(_currentRound); var cardDrawResult = _gameRoundService.GetCardDrawResult(_currentRound); switch (cardDrawResult.ComparisonResult) { case ComparisonResult.Tie: singleCardPlayResult = new SingleCardPlayResult(cardDrawResult.FirstPlayerCard, cardDrawResult.SecondPlayerCard, true, RESULT_WAR_REQUIRED); break; case ComparisonResult.FirstCardWins: singleCardPlayResult = new SingleCardPlayResult(cardDrawResult.FirstPlayerCard, cardDrawResult.SecondPlayerCard, false, string.Format(RESULT_ROUND_WINNER_FORMAT, _players[0].Name)); CollectPotWinnings(_players[0]); break; case ComparisonResult.SecondCardWins: singleCardPlayResult = new SingleCardPlayResult(cardDrawResult.FirstPlayerCard, cardDrawResult.SecondPlayerCard, false, string.Format(RESULT_ROUND_WINNER_FORMAT, _players[1].Name)); CollectPotWinnings(_players[1]); break; } } return(singleCardPlayResult); }
public void ContinueRoundWithWar_NotEnoughCardsToPlay_ShouldReturnResultWithoutAddingToPot() { var players = InitializeTwoPlayerGame(); var expectedResult = new SingleCardPlayResult(null, null, false, "Test"); _mockGameRoundService.Setup(mgrs => mgrs.GetResultIfNotEnoughCardsToContinue(It.IsAny <CurrentRound>())).Returns(expectedResult); _mockGameRoundService.Setup(mgrs => mgrs.AddCardFromAllPlayersToPot(It.IsAny <CurrentRound>())); var result = _warGameController.ContinueRoundWithWar(); Assert.AreEqual(expectedResult, result); _mockGameRoundService.Verify(mgrs => mgrs.AddCardFromAllPlayersToPot(It.IsAny <CurrentRound>()), Times.Never); }
public SingleCardPlayResult GetResultIfNotEnoughCardsToContinue(CurrentRound currentRound) { SingleCardPlayResult result = null; if (_playerService.IsPlayerOutOfCards(currentRound.Players[0]) && _playerService.IsPlayerOutOfCards(currentRound.Players[1])) { result = new SingleCardPlayResult(null, null, false, NO_CARDS_ALL_PLAYERS); } else if (_playerService.IsPlayerOutOfCards(currentRound.Players[0])) { result = new SingleCardPlayResult(null, null, false, string.Format(NO_CARDS_SINGLE_PLAYER, currentRound.Players[0].Name)); } else if (_playerService.IsPlayerOutOfCards(currentRound.Players[1])) { result = new SingleCardPlayResult(null, null, false, string.Format(NO_CARDS_SINGLE_PLAYER, currentRound.Players[1].Name)); } return(result); }