コード例 #1
0
        public void IsValidHandShouldThrowAnExceptionIfNullHandIsPassed()
        {
            IHand hand = null;
            var checker = new PokerHandsChecker();

            checker.IsValidHand(hand);
        }
コード例 #2
0
        public void IsValidHandShouldThrowAnExceptionIfNullListOfCardsIsPassed()
        {
            List<ICard> cards = null;
            var checker = new PokerHandsChecker();

            checker.IsValidHand(new Hand(cards));
        }
コード例 #3
0
 public void isValidHandShouldThrowExceptionWhenHandContainesNotEnoughtCards()
 {
     var handChecker = new PokerHandsChecker();
     var cards = new List<ICard>() { new Card(CardFace.Six, CardSuit.Clubs) };
     var hand = new Hand(cards);
     handChecker.IsValidHand(hand);
 }
コード例 #4
0
        static void Main()
        {
            ICard card = new Card(CardFace.Ace, CardSuit.Clubs);
            Console.WriteLine(card);

            IHand hand = new Hand(new List<ICard>() { 
                new Card(CardFace.Ace, CardSuit.Clubs),
                new Card(CardFace.Ace, CardSuit.Diamonds),
                new Card(CardFace.King, CardSuit.Hearts),
                new Card(CardFace.King, CardSuit.Spades),
                new Card(CardFace.Seven, CardSuit.Diamonds),
            });
            Console.WriteLine(hand);

            IPokerHandsChecker checker = new PokerHandsChecker();
            //Console.WriteLine(checker.IsValidHand(hand));
            //Console.WriteLine(checker.IsOnePair(hand));
            //Console.WriteLine(checker.IsTwoPair(hand));

            // vasil test
            IList<ICard> cards = new List<ICard>();
            cards.Add(new Card(CardFace.Ace, CardSuit.Diamonds));
            cards.Add(new Card(CardFace.Six, CardSuit.Diamonds));
            cards.Add(new Card(CardFace.Two, CardSuit.Diamonds));
            cards.Add(new Card(CardFace.Three, CardSuit.Diamonds));
            cards.Add(new Card(CardFace.Five, CardSuit.Diamonds));
            hand = new Hand(cards);
            Console.WriteLine(checker.IsStraightFlush(hand));
        }
コード例 #5
0
        public void IsFlushShouldThrowAnExceptionWhenAHandWithNullCardsIsPassed()
        {
            List<ICard> cards = null;
            var checker = new PokerHandsChecker();

            checker.IsFlush(new Hand(cards));
        }
コード例 #6
0
ファイル: TestIsValidHand.cs プロジェクト: quela/myprojects
 public void TestIsValidHand_WithNoCards()
 {
     Hand currentHand = new Hand(new List<ICard>());
     PokerHandsChecker checker = new PokerHandsChecker();
     bool isValidHand = checker.IsValidHand(currentHand);
     Assert.AreEqual(false, isValidHand);
 }
コード例 #7
0
        public void PokerHandCheckerIsFlushReturnsFalseIfItIsNot()
        {
            var handWithDiamondInBegining = new Hand(new List<ICard>() {
                new Card(CardFace.Ace, CardSuit.Diamonds),
                new Card(CardFace.Jack, CardSuit.Spades),
                new Card(CardFace.Four, CardSuit.Spades),
                new Card(CardFace.Queen, CardSuit.Spades),
                new Card(CardFace.Eight, CardSuit.Spades),
            });

            var handWithDiamondInMiddle = new Hand(new List<ICard>() {
                new Card(CardFace.Ace, CardSuit.Spades),
                new Card(CardFace.Jack, CardSuit.Spades),
                new Card(CardFace.Four, CardSuit.Diamonds),
                new Card(CardFace.Queen, CardSuit.Spades),
                new Card(CardFace.Eight, CardSuit.Spades),
            });

            var handWithDiamondInEnd = new Hand(new List<ICard>() {
                new Card(CardFace.Ace, CardSuit.Spades),
                new Card(CardFace.Jack, CardSuit.Spades),
                new Card(CardFace.Four, CardSuit.Spades),
                new Card(CardFace.Queen, CardSuit.Spades),
                new Card(CardFace.Eight, CardSuit.Diamonds),
            });

            var pokerHandChecker = new PokerHandsChecker();

            Assert.IsFalse(pokerHandChecker.IsFlush(handWithDiamondInBegining));
            Assert.IsFalse(pokerHandChecker.IsFlush(handWithDiamondInMiddle));
            Assert.IsFalse(pokerHandChecker.IsFlush(handWithDiamondInEnd));
        }
コード例 #8
0
        public void IsValidHandShouldThrowAnExceptionWhenFiveCardsWithTheSameFaceArePassed()
        {
            var cards = new List<ICard>() { new Card(CardFace.King, CardSuit.Spades), new Card(CardFace.King, CardSuit.Clubs), new Card(CardFace.King, CardSuit.Hearts), new Card(CardFace.King, CardSuit.Diamonds), new Card(CardFace.King, CardSuit.Diamonds) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            checker.IsValidHand(hand);
        }
コード例 #9
0
        public void IsValidHandShouldThrowAnExceptionIfCountOfTheCardsInTheHandIsNotExactly5(int count)
        {
            var cards = new List<ICard>() { new Card(CardFace.King, CardSuit.Spades), new Card(CardFace.Three, CardSuit.Clubs), new Card(CardFace.Two, CardSuit.Clubs), new Card(CardFace.Queen, CardSuit.Spades), new Card(CardFace.King, CardSuit.Diamonds), new Card(CardFace.King, CardSuit.Spades), new Card(CardFace.Three, CardSuit.Clubs), new Card(CardFace.Two, CardSuit.Clubs), new Card(CardFace.Queen, CardSuit.Spades), new Card(CardFace.King, CardSuit.Diamonds) };
            var hand = new Hand(cards.Take(count).ToList());
            var checker = new PokerHandsChecker();

            checker.IsValidHand(hand);
        }
コード例 #10
0
        public void IsValidHandShouldReturnTrueIfValidHandIsPassed()
        {
            var cards = new List<ICard>() { new Card(CardFace.King, CardSuit.Spades), new Card(CardFace.Three, CardSuit.Clubs), new Card(CardFace.Two, CardSuit.Clubs), new Card(CardFace.Queen, CardSuit.Spades), new Card(CardFace.King, CardSuit.Diamonds) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            Assert.IsTrue(checker.IsValidHand(hand));
        }
コード例 #11
0
        public void IsValidHandShouldThrowAnExceptionWhenTwoEqualCardsArePassed()
        {
            var cards = new List<ICard>() { new Card(CardFace.King, CardSuit.Spades), new Card(CardFace.Three, CardSuit.Clubs), new Card(CardFace.Two, CardSuit.Clubs), new Card(CardFace.Queen, CardSuit.Spades), new Card(CardFace.King, CardSuit.Spades) };
               var hand = new Hand(cards);
               var checker = new PokerHandsChecker();

               checker.IsValidHand(hand);
        }
コード例 #12
0
        public void IsFourOfAKindShouldReturnFalseWhenOnePairIsPassed()
        {
            var checker = new PokerHandsChecker();
            var cards = new List<ICard> { new Card(CardFace.Four, CardSuit.Spades), new Card(CardFace.Four, CardSuit.Diamonds), new Card(CardFace.Six, CardSuit.Hearts), new Card(CardFace.Seven, CardSuit.Hearts), new Card(CardFace.Four, CardSuit.Hearts) };
            var hand = new Hand(cards);

            Assert.IsFalse(checker.IsFourOfAKind(hand));
        }
コード例 #13
0
        public void TestFourOfAKind()
        {
            Hand hand = "4♣ 4♦ 4♥ 4♠ A♠";

            bool actual = new PokerHandsChecker().IsFourOfAKind(hand);

            Assert.AreEqual(true, actual);
        }
コード例 #14
0
        public void IsFlushShouldThrowAnExceptionWhenAnInvalidHandWithMoreCardsIsPassed()
        {
            var cards = new List<ICard>() { new Card(CardFace.King, CardSuit.Spades), new Card(CardFace.King, CardSuit.Clubs), new Card(CardFace.Two, CardSuit.Clubs), new Card(CardFace.Three, CardSuit.Spades), new Card(CardFace.Four, CardSuit.Clubs), new Card(CardFace.Five, CardSuit.Clubs) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            checker.IsFlush(hand);
        }
コード例 #15
0
        public void IsTwoPairShouldReturnFalseIfCardsMakeFlush()
        {
            var cards = new List<ICard>() { new Card(CardFace.Ace, CardSuit.Clubs), new Card(CardFace.Queen, CardSuit.Clubs), new Card(CardFace.Ten, CardSuit.Clubs), new Card(CardFace.Five, CardSuit.Clubs), new Card(CardFace.Three, CardSuit.Clubs) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            Assert.IsFalse(checker.IsTwoPair(hand));
        }
コード例 #16
0
        public void IsFourOfAKindShouldReturnFalseWhenTwoPairsArePassed()
        {
            var cards = new List<ICard>() { new Card(CardFace.King, CardSuit.Spades), new Card(CardFace.King, CardSuit.Clubs), new Card(CardFace.Two, CardSuit.Clubs), new Card(CardFace.Two, CardSuit.Hearts), new Card(CardFace.Ten, CardSuit.Diamonds) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            Assert.IsFalse(checker.IsFourOfAKind(hand));
        }
コード例 #17
0
        public void IsStraightShouldReturnFalseIfCardsAreTheSameSuit()
        {
            var cards = new List<ICard>() { new Card(CardFace.King, CardSuit.Spades), new Card(CardFace.Two, CardSuit.Spades), new Card(CardFace.Five, CardSuit.Spades), new Card(CardFace.Ten, CardSuit.Spades), new Card(CardFace.Seven, CardSuit.Spades) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            Assert.IsFalse(checker.IsStraight(hand));
        }
コード例 #18
0
        public void IsFullHouseShouldReturnFalseIfCardsAreThreeOfAKind()
        {
            var cards = new List<ICard>() { new Card(CardFace.Ace, CardSuit.Clubs), new Card(CardFace.Ace, CardSuit.Spades), new Card(CardFace.Ace, CardSuit.Hearts), new Card(CardFace.Five, CardSuit.Diamonds), new Card(CardFace.Three, CardSuit.Spades) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            Assert.IsFalse(checker.IsFullHouse(hand));
        }
コード例 #19
0
        public void CompareHands_TestForNullCards_ShouldNotBeCorrect()
        {
            IHand first = null;
            IHand second = null;
            var checker = new PokerHandsChecker();

            checker.CompareHands(first,second);
        }
コード例 #20
0
        public void IsFourOfAKindShouldReturnTrueWhenAValidHandWithFourOfAKindCardsIsPassed()
        {
            var cards = new List<ICard>() { new Card(CardFace.King, CardSuit.Spades), new Card(CardFace.King, CardSuit.Clubs), new Card(CardFace.Two, CardSuit.Clubs), new Card(CardFace.King, CardSuit.Hearts), new Card(CardFace.King, CardSuit.Diamonds) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            Assert.IsTrue(checker.IsFourOfAKind(hand));
        }
コード例 #21
0
        public void IsFlushShouldReturnTrueWhen5NotStraightSpadesArePassed()
        {
            var cards = new List<ICard>() { new Card(CardFace.King, CardSuit.Spades), new Card(CardFace.Queen, CardSuit.Spades), new Card(CardFace.Ten, CardSuit.Spades), new Card(CardFace.Two, CardSuit.Spades), new Card(CardFace.Three, CardSuit.Spades) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            Assert.IsTrue(checker.IsFlush(hand));
        }
コード例 #22
0
        public void TestStraightFlush()
        {
            Hand hand = "J♣ 10♣ 9♣ 8♣ 7♣";

            bool actual = new PokerHandsChecker().IsStraightFlush(hand);

            Assert.AreEqual(true, actual);
        }
コード例 #23
0
        public void IsStraightShouldReturnFalseIfCardsMakeOnePair()
        {
            var cards = new List<ICard>() { new Card(CardFace.Ace, CardSuit.Clubs), new Card(CardFace.Ace, CardSuit.Spades), new Card(CardFace.Eight, CardSuit.Spades), new Card(CardFace.Five, CardSuit.Clubs), new Card(CardFace.Three, CardSuit.Clubs) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            Assert.IsFalse(checker.IsStraight(hand));
        }
コード例 #24
0
ファイル: Program.cs プロジェクト: dgrigorov/TelerikAcademy-1
        static void Main()
        {
            Console.WriteLine(new Card(CardFace.Ace, CardSuit.Clubs));

            IPokerHandsChecker checker = new PokerHandsChecker();

            //Console.WriteLine(checker.IsStraightFlush((Hand)"J♣ 10♣ 9♣ 8♣ 7♣"));
        }
コード例 #25
0
        public void CompareHands_TestForNullCards_ShouldNotBeCorrect()
        {
            IHand first = null;
            IHand second = null;
            var checker = new PokerHandsChecker();

            Assert.Throws<ArgumentNullException>(() => checker.CompareHands(first, second));
        }
コード例 #26
0
        public void IsTwoPairShouldReturnFalseIfCardsAreHigh()
        {
            var cards = new List<ICard>() { new Card(CardFace.Ace, CardSuit.Clubs), new Card(CardFace.Ten, CardSuit.Clubs), new Card(CardFace.Nine, CardSuit.Spades), new Card(CardFace.Five, CardSuit.Diamonds), new Card(CardFace.Four, CardSuit.Diamonds) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            Assert.IsFalse(checker.IsTwoPair(hand));
        }
コード例 #27
0
        public void IsStraightShouldReturnFalseIfCardsMakeFullHouse()
        {
            var cards = new List<ICard>() { new Card(CardFace.Ten, CardSuit.Clubs), new Card(CardFace.Ten, CardSuit.Spades), new Card(CardFace.Ten, CardSuit.Diamonds), new Card(CardFace.Four, CardSuit.Hearts), new Card(CardFace.Four, CardSuit.Clubs) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            Assert.IsFalse(checker.IsStraight(hand));
        }
コード例 #28
0
        public void IsTwoPairPairShouldThrowAnExceptionWhenAnInvalidHandWithLessThan5CardsIsPassed()
        {
            var cards = new List<ICard>() { new Card(CardFace.King, CardSuit.Spades), new Card(CardFace.King, CardSuit.Clubs), new Card(CardFace.Two, CardSuit.Clubs) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            checker.IsTwoPair(hand);
        }
コード例 #29
0
        public void IsStraightShouldReturnFalseIfCardsMakeStraightFlush()
        {
            var cards = new List<ICard>() { new Card(CardFace.Eight, CardSuit.Clubs), new Card(CardFace.Seven, CardSuit.Clubs), new Card(CardFace.Six, CardSuit.Clubs), new Card(CardFace.Five, CardSuit.Clubs), new Card(CardFace.Four, CardSuit.Clubs) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            Assert.IsFalse(checker.IsStraight(hand));
        }
コード例 #30
0
        public void IsFlushShouldReturnFalseWhen4OfSameSuitArePassed()
        {
            var cards = new List<ICard>() { new Card(CardFace.King, CardSuit.Spades), new Card(CardFace.Five, CardSuit.Spades), new Card(CardFace.Nine, CardSuit.Spades), new Card(CardFace.Jack, CardSuit.Spades), new Card(CardFace.Two, CardSuit.Clubs) };
            var hand = new Hand(cards);
            var checker = new PokerHandsChecker();

            Assert.IsFalse(checker.IsFlush(hand));
        }
コード例 #31
0
        public void TestIsStraightFlushFlush()
        {
            Card          cardOne   = new Card(CardFace.Two, CardSuit.Diamonds);
            Card          cardTwo   = new Card(CardFace.Jack, CardSuit.Diamonds);
            Card          cardThree = new Card(CardFace.Five, CardSuit.Diamonds);
            Card          cardFour  = new Card(CardFace.Ace, CardSuit.Diamonds);
            Card          cardFive  = new Card(CardFace.Ten, CardSuit.Diamonds);
            IList <ICard> cards     = new List <ICard>();

            cards.Add(cardOne);
            cards.Add(cardTwo);
            cards.Add(cardThree);
            cards.Add(cardFour);
            cards.Add(cardFive);
            Hand hand = new Hand(cards);
            PokerHandsChecker poker = new PokerHandsChecker();
            bool isStraightFlush    = poker.IsStraightFlush(hand);

            Assert.AreEqual(false, isStraightFlush, "IsStraightFlush() method in class PokerHandsChecker is not working correctly.");
        }
コード例 #32
0
        public void TestIsThreeOfAKindSameCards()
        {
            Card          cardOne   = new Card(CardFace.Two, CardSuit.Diamonds);
            Card          cardTwo   = new Card(CardFace.Ten, CardSuit.Hearts);
            Card          cardThree = new Card(CardFace.Ace, CardSuit.Clubs);
            Card          cardFour  = new Card(CardFace.Ace, CardSuit.Clubs);
            Card          cardFive  = new Card(CardFace.Ace, CardSuit.Clubs);
            IList <ICard> cards     = new List <ICard>();

            cards.Add(cardOne);
            cards.Add(cardTwo);
            cards.Add(cardThree);
            cards.Add(cardFour);
            cards.Add(cardFive);
            Hand hand = new Hand(cards);
            PokerHandsChecker poker = new PokerHandsChecker();
            bool isThreeOfAKind     = poker.IsThreeOfAKind(hand);

            Assert.AreEqual(false, isThreeOfAKind, "IsThreeOfAKind() method in class PokerHandsChecker is not working correctly.");
        }
コード例 #33
0
        public void IsStraightFlush_ShouldReturnFalse_IfPlayerDoesNotHaveStraightFlushInHisHand()
        {
            // Arrange
            IHand hand = new Hand(new List <ICard>()
            {
                new Card(CardFace.Ace, CardSuit.Clubs),
                new Card(CardFace.Queen, CardSuit.Diamonds),
                new Card(CardFace.Seven, CardSuit.Diamonds),
                new Card(CardFace.King, CardSuit.Spades),
                new Card(CardFace.Six, CardSuit.Diamonds),
            });
            var expected = false;

            // Act
            var checker = new PokerHandsChecker();
            var result  = checker.IsStraightFlush(hand);

            // Assert
            NUnit.Core.NUnitFramework.Assert.AreEqual(expected, result);
        }
コード例 #34
0
        public void IsStraightFlush_ShouldReturnTrue_IfPlayerHasStraightFlushInHisHand()
        {
            // Arrange
            IHand hand = new Hand(new List <ICard>()
            {
                new Card(CardFace.Seven, CardSuit.Clubs),
                new Card(CardFace.Eight, CardSuit.Clubs),
                new Card(CardFace.Nine, CardSuit.Clubs),
                new Card(CardFace.Ten, CardSuit.Clubs),
                new Card(CardFace.Jack, CardSuit.Clubs),
            });
            var expected = true;

            // Act
            var checker = new PokerHandsChecker();
            var result  = checker.IsStraightFlush(hand);

            // Assert
            NUnit.Core.NUnitFramework.Assert.AreEqual(expected, result);
        }
コード例 #35
0
        public void IsHighCard_ShouldReturnTrue_IfPlayerHasFiveCardsInHisHand()
        {
            // Arrange
            IHand hand = new Hand(new List <ICard>()
            {
                new Card(CardFace.King, CardSuit.Clubs),
                new Card(CardFace.Queen, CardSuit.Diamonds),
                new Card(CardFace.Ace, CardSuit.Hearts),
                new Card(CardFace.King, CardSuit.Spades),
                new Card(CardFace.Ace, CardSuit.Diamonds),
            });
            var expected = true;

            // Act
            var checker = new PokerHandsChecker();
            var result  = checker.IsHighCard(hand);

            // Assert
            NUnit.Core.NUnitFramework.Assert.AreEqual(expected, result);
        }
コード例 #36
0
        public void TestIsStraightOtherCombination()
        {
            Card          cardOne   = new Card(CardFace.Ten, CardSuit.Diamonds);
            Card          cardTwo   = new Card(CardFace.Ten, CardSuit.Hearts);
            Card          cardThree = new Card(CardFace.Ten, CardSuit.Spades);
            Card          cardFour  = new Card(CardFace.Ten, CardSuit.Clubs);
            Card          cardFive  = new Card(CardFace.King, CardSuit.Clubs);
            IList <ICard> cards     = new List <ICard>();

            cards.Add(cardOne);
            cards.Add(cardTwo);
            cards.Add(cardThree);
            cards.Add(cardFour);
            cards.Add(cardFive);
            Hand hand = new Hand(cards);
            PokerHandsChecker poker = new PokerHandsChecker();
            bool isStraight         = poker.IsStraight(hand);

            Assert.AreEqual(false, isStraight, "IsStraight() method in class PokerHandsChecker is not working correctly.");
        }
コード例 #37
0
        public void TestIsTwoPairValid()
        {
            Card          cardOne   = new Card(CardFace.Ace, CardSuit.Diamonds);
            Card          cardTwo   = new Card(CardFace.Ace, CardSuit.Hearts);
            Card          cardThree = new Card(CardFace.Seven, CardSuit.Spades);
            Card          cardFour  = new Card(CardFace.Ten, CardSuit.Clubs);
            Card          cardFive  = new Card(CardFace.Ten, CardSuit.Spades);
            IList <ICard> cards     = new List <ICard>();

            cards.Add(cardOne);
            cards.Add(cardTwo);
            cards.Add(cardThree);
            cards.Add(cardFour);
            cards.Add(cardFive);
            Hand hand = new Hand(cards);
            PokerHandsChecker poker = new PokerHandsChecker();
            bool isTwoPair          = poker.IsTwoPair(hand);

            Assert.AreEqual(true, isTwoPair, "IsTwoPair() method in class PokerHandsChecker is not working correctly.");
        }
コード例 #38
0
        public void TestIsHighCardStraight()
        {
            Card          cardOne   = new Card(CardFace.Two, CardSuit.Diamonds);
            Card          cardTwo   = new Card(CardFace.Three, CardSuit.Hearts);
            Card          cardThree = new Card(CardFace.Four, CardSuit.Spades);
            Card          cardFour  = new Card(CardFace.Five, CardSuit.Clubs);
            Card          cardFive  = new Card(CardFace.Six, CardSuit.Clubs);
            IList <ICard> cards     = new List <ICard>();

            cards.Add(cardOne);
            cards.Add(cardTwo);
            cards.Add(cardThree);
            cards.Add(cardFour);
            cards.Add(cardFive);
            Hand hand = new Hand(cards);
            PokerHandsChecker poker = new PokerHandsChecker();
            bool isHighCard         = poker.IsHighCard(hand);

            Assert.AreEqual(false, isHighCard, "IsHighCard() method in class PokerHandsChecker is not working correctly.");
        }
コード例 #39
0
        public void TestCompareHandsEqualHands()
        {
            Card          cardOne   = new Card(CardFace.Jack, CardSuit.Diamonds);
            Card          cardTwo   = new Card(CardFace.Jack, CardSuit.Hearts);
            Card          cardThree = new Card(CardFace.Five, CardSuit.Spades);
            Card          cardFour  = new Card(CardFace.Ace, CardSuit.Clubs);
            Card          cardFive  = new Card(CardFace.Ace, CardSuit.Spades);
            IList <ICard> cards     = new List <ICard>();

            cards.Add(cardOne);
            cards.Add(cardTwo);
            cards.Add(cardThree);
            cards.Add(cardFour);
            cards.Add(cardFive);
            Hand handOne            = new Hand(cards);
            Hand handTwo            = new Hand(cards);
            PokerHandsChecker poker = new PokerHandsChecker();
            int result = poker.CompareHands(handOne, handTwo);

            Assert.AreEqual(0, result, "CompareHands() method in class PokerHandsChecker is not working correctly.");
        }
コード例 #40
0
        public void IsValidHand_HandHasFiveDifferentCards_ShouldReturnTrue()
        {
            // Arrange
            var cards = new List <ICard>()
            {
                new ConstantStringFakeCard("card1"),
                new ConstantStringFakeCard("card2"),
                new ConstantStringFakeCard("card3"),
                new ConstantStringFakeCard("card4"),
                new ConstantStringFakeCard("card5"),
            };

            var hand             = new FakeHand(cards);
            var pokerHandChecker = new PokerHandsChecker();

            // Act
            var result = pokerHandChecker.IsValidHand(hand);

            // Assert
            Assert.IsTrue(result);
        }
コード例 #41
0
        public void TestIsValidHandMoreCards()
        {
            Card              cardOne           = new Card(CardFace.Two, CardSuit.Diamonds);
            Card              cardTwo           = new Card(CardFace.Jack, CardSuit.Hearts);
            Card              cardThree         = new Card(CardFace.Five, CardSuit.Spades);
            Card              cardFour          = new Card(CardFace.Ace, CardSuit.Clubs);
            Card              cardFive          = new Card(CardFace.Ten, CardSuit.Clubs);
            Card              cardSix           = new Card(CardFace.Seven, CardSuit.Spades);
            IList <ICard>     cards             = new List <ICard>();
            PokerHandsChecker pokerHandsChecker = new PokerHandsChecker();

            cards.Add(cardOne);
            cards.Add(cardTwo);
            cards.Add(cardThree);
            cards.Add(cardFour);
            cards.Add(cardFive);
            cards.Add(cardSix);
            Hand hand = new Hand(cards);

            Assert.AreEqual(false, pokerHandsChecker.IsValidHand(hand), "IsValidHand() is not working correctly.");
        }
        public void IsFourOfKind_IfHandDoNotContain4SameFaces_ShouldReturnFalse(int face1, int face2, int face3, int face4, int face5)
        {
            var faces = new List <int> {
                face1, face2, face3, face4, face5
            };
            var collection = new List <ICard>();

            foreach (var face in faces)
            {
                var card = Mock.Create <ICard>();
                Mock.Arrange(() => card.Face).Returns((CardFace)face);
                collection.Add(card);
            }

            var hand = Mock.Create <IHand>();

            Mock.Arrange(() => hand.Cards).Returns(collection);

            var checker = new PokerHandsChecker();

            Assert.IsFalse(checker.IsFourOfAKind(hand));
        }
        public void IsValidHand_IfContainEqualsCards_ShouldReturnFalse()
        {
            var collection = new List <ICard>();

            var mockedCard = Mock.Create <ICard>();

            Mock.Arrange(() => mockedCard.Face).Returns(CardFace.King);
            Mock.Arrange(() => mockedCard.Suit).Returns(CardSuit.Diamonds);

            for (int i = 0; i < 5; i++)
            {
                collection.Add(mockedCard);
            }

            var hand = Mock.Create <IHand>();

            Mock.Arrange(() => hand.Cards).Returns(collection);

            var checker = new PokerHandsChecker();

            Assert.IsFalse(checker.IsValidHand(hand));
        }
コード例 #44
0
ファイル: Program.cs プロジェクト: vitezp/poker-hand-checker
    internal static void Main()
    {
        ICard card = new Card(CardFace.Ace, CardSuit.Clubs);

        System.Console.WriteLine(card);

        IHand hand = new Hand(new List <ICard>()
        {
            new Card(CardFace.Five, CardSuit.Diamonds),
            new Card(CardFace.Five, CardSuit.Spades),
            new Card(CardFace.Nine, CardSuit.Clubs),
            new Card(CardFace.Nine, CardSuit.Diamonds),
            new Card(CardFace.King, CardSuit.Hearts),
        });

        System.Console.WriteLine(hand);

        IHand otherHand = new Hand(new List <ICard>()
        {
            new Card(CardFace.Six, CardSuit.Hearts),
            new Card(CardFace.Six, CardSuit.Spades),
            new Card(CardFace.Three, CardSuit.Hearts),
            new Card(CardFace.Three, CardSuit.Diamonds),
            new Card(CardFace.King, CardSuit.Clubs),
        });

        System.Console.WriteLine(otherHand);

        IPokerHandsChecker checker = new PokerHandsChecker();

        System.Console.WriteLine(checker.IsStraightFlush(hand));
        System.Console.WriteLine(checker.IsStraight(hand));
        System.Console.WriteLine(checker.IsThreeOfAKind(hand));
        System.Console.WriteLine(checker.IsFlush(hand));
        System.Console.WriteLine(checker.IsOnePair(hand));
        System.Console.WriteLine(checker.IsTwoPair(hand));

        System.Console.WriteLine(checker.CompareHands(hand, otherHand));
    }
コード例 #45
0
 public void IsFlushShouldBeFalseIfOneCardsDiffers()
 {
     for (int i = 1; i <= 4; i++)
     {
         List <ICard> cards = new List <ICard>();
         cards.Add(new Card(CardFace.Jack, (CardSuit)i));
         cards.Add(new Card(CardFace.Eight, (CardSuit)i));
         cards.Add(new Card(CardFace.Queen, CardSuit.Hearts));
         cards.Add(new Card(CardFace.Six, (CardSuit)i));
         cards.Add(new Card(CardFace.Three, (CardSuit)i));
         Hand someHand             = new Hand(cards);
         PokerHandsChecker checker = new PokerHandsChecker();
         if ((CardSuit)i != CardSuit.Hearts)
         {
             Assert.AreEqual(false, checker.IsFlush(someHand));
         }
         else
         {
             Assert.AreEqual(true, checker.IsFlush(someHand));
         }
     }
 }
        public void IsValidHand_IfContainsExactly5DiferentCards_ShouldReturnTrue()
        {
            var rng   = new Random();
            var faces = Enum.GetValues(typeof(CardFace));
            var suits = Enum.GetValues(typeof(CardSuit));

            var collection = new List <ICard>();

            while (collection.Count < 5)
            {
                var mockedCard = Mock.Create <ICard>();
                Mock.Arrange(() => mockedCard.Face).Returns((CardFace)faces.GetValue(rng.Next(faces.Length)));
                Mock.Arrange(() => mockedCard.Suit).Returns((CardSuit)suits.GetValue(rng.Next(suits.Length)));

                bool IsSameCard = false;

                foreach (var c in collection)
                {
                    if (c.Face == mockedCard.Face && c.Suit == mockedCard.Suit)
                    {
                        IsSameCard = true;
                    }
                }

                if (!IsSameCard)
                {
                    collection.Add(mockedCard);
                }
            }

            var hand = Mock.Create <IHand>();

            Mock.Arrange(() => hand.Cards).Returns(collection);

            var checker = new PokerHandsChecker();

            Assert.IsTrue(checker.IsValidHand(hand));
        }
        public void IsFlush_IfHandContainDiferentSuits_ShouldReturnFalse(int suit1, int suit2, int suit3, int suit4, int suit5)
        {
            var collection = new List <ICard>();
            var suits      = new List <int> {
                suit1, suit2, suit3, suit4, suit5
            };

            foreach (var suit in suits)
            {
                var card = Mock.Create <ICard>();
                Mock.Arrange(() => card.Suit).Returns((CardSuit)suit);

                collection.Add(card);
            }

            var hand = Mock.Create <IHand>();

            Mock.Arrange(() => hand.Cards).Returns(collection);

            var checker = new PokerHandsChecker();

            Assert.IsFalse(checker.IsFlush(hand));
        }
コード例 #48
0
        public void ValidHandShouldConsistsOfFiveCards()
        {
            List <ICard> cards = new List <ICard>();

            for (int i = 0; i < 3; i++)
            {
                cards.Add(new Card((CardFace)i + 1, CardSuit.Diamonds));
            }

            Hand someHand             = new Hand(cards);
            PokerHandsChecker checker = new PokerHandsChecker();

            Assert.AreEqual(false, checker.IsValidHand(someHand));

            for (int i = 0; i < 3; i++)
            {
                cards.Add(new Card((CardFace)i + 1, CardSuit.Diamonds));
            }

            Hand someOtherHand = new Hand(cards);

            Assert.AreEqual(false, checker.IsValidHand(someOtherHand));
        }
コード例 #49
0
        public void IsFourOfAKindIsNotValidIfThereAreNotFourCardsOfOneFace()
        {
            Random generator = new Random();

            for (int i = 2; i <= 14; i++)
            {
                List <ICard> cards = new List <ICard>();
                cards.Add(new Card((CardFace)i, (CardSuit)generator.Next(1, 4)));
                cards.Add(new Card((CardFace)i, (CardSuit)generator.Next(1, 4)));
                cards.Add(new Card((CardFace)i, (CardSuit)generator.Next(1, 4)));
                cards.Add(new Card(CardFace.Three, (CardSuit)generator.Next(1, 4)));
                cards.Add(new Card(CardFace.Three, (CardSuit)i));
                Hand someHand             = new Hand(cards);
                PokerHandsChecker checker = new PokerHandsChecker();
                if (someHand.Cards[4].Face != CardFace.Three)
                {
                    Assert.AreEqual(false, checker.IsFourOfAKind(someHand));
                }
                else
                {
                    Assert.AreEqual(true, checker.IsFourOfAKind(someHand));
                }
            }
        }
        public void IsFourOfKind_IfHandContain4OfSameFaces_ShouldReturnTrue(int face, int otherFace)
        {
            var collection = new List <ICard>();

            for (int i = 0; i < 4; i++)
            {
                var card = Mock.Create <ICard>();
                Mock.Arrange(() => card.Face).Returns((CardFace)face);
                collection.Add(card);
            }

            var fifthCard = Mock.Create <ICard>();

            Mock.Arrange(() => fifthCard.Face).Returns((CardFace)otherFace);
            collection.Add(fifthCard);

            var hand = Mock.Create <IHand>();

            Mock.Arrange(() => hand.Cards).Returns(collection);

            var checker = new PokerHandsChecker();

            Assert.IsTrue(checker.IsFourOfAKind(hand));
        }
コード例 #51
0
        public void PokerHandsShouldReturnTrueIfIs_FourOfAKind()
        {
            PokerHandsChecker pokerChecker = new PokerHandsChecker();

            Assert.IsTrue(pokerChecker.IsFourOfAKind(FourOfAKind));
        }
コード例 #52
0
        public void PokerHandsShouldThrowIfHandContainsMoreThanFiveCards()
        {
            PokerHandsChecker pokerChecker = new PokerHandsChecker();

            pokerChecker.IsValidHand(InvalidHandWithSixCards);
        }
コード例 #53
0
        public void PokerHandsShouldThrowIfHandContainsEqualCards()
        {
            PokerHandsChecker pokerChecker = new PokerHandsChecker();

            pokerChecker.IsValidHand(InvalidHandWithEqualCards);
        }
コード例 #54
0
        public void PokerHandsShouldReturnFalseIfIs_FlushHand_ButIs_StaithFlushHand()
        {
            PokerHandsChecker pokerChecker = new PokerHandsChecker();

            Assert.IsFalse(pokerChecker.IsFlush(StraitFlush));
        }
コード例 #55
0
        public void PokerHandsShouldReturnTrueIfIs_FlushHand()
        {
            PokerHandsChecker pokerChecker = new PokerHandsChecker();

            Assert.IsTrue(pokerChecker.IsFlush(Flush));
        }
コード例 #56
0
        public void PokerHandsCheckerConstructorTest()
        {
            PokerHandsChecker target = new PokerHandsChecker();

            Assert.Inconclusive("TODO: Implement code to verify target");
        }
コード例 #57
0
        public void PokerHandsShouldReturnTrueIfIsValidHand()
        {
            PokerHandsChecker pokerChecker = new PokerHandsChecker();

            Assert.IsTrue(pokerChecker.IsValidHand(ValidHand));
        }
コード例 #58
0
        public void PokerHandsShouldReturnFalseIfItIsNot_FourOfAKind()
        {
            PokerHandsChecker pokerChecker = new PokerHandsChecker();

            Assert.IsFalse(pokerChecker.IsFourOfAKind(ValidHand));
        }
コード例 #59
0
        public void PokerHandsShouldReturnFalseIfItIsNot_StraitFlush()
        {
            PokerHandsChecker pokerChecker = new PokerHandsChecker();

            Assert.IsFalse(pokerChecker.IsStraightFlush(ValidHand));
        }
コード例 #60
0
        public void PokerHandsShouldReturnTrueTenToAce_StraightFlush()
        {
            PokerHandsChecker pokerChecker = new PokerHandsChecker();

            Assert.IsTrue(pokerChecker.IsStraightFlush(StraitFlushTenToAce));
        }