Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }