示例#1
0
        public void CardList_Is_RoyalFlush()
        {
            var cardList = new List <Card>()
            {
                new Card()
                {
                    FaceValue = CardFaceValue.Jack, Suit = CardSuit.Spades
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Ten, Suit = CardSuit.Spades
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Eight, Suit = CardSuit.Diamonds
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Queen, Suit = CardSuit.Clubs
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Four, Suit = CardSuit.Spades
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Ace, Suit = CardSuit.Hearts
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Ten, Suit = CardSuit.Hearts
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Jack, Suit = CardSuit.Hearts
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Queen, Suit = CardSuit.Hearts
                },
                new Card()
                {
                    FaceValue = CardFaceValue.King, Suit = CardSuit.Hearts
                }
            };

            var rule = new RoyalFlushRule();
            var hand = rule.BuildStrongestHand(cardList);

            Assert.IsNotNull(hand);
            Assert.AreEqual("Royal Flush", hand.Name);
            Assert.AreEqual(1000, hand.RankPrimary);

            Assert.IsTrue(hand.Cards.All(x => x.Suit == CardSuit.Hearts));
            Assert.IsTrue(hand.Cards.Any(x => x.FaceValue == CardFaceValue.Ten));
            Assert.IsTrue(hand.Cards.Any(x => x.FaceValue == CardFaceValue.Jack));
            Assert.IsTrue(hand.Cards.Any(x => x.FaceValue == CardFaceValue.Queen));
            Assert.IsTrue(hand.Cards.Any(x => x.FaceValue == CardFaceValue.King));
            Assert.IsTrue(hand.Cards.Any(x => x.FaceValue == CardFaceValue.Ace));
        }
示例#2
0
        public void CardList_Is_Not_RoyalFlush()
        {
            var cardList = new List <Card>()
            {
                new Card()
                {
                    FaceValue = CardFaceValue.Jack, Suit = CardSuit.Spades
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Ten, Suit = CardSuit.Spades
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Eight, Suit = CardSuit.Diamonds
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Queen, Suit = CardSuit.Clubs
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Four, Suit = CardSuit.Spades
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Ace, Suit = CardSuit.Hearts
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Ten, Suit = CardSuit.Hearts
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Jack, Suit = CardSuit.Hearts
                },
                new Card()
                {
                    FaceValue = CardFaceValue.Queen, Suit = CardSuit.Hearts
                },
                new Card()
                {
                    FaceValue = CardFaceValue.King, Suit = CardSuit.Diamonds
                }
            };

            var rule = new RoyalFlushRule();
            var hand = rule.BuildStrongestHand(cardList);

            Assert.IsNull(hand);
        }
        public void RoyalFlush_OneCardMissingInHand_NoMatch()
        {
            List <Card> cards = new List <Card>
            {
                new Card(CardSuit.Clubs, CardRank.Ace),
                new Card(CardSuit.Clubs, CardRank.King),
                new Card(CardSuit.Clubs, CardRank.Queen),
                new Card(CardSuit.Clubs, CardRank.Jack)
            };

            RoyalFlushRule rule = new RoyalFlushRule();

            bool result = rule.IsMatch(cards);

            Assert.AreEqual(false, result);
        }
        public void RoyalFlush_AllSameSuitNotCorrectRank_NoMatch()
        {
            List <Card> cards = new List <Card>
            {
                new Card(CardSuit.Clubs, CardRank.King),
                new Card(CardSuit.Clubs, CardRank.Queen),
                new Card(CardSuit.Clubs, CardRank.Jack),
                new Card(CardSuit.Clubs, CardRank.Ten),
                new Card(CardSuit.Clubs, CardRank.Nine),
                new Card(CardSuit.Clubs, CardRank.Eight),
                new Card(CardSuit.Clubs, CardRank.Seven),
            };

            RoyalFlushRule rule = new RoyalFlushRule();

            bool result = rule.IsMatch(cards);

            Assert.AreEqual(false, result);
        }
        public void RoyalFlush_CorrectRanksOtherSuit_NoMatch()
        {
            List <Card> cards = new List <Card>
            {
                new Card(CardSuit.Clubs, CardRank.Ace),
                new Card(CardSuit.Hearts, CardRank.King),
                new Card(CardSuit.Clubs, CardRank.Queen),
                new Card(CardSuit.Clubs, CardRank.Jack),
                new Card(CardSuit.Clubs, CardRank.Ten),
                new Card(CardSuit.Clubs, CardRank.Nine),
                new Card(CardSuit.Clubs, CardRank.Eight)
            };

            RoyalFlushRule rule = new RoyalFlushRule();

            bool result = rule.IsMatch(cards);

            Assert.AreEqual(false, result);
        }
        public void RoyalFlush_IsMatch_IsAMatchWithSevenCards()
        {
            List <Card> cards = new List <Card>
            {
                new Card(CardSuit.Clubs, CardRank.Ace),
                new Card(CardSuit.Clubs, CardRank.King),
                new Card(CardSuit.Clubs, CardRank.Queen),
                new Card(CardSuit.Clubs, CardRank.Jack),
                new Card(CardSuit.Clubs, CardRank.Ten),
                new Card(CardSuit.Clubs, CardRank.Nine),
                new Card(CardSuit.Clubs, CardRank.Eight)
            };

            RoyalFlushRule rule = new RoyalFlushRule();

            bool result = rule.IsMatch(cards);

            Assert.AreEqual(true, result);
        }
示例#7
0
        static void Main(string[] args)
        {
            List <Card> cards = new List <Card>
            {
                new Card(CardSuit.Clubs, CardRank.Ace),
                new Card(CardSuit.Diamonds, CardRank.Ace),
                new Card(CardSuit.Diamonds, CardRank.Queen),
                new Card(CardSuit.Hearts, CardRank.Queen),
                new Card(CardSuit.Clubs, CardRank.Queen),
            };

            var royalFlushRule = new RoyalFlushRule()
                                 .SetNext(new ThreeOfAKindRule())
                                 .SetNext(new TwoPairRule())
                                 .SetNext(new HighEndRule());

            var isMatch = royalFlushRule.IsMatch(cards);

            Console.WriteLine($"This is a match with: {isMatch.Rule}");
        }
        public void RoyalFlush_DoubleRoyalFlushWithDifferentSuit_IsAMatch()
        {
            List <Card> cards = new List <Card>
            {
                new Card(CardSuit.Clubs, CardRank.Ace),
                new Card(CardSuit.Clubs, CardRank.King),
                new Card(CardSuit.Clubs, CardRank.Queen),
                new Card(CardSuit.Clubs, CardRank.Jack),
                new Card(CardSuit.Clubs, CardRank.Ten),
                new Card(CardSuit.Diamonds, CardRank.Ace),
                new Card(CardSuit.Diamonds, CardRank.King),
                new Card(CardSuit.Diamonds, CardRank.Queen),
                new Card(CardSuit.Diamonds, CardRank.Jack),
                new Card(CardSuit.Diamonds, CardRank.Ten),
            };

            RoyalFlushRule rule = new RoyalFlushRule();

            bool result = rule.IsMatch(cards);

            Assert.AreEqual(true, result);
        }