public void Simulate_ShouldGenerateAtLeastOneWinner()
        {
            var engine = new PokerEngine();

            engine.Simulate();

            Assert.GreaterOrEqual(1, engine.Winners.Count);
        }
        public void Simulate_ShouldGenerateFourPlayers()
        {
            var engine = new PokerEngine();

            engine.Simulate();

            Assert.AreEqual(4, engine.Players.Count);
        }
        public void GetWinningPlayers_ShouldProduceTwoWinners()
        {
            var hand1 = new Hand
            {
                new Card {
                    Rank = Rank.Two, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.Two, Suit = Suit.Hearts
                },
                new Card {
                    Rank = Rank.Jack, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.Queen, Suit = Suit.Clubs
                },
                new Card {
                    Rank = Rank.King, Suit = Suit.Spades
                },
            };

            var hand2 = new Hand
            {
                new Card {
                    Rank = Rank.Two, Suit = Suit.Spades
                },
                new Card {
                    Rank = Rank.Two, Suit = Suit.Clubs
                },
                new Card {
                    Rank = Rank.Jack, Suit = Suit.Hearts
                },
                new Card {
                    Rank = Rank.King, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.Queen, Suit = Suit.Diamond
                },
            };

            var player1 = new Player {
                Name = "Alice", Hand = hand1
            };
            var player2 = new Player {
                Name = "Joe", Hand = hand2
            };

            var playerList = new List <Player> {
                player1, player2
            };

            var engine = new PokerEngine(_dealer, playerList);

            engine.GetWinningPlayers();

            Assert.AreEqual(2, engine.Winners.Count);
        }
        public void GetWinningPlayers_FlushWithAceShouldWin()
        {
            var hand1 = new Hand
            {
                new Card {
                    Rank = Rank.Two, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.Six, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.Jack, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.Queen, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.King, Suit = Suit.Diamond
                },
            };

            var hand2 = new Hand
            {
                new Card {
                    Rank = Rank.Two, Suit = Suit.Spades
                },
                new Card {
                    Rank = Rank.Three, Suit = Suit.Spades
                },
                new Card {
                    Rank = Rank.Jack, Suit = Suit.Spades
                },
                new Card {
                    Rank = Rank.Ace, Suit = Suit.Spades
                },
                new Card {
                    Rank = Rank.Queen, Suit = Suit.Spades
                },
            };

            var player1 = new Player {
                Name = "Alice", Hand = hand1
            };
            var player2 = new Player {
                Name = "Joe", Hand = hand2
            };

            var playerList = new List <Player> {
                player1, player2
            };

            var engine = new PokerEngine(_dealer, playerList);

            engine.GetWinningPlayers();

            Assert.AreEqual(player2, engine.Winners.Single());
        }
        public void GetWinningPlayers_FlushShouldWinAgainstHighCard()
        {
            var hand1 = new Hand
            {
                new Card {
                    Rank = Rank.Two, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.Seven, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.Three, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.Ten, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.Nine, Suit = Suit.Diamond
                },
            };

            var hand2 = new Hand
            {
                new Card {
                    Rank = Rank.Three, Suit = Suit.Spades
                },
                new Card {
                    Rank = Rank.Four, Suit = Suit.Clubs
                },
                new Card {
                    Rank = Rank.Five, Suit = Suit.Hearts
                },
                new Card {
                    Rank = Rank.Six, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.Eight, Suit = Suit.Diamond
                },
            };

            var player1 = new Player {
                Name = "Alice", Hand = hand1
            };
            var player2 = new Player {
                Name = "Joe", Hand = hand2
            };

            var playerList = new List <Player> {
                player1, player2
            };

            var engine = new PokerEngine(_dealer, playerList);

            engine.GetWinningPlayers();

            Assert.AreEqual(player1, engine.Winners.Single());
        }
        public void GetWinningPlayers_ThreeOfKindShouldWinAgainstOnePair()
        {
            var hand1 = new Hand
            {
                new Card {
                    Rank = Rank.Two, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.Two, Suit = Suit.Hearts
                },
                new Card {
                    Rank = Rank.Three, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.Queen, Suit = Suit.Clubs
                },
                new Card {
                    Rank = Rank.King, Suit = Suit.Spades
                },
            };

            var hand2 = new Hand
            {
                new Card {
                    Rank = Rank.Three, Suit = Suit.Spades
                },
                new Card {
                    Rank = Rank.Three, Suit = Suit.Clubs
                },
                new Card {
                    Rank = Rank.Three, Suit = Suit.Hearts
                },
                new Card {
                    Rank = Rank.King, Suit = Suit.Diamond
                },
                new Card {
                    Rank = Rank.Ace, Suit = Suit.Diamond
                },
            };

            var player1 = new Player {
                Name = "Alice", Hand = hand1
            };
            var player2 = new Player {
                Name = "Joe", Hand = hand2
            };

            var playerList = new List <Player> {
                player1, player2
            };

            var engine = new PokerEngine(_dealer, playerList);

            engine.GetWinningPlayers();

            Assert.AreEqual(player2, engine.Winners.Single());
        }
Exemple #7
0
        public static void SimulateRound()
        {
            _engine = new PokerEngine();
            _engine.Simulate();

            var winners = _engine.Winners;

            DisplayWinners(winners.ToList());
        }
        public void CheckPlayerHand_EnsurePlayersHasCorrectNumberOfCards()
        {
            var hand1 = new Hand
            {
                new Card {
                    Rank = Rank.Two, Suit = Suit.Diamond
                }
            };

            var hand2 = new Hand
            {
                new Card {
                    Rank = Rank.Two, Suit = Suit.Spades
                },
                new Card {
                    Rank = Rank.Six, Suit = Suit.Spades
                },
                new Card {
                    Rank = Rank.Jack, Suit = Suit.Spades
                }
            };

            var player1 = new Player {
                Name = "Alice", Hand = hand1
            };
            var player2 = new Player {
                Name = "Joe", Hand = hand2
            };

            var playerList = new List <Player> {
                player1, player2
            };

            var engine = new PokerEngine(_dealer, playerList);

            engine.CheckPlayerHand();

            Assert.Multiple(() =>
            {
                playerList.ForEach(player =>
                {
                    Assert.IsTrue(player.Hand.Count == 5);
                });
            });
        }
        public void GetWinningPlayers_ShouldGenerateWinners()
        {
            var player1 = new Player {
                Name = "Alice", Hand = _dealer.FillHand()
            };
            var player2 = new Player {
                Name = "Joe", Hand = _dealer.FillHand()
            };

            var playerList = new List <Player> {
                player1, player2
            };

            var engine = new PokerEngine(_dealer, playerList);

            engine.GetWinningPlayers();

            Assert.GreaterOrEqual(1, engine.Winners.Count);
        }
        public void Engine_WhenInitializedShouldHaveTheCorrectPlayers()
        {
            var player1 = new Player {
                Name = "Alice", Hand = _dealer.FillHand()
            };
            var player2 = new Player {
                Name = "Joe", Hand = _dealer.FillHand()
            };

            var playerList = new List <Player> {
                player1, player2
            };

            var engine = new PokerEngine(_dealer, playerList);

            Assert.Multiple(() =>
            {
                playerList.ForEach(player =>
                {
                    Assert.IsTrue(engine.Players.Contains(player));
                });
            });
        }
Exemple #11
0
        public static void CompleteRound(List <Player> players)
        {
            if (players.Count != 4)
            {
                var names = new string[4] {
                    "Joe", "Jen", "Bob", "Alice"
                };
                for (int i = players.Count; i < 4; i++)
                {
                    var player = new Player {
                        Name = names[i - 1], Hand = _dealer.FillHand()
                    };

                    players.Add(player);
                }
            }

            _engine = new PokerEngine(_dealer, players);
            _engine.CheckPlayerHand();

            var winners = _engine.GetWinningPlayers();

            DisplayWinners(winners);
        }
Exemple #12
0
        public static void Main()
        {
            IEngine engine = new PokerEngine();

            engine.Run();
        }
Exemple #13
0
        public void TestAPIGenerateDeck()
        {
            var poker = new PokerEngine();
            var cardDeck = poker.GenerateDeck();

            var noOfCard = (Enum.GetValues(typeof(CardSuit)).Length - 1)
                           * (Enum.GetValues(typeof(CardValue)).Length - 1);
            Assert.AreEqual(noOfCard, cardDeck.Count());
            var wrongCardValue = cardDeck.Count(x => x.Value == CardValue.None);
            Assert.AreEqual(0, wrongCardValue);
            var wrongCardSuit = cardDeck.Count(x => x.Suit == CardSuit.None);
            Assert.AreEqual(0, wrongCardSuit);
        }