Exemple #1
0
 public void CanAssignStraight()
 {
     for (var i = 0; i < 1000; i++)
     {
         //assemble
         int          firstSuiteOccurrences = 0;
         Suite        firstSuite            = 0;
         List <Suite> suites = new List <Suite>();
         for (var j = 0; j < 5; j++)
         {
             while (true)
             {
                 Suite tempSuite = (Suite)TestMethods.RandomSuite();
                 firstSuite             = j == 0 ? tempSuite : firstSuite;
                 firstSuiteOccurrences += tempSuite == firstSuite ? 1 : 0;
                 if (!(firstSuiteOccurrences >= 4 && tempSuite == firstSuite))
                 {
                     suites.Add(tempSuite);
                     break;
                 }
             }
         }
         for (var g = 1; g < 11; g++)
         {
             Player player = new Player("Gustav");
             if (g == 1)
             {
                 ICard[] hand = new ICard[5]
                 {
                     new Card(suites[0], (Rank)2),
                     new Card(suites[1], (Rank)3),
                     new Card(suites[2], (Rank)4),
                     new Card(suites[3], (Rank)5),
                     new Card(suites[4], (Rank)14)
                 };
                 player.DrawCards(hand);
             }
             else
             {
                 ICard[] hand = new ICard[5]
                 {
                     new Card(suites[0], (Rank)g),
                     new Card(suites[1], (Rank)g + 1),
                     new Card(suites[2], (Rank)g + 2),
                     new Card(suites[3], (Rank)g + 3),
                     new Card(suites[4], (Rank)g + 4)
                 };
                 player.DrawCards(hand);
                 player.SortHand();
             }
             //act
             player.IdentifyHand();
             //assert
             Assert.IsTrue(player.HandType == HandType.Straight);
         }
     }
 }
Exemple #2
0
        public void CanAssignStraightFlush()
        {
            for (var i = 0; i < 100; i++)
            {
                //assemble
                Suite suite = (Suite)TestMethods.RandomSuite();
                for (var g = 1; g < 10; g++)
                {
                    Player player = new Player("Gustav");
                    if (g == 1)
                    {
                        ICard[] hand = new ICard[5]
                        {
                            new Card(suite, (Rank)2),
                            new Card(suite, (Rank)3),
                            new Card(suite, (Rank)4),
                            new Card(suite, (Rank)5),
                            new Card(suite, (Rank)14)
                        };
                        player.DrawCards(hand);
                    }
                    else
                    {
                        ICard[] hand = new ICard[5]
                        {
                            new Card(suite, (Rank)g),
                            new Card(suite, (Rank)g + 1),
                            new Card(suite, (Rank)g + 2),
                            new Card(suite, (Rank)g + 3),
                            new Card(suite, (Rank)g + 4)
                        };
                        player.DrawCards(hand);
                        player.SortHand();
                    }

                    //act
                    player.IdentifyHand();
                    //assert
                    Assert.IsTrue(player.HandType == HandType.StraightFlush);
                }
            }
        }
Exemple #3
0
 public void CanAssignRoyalStraightFlush()
 {
     for (var i = 0; i < 100; i++)
     {
         //assemble
         Suite suite = (Suite)TestMethods.RandomSuite();
         var   cards = new Card[5]
         {
             new Card(suite, (Rank)10),
             new Card(suite, (Rank)11),
             new Card(suite, (Rank)12),
             new Card(suite, (Rank)13),
             new Card(suite, (Rank)14)
         };
         Player player = new Player("Gustav");
         player.DrawCards(cards);
         player.SortHand();
         //act
         player.IdentifyHand();
         //assert
         Assert.IsTrue(player.HandType == HandType.RoyalStraightFlush);
     }
 }
Exemple #4
0
 public void CanAssignHighCard()
 {
     for (var i = 0; i < 10000; i++)
     {
         //assemble
         int          firstSuiteOccurrences = 0;
         Suite        firstSuite            = 0;
         List <Suite> suites = new List <Suite>();
         List <Rank>  rankes = new List <Rank>();
         for (var j = 0; j < 5; j++)
         {
             while (true)
             {
                 Suite tempSuite = (Suite)TestMethods.RandomSuite();
                 firstSuite             = j == 0 ? tempSuite : firstSuite;
                 firstSuiteOccurrences += tempSuite == firstSuite ? 1 : 0;
                 if (!(firstSuiteOccurrences >= 5 && tempSuite == firstSuite))
                 {
                     suites.Add(tempSuite);
                     break;
                 }
             }
             while (true)
             {
                 bool isStraight = true;
                 Rank tempRank   = (Rank)TestMethods.RandomRank();
                 if (rankes.Count == 4)
                 {
                     List <Rank> tempRankes = new List <Rank>();
                     foreach (Rank element in rankes)
                     {
                         tempRankes.Add(element);
                     }
                     tempRankes.Add(tempRank);
                     tempRankes.Sort();
                     for (var g = 0; g < 4; g++)
                     {
                         isStraight = (int)tempRankes[g] != (int)tempRankes[g + 1] - 1 ? false : isStraight;
                     }
                     if ((int)tempRankes[0] == 2 && (int)tempRankes[1] == 3 && (int)tempRankes[2] == 4 &&
                         (int)tempRankes[3] == 5 && (int)tempRankes[4] == 14)
                     {
                         isStraight = true;
                     }
                 }
                 if (!rankes.Contains(tempRank) && !(rankes.Count == 4 && isStraight))
                 {
                     rankes.Add(tempRank);
                     break;
                 }
             }
         }
         Player  player = new Player("Gustav");
         ICard[] hand   = new ICard[5]
         {
             new Card(suites[0], rankes[0]),
             new Card(suites[1], rankes[1]),
             new Card(suites[2], rankes[2]),
             new Card(suites[3], rankes[3]),
             new Card(suites[4], rankes[4])
         };
         player.DrawCards(hand);
         player.SortHand();
         //act
         player.IdentifyHand();
         //assert
         Assert.IsTrue(player.HandType == HandType.HighCard);
     }
 }
Exemple #5
0
 public void CanAssignFlush()
 {
     for (var i = 0; i < 100; i++)
     {
         //assemble
         List <Rank> rankes          = new List <Rank>();
         Suite       suite           = (Suite)TestMethods.RandomSuite();
         int         pairs           = 0;
         bool        almostFullHouse = false;
         bool        threeOfAKind    = false;
         for (var j = 0; j < 5; j++)
         {
             while (true)
             {
                 bool isStraight = true;
                 Rank tempRank   = (Rank)TestMethods.RandomRank();
                 if (rankes.Count == 4)
                 {
                     List <Rank> tempRankes = new List <Rank>();
                     foreach (Rank element in rankes)
                     {
                         tempRankes.Add(element);
                     }
                     tempRankes.Add(tempRank);
                     tempRankes.Sort();
                     for (var g = 0; g < 4; g++)
                     {
                         isStraight = (int)tempRankes[g] != (int)tempRankes[g + 1] - 1 ? false : isStraight;
                     }
                     if ((int)tempRankes[0] == 2 && (int)tempRankes[1] == 3 && (int)tempRankes[2] == 4 &&
                         (int)tempRankes[3] == 5 && (int)tempRankes[4] == 14)
                     {
                         isStraight = true;
                     }
                 }
                 Rank[] tempRankOccurrences = rankes.Where(element => element == tempRank).ToArray();
                 pairs          += tempRankOccurrences.Length == 1 ? 1: 0;
                 threeOfAKind    = tempRankOccurrences.Length == 2 ? true: threeOfAKind;
                 almostFullHouse = tempRankOccurrences.Length == 2 && pairs == 2 ||
                                   tempRankOccurrences.Length == 1 && threeOfAKind ? true: almostFullHouse;
                 if (tempRankOccurrences.Length != 3 &&
                     !(almostFullHouse && rankes.Contains(tempRank)) &&
                     !(rankes.Count == 4 && isStraight))
                 {
                     rankes.Add(tempRank);
                     break;
                 }
             }
         }
         var cards = new Card[5]
         {
             new Card(suite, (Rank)rankes[0]),
             new Card(suite, (Rank)rankes[1]),
             new Card(suite, (Rank)rankes[2]),
             new Card(suite, (Rank)rankes[3]),
             new Card(suite, (Rank)rankes[4])
         };
         Player player = new Player("Gustav");
         player.DrawCards(cards);
         player.SortHand();
         //act
         player.IdentifyHand();
         //assert
         Assert.IsTrue(player.HandType == HandType.Flush);
     }
 }