public IHttpActionResult GetPlayableGames(int players)
        {
            CardGameService cardGameService = CreateCardGameService();
            var             cardGame        = cardGameService.GetGamesWithInNumberOfPlayers(players);

            return(Ok(cardGame));
        }
        public IHttpActionResult Get(int id)
        {
            CardGameService cardGameService = CreateCardGameService();
            var             cardGame        = cardGameService.GetCardGameById(id);

            return(Ok(cardGame));
        }
        public IHttpActionResult GetGamble(bool gamble)
        {
            CardGameService cardGameService = CreateCardGameService();
            var             cardGame        = cardGameService.GetGameIfGambling(gamble);

            return(Ok(cardGame));
        }
        public IHttpActionResult Get()
        {
            CardGameService cardGameService = CreateCardGameService();
            var             cardGames       = cardGameService.GetCardGame();

            return(Ok(cardGames));
        }
Ejemplo n.º 5
0
        public void ValidateNewDeck()
        {
            var cardGameService = new CardGameService(_gameRules);
            var allCards        = cardGameService.InitializeDeck();

            Assert.Contains(allCards, item => item >= 1 && item <= _gameRules.DeckSize / 4);
            Assert.Equal(_gameRules.DeckSize, allCards.Count());
        }
Ejemplo n.º 6
0
        public void NewDeckIsShuffled()
        {
            var dackManager = new CardGameService(_gameRules);
            var ordered     = new Stack <int>(dackManager.InitializeDeck());
            var shuffled    = dackManager.InitializeDeck().GetShuffledStack();

            Assert.Contains(shuffled, item => item >= 1 && item <= _gameRules.DeckSize / 4);
            Assert.Equal(_gameRules.DeckSize, shuffled.Count());
            Assert.NotEqual(ordered, shuffled);
        }
Ejemplo n.º 7
0
        public void DeckSizePersistedThroughTheGame()
        {
            var cardGameService = new CardGameService(_gameRules);

            while (!cardGameService.GameEnded)
            {
                cardGameService.DrawCard();
                cardGameService.CalculateDrawOutcome();
                Assert.Equal(_gameRules.DeckSize, cardGameService.Players.Sum(p => p.Total));
            }
        }
Ejemplo n.º 8
0
        public void CheckNewPlayersDeckSizes()
        {
            var cardGameService = new CardGameService(_gameRules);
            var deck            = cardGameService.InitializeDeck().GetShuffledStack();

            cardGameService.InitializePlayerDecks(deck);
            var expected = _gameRules.DeckSize / _gameRules.NumberOfPlayers;

            cardGameService.Players.ForEach(player =>
            {
                Assert.Equal(expected, player.Deck.Count());
            });
        }
Ejemplo n.º 9
0
        static void Main(string[] args)
        {
            try
            {
                var gameRuleService = new GameRuleService();
                var gameRules       = gameRuleService.InitializeRules(args);

                var cardGameService = new CardGameService(gameRules);
                cardGameService.StartGame();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Ejemplo n.º 10
0
        public void FirstPlayerHasEmptyDeck()
        {
            var expected = new int[] { 1, 2, 3, 4, 5 };

            var cardGameService = new CardGameService(_gameRules);

            cardGameService.Players[0].Deck    = new Stack <int>();
            cardGameService.Players[1].Deck    = new Stack <int>(new int[] { 8, 9, 10 });
            cardGameService.Players[0].Discard = new List <int>(expected);
            cardGameService.Players[1].Discard = new List <int>(new int[] { 6, 7 });

            cardGameService.CheckPlayersDecks();

            Assert.Equal(new Stack <int>(expected), cardGameService.Players[0].Deck.OrderByDescending(x => x));
        }
Ejemplo n.º 11
0
        public void SecondPlayerWinTheGame()
        {
            var cardGameService = new CardGameService(_gameRules);

            cardGameService.Players[0].Deck = new Stack <int>(new int[] { 1, 2, 3, 4, 5, 6 });
            cardGameService.Players[1].Deck = new Stack <int>(new int[] { 1, 2, 10, 4, 5, 6 });

            while (!cardGameService.GameEnded)
            {
                cardGameService.DrawCard();
                cardGameService.CalculateDrawOutcome();
            }

            Assert.Equal(cardGameService.Players[1], cardGameService.Winner);
        }
Ejemplo n.º 12
0
        public void FirstPlayerWin2Cards()
        {
            var cardGameService = new CardGameService(_gameRules);

            cardGameService.Players[0].Deck = new Stack <int>(new int[] { 1, 2, 3, 4, 10 });
            cardGameService.Players[1].Deck = new Stack <int>(new int[] { 1, 2, 3, 4, 5 });

            cardGameService.DrawCard();
            cardGameService.CalculateDrawOutcome();

            var expected = new List <int> {
                5, 10
            };

            Assert.Equal(expected, cardGameService.Players[0].Discard.OrderBy(x => x));
        }
Ejemplo n.º 13
0
        public void FirstPlayerWin6Cards()
        {
            var cardGameService = new CardGameService(_gameRules);

            cardGameService.Players[0].Deck = new Stack <int>(new int[] { 1, 2, 3, 9, 5, 6 });
            cardGameService.Players[1].Deck = new Stack <int>(new int[] { 1, 2, 3, 4, 5, 6 });

            for (int i = 0; i < 3; i++)
            {
                cardGameService.DrawCard();
                cardGameService.CalculateDrawOutcome();
            }

            var expected = new List <int> {
                4, 5, 5, 6, 6, 9
            };

            Assert.Equal(expected, cardGameService.Players[0].Discard.OrderBy(x => x));
        }
        private CardGameService CreateCardGameService()
        {
            var cardGameService = new CardGameService();

            return(cardGameService);
        }