public void CompareHands_TwoThreeOfAKindFirstHandHasHigherValueCards_ShouldReturnPlusOne()
        {
            var firstHandCards = new List <ICard>()
            {
                new FakeCard(CardFace.Ace, CardSuit.Clubs),
                new FakeCard(CardFace.Ace, CardSuit.Clubs),
                new FakeCard(CardFace.Ace, CardSuit.Diamonds),
                new FakeCard(CardFace.Nine, CardSuit.Clubs),
                new FakeCard(CardFace.Ten, CardSuit.Spades)
            };
            var secondHandCards = new List <ICard>()
            {
                new FakeCard(CardFace.Ten, CardSuit.Clubs),
                new FakeCard(CardFace.Nine, CardSuit.Clubs),
                new FakeCard(CardFace.Queen, CardSuit.Diamonds),
                new FakeCard(CardFace.Ten, CardSuit.Clubs),
                new FakeCard(CardFace.Ten, CardSuit.Spades)
            };
            var firstHand   = new FakeHand(firstHandCards);
            var secondHand  = new FakeHand(secondHandCards);
            var handChecker = new PokerHandsChecker();

            var expectedResult = 1;
            var actualResult   = handChecker.CompareHands(firstHand, secondHand);

            Assert.AreEqual(expectedResult, actualResult);
        }
        public void IsValidHand_HandHasDuplicateCards_ShouldReturnFalse()
        {
            // Arrange
            var hand             = new FakeHand(5);
            var pokerHandChecker = new PokerHandsChecker();

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

            // Assert
            Assert.IsFalse(result);
        }
        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);
        }