コード例 #1
0
 public void FourOfAKind()
 {
     var testHand = new PokerEntities.Hand(
         new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ace),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ten),
             });
     var expected = new ReturnTypes.FourOfAKindReturn(true, PokerEntities.CardRank.Ten, PokerEntities.CardRank.Ace);
     Assert.AreEqual(expected, testHand.Cards.FourOfAKind());
 }
コード例 #2
0
 public void FourOfAKindIsNotThreeOfAKind()
 {
     var testHand = new PokerEntities.Hand(
         new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ten),
             });
     var expected = new ReturnTypes.ThreeOfAKindReturn(false, null, null, null);
     Assert.AreEqual(expected, testHand.Cards.ThreeOfAKind());
 }
コード例 #3
0
 public void AceStraight()
 {
     var testHand = new PokerEntities.Hand(
         new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Two),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Four),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Three),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Five),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ace),
             });
     var expected = new ReturnTypes.StraightReturn(true, PokerEntities.CardRank.Five);
     Assert.AreEqual(expected, testHand.Cards.Straight());
 }
コード例 #4
0
 public void Flush()
 {
     var testHand = new PokerEntities.Hand(
         new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Jack),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Six),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.King),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ace),
             });
     var expected = new ReturnTypes.FlushReturn(true, new List<PokerEntities.CardRank>
                                                                   {
                                                                       PokerEntities.CardRank.Ace,
                                                                       PokerEntities.CardRank.King,
                                                                       PokerEntities.CardRank.Jack,
                                                                       PokerEntities.CardRank.Ten,
                                                                       PokerEntities.CardRank.Six,
                                                                   });
     Assert.AreEqual(expected, testHand.Cards.Flush());
 }
コード例 #5
0
 public void SingleStraightFlushHandWinsGame()
 {
     var expected = new PokerEntities.Hand(
         new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Jack),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Queen),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.King),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ace),
             });
     var fourOfAKindHand = new PokerEntities.Hand(new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ace),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ten),
             });
     var fullHouseHand = new PokerEntities.Hand(new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Nine),
             });
     var flushHand = new PokerEntities.Hand(new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Jack),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Six),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.King),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ace),
             });
     var straightHand = new PokerEntities.Hand(new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Jack),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Queen),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.King),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Ace),
             });
     var threeOfAKindHand = new PokerEntities.Hand(new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ace),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.King),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ten),
             });
     var twoPairHand = new PokerEntities.Hand(
         new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Eight),
             });
     var onePairHand = new PokerEntities.Hand(new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Seven),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Eight),
             });
     var highCardHand= new PokerEntities.Hand(new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Seven),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Two),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Eight),
             });
     var asserted =
         new List<PokerEntities.Hand>
             {
                 expected,
                 fourOfAKindHand,
                 fullHouseHand,
                 flushHand,
                 straightHand,
                 threeOfAKindHand,
                 twoPairHand,
                 onePairHand,
                 highCardHand
             }.CalculatePoker();
     Assert.AreEqual(1, asserted.Count);
     Assert.AreEqual(expected, asserted.First());
 }
コード例 #6
0
 public void TwoStraightsShareGameWin()
 {
     var straightHandOne = new PokerEntities.Hand(new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Jack),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Queen),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.King),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Ace),
             });
     var straightHandTwo = new PokerEntities.Hand(new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Jack),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Queen),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.King),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ace),
             });
     var threeOfAKindHand = new PokerEntities.Hand(new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ace),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.King),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ten),
             });
     var twoPairHand = new PokerEntities.Hand(
         new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Eight),
             });
     var onePairHand = new PokerEntities.Hand(new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Seven),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Eight),
             });
     var highCardHand = new PokerEntities.Hand(new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Seven),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Two),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Eight),
             });
     var asserted =
         new List<PokerEntities.Hand>
             {
                 //flipped around the natural order to demonstrate no dependency on input list order
                 threeOfAKindHand,
                 twoPairHand,
                 straightHandOne,
                 onePairHand,
                 straightHandTwo,
                 highCardHand
             }.CalculatePoker();
     Assert.AreEqual(2, asserted.Count);
     Assert.Contains(straightHandOne, asserted);
     Assert.Contains(straightHandTwo, asserted);
 }
コード例 #7
0
        public void TestDeal()
        {
            var twoPairHand = new PokerEntities.Hand(new List<PokerEntities.Card>
                    {
                        new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Nine),
                        new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Nine),
                        new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                        new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Ten),
                        new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Eight),
                    });
            var onePairHand = new PokerEntities.Hand(new List<PokerEntities.Card>
                    {
                        new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Seven),
                        new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Nine),
                        new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                        new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Ten),
                        new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Eight),
                    });
            var highCardHand = new PokerEntities.Hand(new List<PokerEntities.Card>
                    {
                        new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Seven),
                        new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Nine),
                        new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                        new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Two),
                        new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Eight),
                    });

            //notice we don't shuffle the deck here, and the dealing is non-regular
            // i.e. we give one player all his cards, the we give next player all his, and so on..
            var theDeck = twoPairHand.Cards.Concat(onePairHand.Cards.Concat(highCardHand.Cards));

            var dealtCards = PokerFunctions.Deal(theDeck.ToList(), 3);

            Assert.AreEqual(twoPairHand, dealtCards[0]);
            Assert.AreEqual(onePairHand,dealtCards[1]);
            Assert.AreEqual(highCardHand, dealtCards[2]);
        }
コード例 #8
0
 public void TwoPairIsNotPair()
 {
     var testHand = new PokerEntities.Hand(
         new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Jack),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Jack),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Six),
             });
     var expected = new ReturnTypes.OnePairReturn(false, null, null, null, null);
     Assert.AreEqual(expected, testHand.Cards.OnePair());
 }
コード例 #9
0
 public void TwoPair()
 {
     var testHand = new PokerEntities.Hand(
         new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Eight),
             });
     var expected = new ReturnTypes.TwoPairReturn(true, PokerEntities.CardRank.Ten, PokerEntities.CardRank.Nine, PokerEntities.CardRank.Eight);
     Assert.AreEqual(expected, testHand.Cards.TwoPair());
 }
コード例 #10
0
 public void TwoAceNoStraight()
 {
     var testHand = new PokerEntities.Hand(
         new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Two),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Four),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Three),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Ace),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ace),
             });
     var expected = new ReturnTypes.StraightReturn(false, null);
     Assert.AreEqual(expected, testHand.Cards.Straight());
 }
コード例 #11
0
 public void StraightFlushIsNoFlush()
 {
     var testHand = new PokerEntities.Hand(
         new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Jack),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Queen),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.King),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ace),
             });
     var expected = new ReturnTypes.FlushReturn(false, null);
     Assert.AreEqual(expected, testHand.Cards.Flush());
 }
コード例 #12
0
 public void StraightFlush()
 {
     var testHand = new PokerEntities.Hand(
         new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Queen),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Jack),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Eight),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Nine),
             });
     var expected = new ReturnTypes.StraightFlushReturn(true, PokerEntities.CardRank.Queen);
     Assert.AreEqual(expected, testHand.Cards.StraightFlush());
 }
コード例 #13
0
 public void Straight()
 {
     var testHand = new PokerEntities.Hand(
         new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Jack),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Queen),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.King),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Ace),
             });
     var expected = new ReturnTypes.StraightReturn(true, PokerEntities.CardRank.Ace);
     Assert.AreEqual(expected, testHand.Cards.Straight());
 }
コード例 #14
0
 public void NoFullHouse()
 {
     var testHand = new PokerEntities.Hand(
         new List<PokerEntities.Card>
             {
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Clubs, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Spades, PokerEntities.CardRank.Ten),
                 new PokerEntities.Card(PokerEntities.CardSuit.Diamonds, PokerEntities.CardRank.Nine),
                 new PokerEntities.Card(PokerEntities.CardSuit.Hearts, PokerEntities.CardRank.Ace),
             });
     var expected = new ReturnTypes.FullHouseReturn(false, null, null);
     Assert.AreEqual(expected, testHand.Cards.FullHouse());
 }