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)); }
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); }
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); }