예제 #1
0
        public void CompareCardsAtHand_RandomCardGenerator_ThereWillBeWinner()
        {
            // Arrange
            EvaluateWinners Evaluate = new EvaluateWinners();
            Hand            hand     = new Hand();
            List <Player>   players  = new List <Player>();

            hand.GenerateDeck();

            // Player_1
            Player player1 = new Player();

            player1.PlayerName = "Player_1";

            // Player_2
            Player player2 = new Player();

            player1.PlayerName = "Player_2";

            // Player_3
            Player player3 = new Player();

            player3.PlayerName = "Player_3";

            players.Add(player1);
            players.Add(player2);
            players.Add(player3);


            hand.GetHand(players);

            // Act
            var winners = Evaluate.CompareCardsAtHand(players);

            // Assert
            Assert.IsNotNull(winners);
            Assert.AreNotEqual(0, winners.Count);
        }
예제 #2
0
        public void CompareCardsAtHand_TwoStraightFlushOneFourOfAKind_StraightFlushWithHigherCardValueWin()
        {
            // Arrange
            EvaluateWinners Evaluate = new EvaluateWinners();
            List <Player>   players  = new List <Player>();
            Card            card     = new Card();

            // Player_1
            Player player1 = new Player();

            player1.PlayerName = "Player_1";
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.TWO
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.THREE
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.FOUR
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.FIVE
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.SIX
            });

            Player player2 = new Player();

            player2.PlayerName = "Player_2";
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.EIGHT
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.NINE
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.TEN
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.JACK
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.QUEEN
            });

            Player player3 = new Player();

            player3.PlayerName = "Player_3";
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.SEVEN
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.DIAMONDS, Value = VALUE.SEVEN
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.SEVEN
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.SPADES, Value = VALUE.SEVEN
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.SIX
            });

            players.Add(player1);
            players.Add(player2);
            players.Add(player3);

            // Act
            var winners = Evaluate.CompareCardsAtHand(players);

            // Assert
            Assert.AreEqual(winners.Count, 1); // 1 Winners
            foreach (Player winner in winners)
            {
                Assert.AreEqual(player2.PlayerName, winner.PlayerName, "PlayerName");
                Assert.AreEqual(HandRanking.StraightFlush, winner.HandRanking, "Higher Straight Flush");
            }
        }
예제 #3
0
        public void CompareCardsAtHand_TwoStraightThreeOfAKind_TwoStraightWinners()
        {
            // Arrange
            EvaluateWinners Evaluate = new EvaluateWinners();
            List <Player>   players  = new List <Player>();
            Card            card     = new Card();

            Player player1 = new Player();

            player1.PlayerName = "Player_1";
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.TWO
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.THREE
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.SPADES, Value = VALUE.FOUR
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.DIAMONDS, Value = VALUE.FIVE
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.SIX
            });

            Player player2 = new Player();

            player2.PlayerName = "Player_2";
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.ACE
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.ACE
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.SPADES, Value = VALUE.ACE
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.KING
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.SPADES, Value = VALUE.SEVEN
            });

            Player player3 = new Player();

            player3.PlayerName = "Player_3";
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.TWO
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.DIAMONDS, Value = VALUE.THREE
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.FOUR
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.SPADES, Value = VALUE.FIVE
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.SIX
            });

            players.Add(player1);
            players.Add(player2);
            players.Add(player3);

            // Act
            var winners = Evaluate.CompareCardsAtHand(players);

            // Assert
            Assert.AreEqual(winners.Count, 2); // 2 Winners
            Assert.AreEqual(player1.PlayerName, winners[0].PlayerName, "PlayerName");
            Assert.AreEqual(HandRanking.Straight, winners[0].HandRanking, "PokerHandRanking Straight");
            Assert.AreEqual(player3.PlayerName, winners[1].PlayerName, "PlayerName");
            Assert.AreEqual(HandRanking.Straight, winners[1].HandRanking, "PokerHandRanking Straight");
        }
예제 #4
0
        public void CompareCardsAtHand_AllHighCards_HighestHigCardWin()
        {
            // Arrange
            EvaluateWinners Evaluate = new EvaluateWinners();
            List <Player>   players  = new List <Player>();
            Card            card     = new Card();

            Player player1 = new Player();

            player1.PlayerName = "Player_1";
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.TWO
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.FOUR
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.SPADES, Value = VALUE.SIX
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.DIAMONDS, Value = VALUE.EIGHT
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.ACE
            });

            Player player2 = new Player();

            player2.PlayerName = "Player_2";
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.THREE
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.FIVE
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.SPADES, Value = VALUE.JACK
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.QUEEN
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.SPADES, Value = VALUE.KING
            });

            Player player3 = new Player();

            player3.PlayerName = "Player_3";
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.TEN
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.DIAMONDS, Value = VALUE.TWO
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.EIGHT
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.QUEEN
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.JACK
            });

            players.Add(player1);
            players.Add(player2);
            players.Add(player3);

            // Act
            var winners = Evaluate.CompareCardsAtHand(players);

            // Assert
            Assert.AreEqual(winners.Count, 1); // 1 Winners
            foreach (Player winner in winners)
            {
                Assert.AreEqual(player1.PlayerName, winner.PlayerName, "PlayerName");
                Assert.AreEqual(HandRanking.HighCard, winner.HandRanking, "One Pair");
            }
        }
예제 #5
0
        public void CompareCardsAtHand_FourOfAKindFullHouseFlush_FourOfAKindWin()
        {
            // Arrange
            EvaluateWinners Evaluate = new EvaluateWinners();
            List <Player>   players  = new List <Player>();
            Card            card     = new Card();

            // Player_3
            Player player3 = new Player();

            player3.PlayerName = "Player_3";
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.TWO
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.TWO
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.DIAMONDS, Value = VALUE.TWO
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.SPADES, Value = VALUE.TWO
            });
            player3.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.SIX
            });

            Player player2 = new Player();

            player2.PlayerName = "Player_2";
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.EIGHT
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.CLUBS, Value = VALUE.EIGHT
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.SPADES, Value = VALUE.EIGHT
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.QUEEN
            });
            player2.CardsAtHand.Add(new Card {
                Suit = SUIT.SPADES, Value = VALUE.QUEEN
            });

            Player player1 = new Player();

            player1.PlayerName = "Player_1";
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.THREE
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.FOUR
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.KING
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.JACK
            });
            player1.CardsAtHand.Add(new Card {
                Suit = SUIT.HEARTS, Value = VALUE.SEVEN
            });

            players.Add(player1);
            players.Add(player2);
            players.Add(player3);

            // Act
            var winners = Evaluate.CompareCardsAtHand(players);

            // Assert
            Assert.AreEqual(1, winners.Count); // 1 Winners
            foreach (Player winner in winners)
            {
                Assert.AreEqual(player3.PlayerName, winner.PlayerName, "PlayerName");
                Assert.AreEqual(HandRanking.FourOfAKind, winner.HandRanking, "IsFourOfAKind");
            }
        }