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()); }
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)); }); }); }
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); }
public static void Main() { IEngine engine = new PokerEngine(); engine.Run(); }
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); }