public void Test_TwoPairs_CreateInstance(string strCards, bool isValid)
        {
            var cards    = Utils.ParseCards(strCards);
            var twoPairs = TwoPairs.CreateInstance(cards);

            CreateInstanceHelper(twoPairs, HandRanks.TwoPairs, cards, isValid);
        }
Пример #2
0
        public void test_scores()
        {
            var highCard = new HighCard();

            Assert.AreEqual(0, highCard.Score);
            var onePair = new OnePair();

            Assert.AreEqual(1, onePair.Score);
            var twoPairs = new TwoPairs();

            Assert.AreEqual(2, twoPairs.Score);
            var set = new Set();

            Assert.AreEqual(3, set.Score);
            var straight = new Straight();

            Assert.AreEqual(4, straight.Score);
            var flush = new Flush();

            Assert.AreEqual(5, flush.Score);
            var fullHouse = new FullHouse();

            Assert.AreEqual(6, fullHouse.Score);
            var quads = new Quads();

            Assert.AreEqual(7, quads.Score);
            var straightFlush = new StraightFlush();

            Assert.AreEqual(8, straightFlush.Score);
            var royalFlush = new RoyalFlush();

            Assert.AreEqual(9, royalFlush.Score);
        }
Пример #3
0
        public void HandIsTwoPairs()
        {
            //Arrange
            List <Card> cards = new List <Card>();

            cards.Add(new Card(Suits.Hearts, 2));
            cards.Add(new Card(Suits.Hearts, "A"));
            cards.Add(new Card(Suits.Spades, 3));
            cards.Add(new Card(Suits.Clubes, 3));
            cards.Add(new Card(Suits.Hearts, "K"));
            cards.Add(new Card(Suits.Dimensions, 2));
            cards.Add(new Card(Suits.Hearts, "J"));

            //Act
            TwoPairs h        = new TwoPairs();
            Hand     twoPairs = h.IsMatch(cards).Value;

            //Assert
            Assert.IsNotNull(twoPairs);
            Assert.AreEqual(5, twoPairs.CardsInTheHand.Count);
            Assert.AreEqual <int>(3, twoPairs.CardsInTheHand[0].Value);
            Assert.AreEqual <int>(2, twoPairs.CardsInTheHand[2].Value);
            Assert.AreEqual <int>(14, twoPairs.CardsInTheHand[4].Value);
            Assert.AreEqual(Constancts.HandRanks.TwoPairs, twoPairs.Rank);
        }
Пример #4
0
        public void TwoPair_Ace_and_Nine_should_be_stronger_than_king_and_queen()
        {
            TwoPairs A9 = new TwoPairs(Rank.Ace, Rank.Nine);
            TwoPairs KQ = new TwoPairs(Rank.King, Rank.Queen);

            Assert.True(A9.CompareWith(KQ) > 0);
        }
Пример #5
0
        public void TwoPairsShouldReturnSumOfPairs(List <int> rolledDice, int expectedOutcome)
        {
            var twoPairs = new TwoPairs();
            var result   = twoPairs.CalculateScore(rolledDice);

            Assert.Equal(expectedOutcome, result);
        }
        public void Test_TwoPairs_ComparableTests(string strInputA, string strInputB, int comp)
        {
            var cardsA = Utils.ParseCards(strInputA);
            var cardsB = Utils.ParseCards(strInputB);

            var twoPairsOne = TwoPairs.CreateInstance(cardsA);
            var twoPairsTwo = TwoPairs.CreateInstance(cardsB);

            ComparableTestsHelper(twoPairsOne, twoPairsTwo, comp);
        }
        public void Test_TwoPairs_EqualityOperators(string strInputA, string strInputB, bool areEqual)
        {
            var cardsA = Utils.ParseCards(strInputA);
            var cardsB = Utils.ParseCards(strInputB);

            var twoPairOne = TwoPairs.CreateInstance(cardsA);
            var twoPairTwo = TwoPairs.CreateInstance(cardsB);

            EqualityOperatorsHelper(twoPairOne, twoPairTwo, areEqual);
        }
Пример #8
0
        public void HandTwoPairsTestDuplicate()
        {
            //Arrange
            List <Card> cards = new List <Card>();

            cards.Add(new Card(Suits.Clubes, "A"));
            cards.Add(new Card(Suits.Clubes, "A"));

            //Act
            TwoPairs hand = new TwoPairs();

            //Assert
            Assert.ThrowsException <InvalidOperationException>(() => hand.IsMatch(cards));
        }
        public void Test_TwoPairs_EqualityOperators_ForNull()
        {
            var cards    = Utils.ParseCards("4H 4D 6H 6S 8H");
            var twoPairs = TwoPairs.CreateInstance(cards);

            Assert.False(twoPairs.Equals(null));

            Assert.True((TwoPairs)null == (TwoPairs)null);
            Assert.False((TwoPairs)null == twoPairs);
            Assert.False(twoPairs == (TwoPairs)null);

            Assert.False((TwoPairs)null != (TwoPairs)null);
            Assert.True((TwoPairs)null != twoPairs);
            Assert.True(twoPairs != (TwoPairs)null);
        }
Пример #10
0
        public void two_pair_no2()
        {
            var set   = new TwoPairs();
            var cards = new List <Card>
            {
                new Card(Suit.Clubs, Rank.Eight),
                new Card(Suit.Diamonds, Rank.Eight),
                new Card(Suit.Hearts, Rank.Eight),
                new Card(Suit.Spades, Rank.Eight)
            };

            set.SetCards(cards);
            var result = set.IsPresent();

            Assert.IsFalse(result);
        }
Пример #11
0
    override public int Compare(Hand second)
    {
        TwoPairs secondHidden = second as TwoPairs;

        for (int i = 0; i < 3; i++)
        {
            if (cardPower[i] > secondHidden.cardPower[i])
            {
                return(1);
            }
            else if (cardPower[i] < secondHidden.cardPower[i])
            {
                return(-1);
            }
        }
        return(0);
    }
Пример #12
0
        public void TwoPairsUnitTests_1()
        {
            var twoPairsHands = new Dictionary <long, string>()
            {
                //{0x0008004002001000, string.Empty},                                      // 0000 0000 0000/1000 0000.0000 0/100.0000 0000.00/10 0000.0000 000/1.0000 0000.0000
                { 0x0000000002221121, string.Empty }                                         // 0000 0000 0000/0000 0000.0000 0/000.0000 0000.00/10 0010.0010 000/1.0001 0010.0001
            };

            var pht = new TwoPairs();

            foreach (var hand in twoPairsHands)
            {
                var ph = new PokerHand(hand.Key);
                Assert.True(pht.Parse(ph), hand.Value);
                Assert.Equal(PokerHandAnalyzer.Strength.TwoPairs, ph.Strength);
            }
        }
Пример #13
0
        public void HandIsNotTwoPairs()
        {
            //Arrange
            List <Card> cards = new List <Card>();

            cards.Add(new Card(Suits.Hearts, 2));
            cards.Add(new Card(Suits.Hearts, "A"));
            cards.Add(new Card(Suits.Spades, 4));
            cards.Add(new Card(Suits.Clubes, 3));
            cards.Add(new Card(Suits.Hearts, "K"));
            cards.Add(new Card(Suits.Dimensions, "K"));
            cards.Add(new Card(Suits.Hearts, "J"));

            //Act
            TwoPairs twoPairs = new TwoPairs();

            //Assert
            Assert.IsFalse(twoPairs.IsMatch(cards).HasValue);
        }
Пример #14
0
 public TwoPairsTests()
 {
     _twoPairsCategory = new TwoPairs();
 }
Пример #15
0
    private static Hand isFour(List <Card> cards)
    {
        int[] combinations = new int[13];
        foreach (Card card in cards)
        {
            combinations[card.Hierarchy] += 1;
        }
        Pair   bestPair   = null;
        Pair   secondPair = null;
        Triple bestTriple = null;
        Four   bestFour   = null;

        for (int i = 12; i >= 0; i--)
        {
            switch (combinations[i])
            {
            case 2:
                if (bestPair == null)
                {
                    bestPair = new Pair(i);
                }
                else if (secondPair == null)
                {
                    secondPair = new Pair(i);
                }
                break;

            case 3:
                if (bestTriple == null)
                {
                    bestTriple = new Triple(i);
                }
                break;

            case 4:
                if (bestFour == null)
                {
                    bestFour = new Four(i);
                }
                break;

            default:
                break;
            }
        }

        if (bestFour != null)
        {
            int highest = 0;
            foreach (Card card in cards)
            {
                if (card.Hierarchy != bestFour.CardPower && card.Hierarchy > highest)
                {
                    highest = card.Hierarchy;
                }
            }
            bestFour.LooseCardPower = highest;
            return(bestFour);
        }
        if (bestTriple != null)
        {
            if (bestPair != null)
            {
                return(new FullHouse(bestTriple, bestPair));
            }
            else
            {
                int[] minorCards = new int[2];
                int   j          = 0;
                for (int i = 12; i >= 0 && j < 2;)
                {
                    if (combinations[i] > 0 && i != bestTriple.CardPower)
                    {
                        minorCards[j++] = i;
                        combinations[i]--;
                    }
                    else
                    {
                        i--;
                    }
                }
                bestTriple.LooseCardsPower = minorCards;
                return(bestTriple);
            }
        }
        if (secondPair != null)
        {
            int highest = 0;
            foreach (Card card in cards)
            {
                if (card.Hierarchy != bestPair.CardPower && card.Hierarchy != secondPair.CardPower && card.Hierarchy > highest)
                {
                    highest = card.Hierarchy;
                }
            }
            TwoPairs twoPairs = new TwoPairs(bestPair, secondPair);
            twoPairs.LooseCardPower = highest;
            return(twoPairs);
        }
        if (bestPair != null)
        {
            int[] minorCards = new int[3];
            int   j          = 0;
            for (int i = 12; i >= 0 && j < 3;)
            {
                if (combinations[i] > 0 && i != bestPair.CardPower)
                {
                    minorCards[j++] = i;
                    combinations[i]--;
                }
                else
                {
                    i--;
                }
            }
            bestPair.LooseCardsPower = minorCards;
            return(bestPair);
        }
        One bestCard = new One();

        int[] highestCards = new int[5];
        for (int i = 0; i < 5; i++)
        {
            highestCards[i] = cards[i].Hierarchy;
        }
        return(bestCard);
    }