public void ToString_Matches_Expected_Regex()
        {
            Regex startingHandLongName = new Regex(@"^[2-9,A,K,Q,J,T][c,d,h,s][2-9,A,K,Q,J,T][c,d,h,s]$");
            Regex startingHandShortName = new Regex(@"^([2-9,A,K,Q,J,T][2-9,A,K,Q,J,T][o,s]$)|([22,33,44,55,66,77,88,99,TT,JJ,QQ,KK,AA]$)");

            foreach (StartingHandCombo hand in _startingHandCombos.Values)
            {
                Assert.IsTrue(startingHandLongName.IsMatch(hand.ToString()), "Incorrect Hand Long Format found in Combos:"+hand.ToString());
                Assert.IsTrue(startingHandLongName.IsMatch(hand.ToString(false)), "Incorrect Hand Long Format found in Combos:" + hand.ToString(false));
                Assert.IsTrue(startingHandShortName.IsMatch(hand.ToString(true)), "Incorrect Hand Short Format found in Combos:" + hand.ToString(true));

                //Verify order in short format
                if(hand.SecondCard.Rank > hand.FirstCard.Rank)
                {
                    StartingHandCombo orderedHand = new StartingHandCombo(hand.SecondCard, hand.FirstCard);

                    //First card should be bigger then the second
                    Assert.IsTrue(hand.ToString(true).Substring(0, 1) == orderedHand.FirstCard.ToString().Substring(0, 1));
                    //Either order should output the same when using the short format
                    Assert.IsTrue(hand.ToString(true) == orderedHand.ToString(true));
                    //Order should be different with the long format
                    Assert.IsTrue(hand.ToString(false) != orderedHand.ToString());

                    Assert.IsTrue(hand.ToString(false, true) == orderedHand.ToString(),"The sorted long format did not match:" + hand.ToString(false, true) + " != " + hand.ToString());
                }
            }

            foreach (StartingHandCombo hand in _startingHandPermutations.Values)
            {
                Assert.IsTrue(startingHandLongName.IsMatch(hand.ToString()), "Incorrect Hand Long Format found in Permutations:" + hand.ToString());
                Assert.IsTrue(startingHandLongName.IsMatch(hand.ToString(false)), "Incorrect Hand Long Format found in Permutations:" + hand.ToString(false));
                Assert.IsTrue(startingHandShortName.IsMatch(hand.ToString(true)), "Incorrect Hand Short Format found in Permutations:" + hand.ToString(true));

                //Verify order in simple format
                if (hand.SecondCard.Rank >= hand.FirstCard.Rank)
                {
                    StartingHandCombo orderedHand = new StartingHandCombo(hand.SecondCard, hand.FirstCard);

                    //First card should be bigger then the second
                    Assert.IsTrue(hand.ToString(true).Substring(0, 1) == orderedHand.FirstCard.ToString().Substring(0, 1));
                    //Either order should output the same when using the simple format
                    Assert.IsTrue(hand.ToString(true) == orderedHand.ToString(true));
                    //Order should be different with the long format
                    Assert.IsTrue(hand.ToString(false) != orderedHand.ToString());
                }

            }
        }
        public void InvalidConstructorString(string test)
        {
            try
            {
                StartingHandCombo hand = new StartingHandCombo(test);
                Assert.Fail("This hand should have thrown an exception:" + test);
            }
            catch (ArgumentException e)
            {

            }
        }
 public void ToString_CreatesExactOrderedOrginalHands_Passes()
 {
     foreach (StartingHandCombo hand in _startingHandPermutations.Values)
     {
         StartingHandCombo handFromString = new StartingHandCombo(hand.ToString());
         Assert.IsTrue(hand.Equals(handFromString, StartingHandCombo.MatchingMode.ExactSuits, true), "The hand created from ToString was not an exact match");
     }
 }
        public void HighCardAndLowCard_ConsistentEvenWithPPs_Pass()
        {
            StartingHandCombo hand = new StartingHandCombo("9s9c");
            StartingHandCombo revHand = new StartingHandCombo("9c9s");

            Assert.IsTrue(hand.Equals(revHand, StartingHandCombo.MatchingMode.ExactSuits));
            Assert.IsFalse(hand.Equals(revHand, StartingHandCombo.MatchingMode.ExactSuits, false));

            Assert.IsTrue(hand.HighCard == revHand.HighCard);
            Assert.IsTrue(hand.LowCard == revHand.LowCard);

            hand = new StartingHandCombo("Th9d");
            revHand = new StartingHandCombo("9dTh");

            Assert.IsTrue(hand.Equals(revHand, StartingHandCombo.MatchingMode.ExactSuits));
            Assert.IsFalse(hand.Equals(revHand, StartingHandCombo.MatchingMode.ExactSuits, false));

            Assert.IsTrue(hand.HighCard == revHand.HighCard);
            Assert.IsTrue(hand.LowCard == revHand.LowCard);
        }
 public void Constructor_NullInsteadofString_Throws()
 {
     StartingHandCombo hand = new StartingHandCombo(null);
 }
 public void Constructor_EmptyString_Throws()
 {
     StartingHandCombo hand = new StartingHandCombo("");
 }
 public void Constructor_DuplicateCards_Throws()
 {
     StartingHandCombo hand = new StartingHandCombo(new Card(Rank.Ace, Suit.Diamonds), new Card("AsKd"));
 }
        public void Equals_SameHandsWithDifferentWeightsAreNotEqual_Passes()
        {
            WeightedStartingHandCombo smallerWeight = new WeightedStartingHandCombo("AsKc", .5);
            WeightedStartingHandCombo biggerWeight = new WeightedStartingHandCombo("AsKc", .51);

            Assert.IsFalse(smallerWeight.Equals(biggerWeight));
            Assert.IsTrue(smallerWeight.Equals(new WeightedStartingHandCombo("AsKc", .5)));

            Assert.IsFalse(smallerWeight == biggerWeight);
            Assert.IsTrue(smallerWeight == (new WeightedStartingHandCombo("AsKc", .5)));

            Assert.IsFalse((WeightedStartingHandCombo)null == biggerWeight);
            Assert.IsTrue((WeightedStartingHandCombo)null != biggerWeight);

            Assert.IsFalse(new WeightedStartingHandCombo("7c6s", .5).Equals(new StartingHandCombo("7c6s")),"7c6s(.5) does not equal 7c6s.");

            WeightedStartingHandCombo hand = new WeightedStartingHandCombo("QcQs(.25)");
            StartingHandCombo SH = hand;
            Assert.IsTrue(new WeightedStartingHandCombo("QcQs", .25).Equals(SH));

            SH = new StartingHandCombo("QcQs");
            Assert.IsFalse(new WeightedStartingHandCombo("QcQs", .25).Equals(SH));
        }