Exemplo n.º 1
0
        public void CreateFrom5_ThreeOfAKind_AreEqual()
        {
            var hand = Cards.Parse("[3c,Qs,2s,3h,3d]");

            var act = PokerHand.CreateFrom5(hand);

            Assert.AreEqual("[3h,3c,3d,Qs,2s]", act.ToString());
            Assert.AreEqual(PokerHandType.ThreeOfAKind, act.ScoreType);
        }
Exemplo n.º 2
0
        public void CreateFrom5_Straight_AreEqual()
        {
            var hand = Cards.Parse("[5c,7s,6h,9s,8d]");

            var act = PokerHand.CreateFrom5(hand);

            Assert.AreEqual("[9s,8d,7s,6h,5c]", act.ToString());
            Assert.AreEqual(PokerHandType.Straight, act.ScoreType);
        }
Exemplo n.º 3
0
        public void CreateFrom5_StraightWithAce_AreEqual()
        {
            var hand = Cards.Parse("[Ac,2d,3c,5h,4d]");

            var act = PokerHand.CreateFrom5(hand);

            Assert.AreEqual("[5h,4d,3c,2d,Ac]", act.ToString());
            Assert.AreEqual(PokerHandType.Straight, act.ScoreType);
        }
Exemplo n.º 4
0
        public void CreateFrom5_FullHouse_AreEqual()
        {
            var hand = Cards.Parse("[5s,8d,8h,5d,5h]");

            var act = PokerHand.CreateFrom5(hand);

            Assert.AreEqual("[5s,5h,5d,8h,8d]", act.ToString());
            Assert.AreEqual(PokerHandType.FullHouse, act.ScoreType);
        }
Exemplo n.º 5
0
        public void CreateFrom5_Flush_AreEqual()
        {
            var hand = Cards.Parse("[3s,As,Ts,6s,Qs]");

            var act = PokerHand.CreateFrom5(hand);

            Assert.AreEqual("[As,Qs,Ts,6s,3s]", act.ToString());
            Assert.AreEqual(PokerHandType.Flush, act.ScoreType);
        }
Exemplo n.º 6
0
        public void CreateFrom5_StraightFlush_AreEqual()
        {
            var hand = Cards.Parse("[7c,Jc,8c,Tc,9c]");

            var act = PokerHand.CreateFrom5(hand);

            Assert.AreEqual("[Jc,Tc,9c,8c,7c]", act.ToString());
            Assert.AreEqual(PokerHandType.StraightFlush, act.ScoreType);
        }
Exemplo n.º 7
0
        public void CreateFrom5_FourOfAKind_AreEqual()
        {
            var hand = Cards.Parse("[Ac,6c,6d,6h,6s]");

            var act = PokerHand.CreateFrom5(hand);

            Assert.AreEqual("[6s,6h,6c,6d,Ac]", act.ToString());
            Assert.AreEqual(PokerHandType.FourOfAKind, act.ScoreType);
        }
Exemplo n.º 8
0
        public void CreateFrom5_HighCard_AreEqual()
        {
            var hand = Cards.Parse("[Th,Kh,2c,Qc,Ah]");

            var act = PokerHand.CreateFrom5(hand);

            Assert.AreEqual("[Ah,Kh,Qc,Th,2c]", act.ToString());
            Assert.AreEqual(PokerHandType.HighCard, act.ScoreType);
        }
Exemplo n.º 9
0
        public void CreateFrom5_OnePair_AreEqual()
        {
            var hand = Cards.Parse("[7h,2d,6c,2h,Qh]");

            var act = PokerHand.CreateFrom5(hand);

            Assert.AreEqual("[2h,2d,Qh,7h,6c]", act.ToString());
            Assert.AreEqual(PokerHandType.OnePair, act.ScoreType);
        }
Exemplo n.º 10
0
        public void CreateFrom5_TwoPair_AreEqual()
        {
            var hand = Cards.Parse("[9d,Kc,9h,Ks,Jh]");

            var act = PokerHand.CreateFrom5(hand);

            Assert.AreEqual("[Ks,Kc,9h,9d,Jh]", act.ToString());
            Assert.AreEqual(PokerHandType.TwoPair, act.ScoreType);
        }
Exemplo n.º 11
0
        public void GetScore_Speed_IsDoable()
        {
            var sw0 = new Stopwatch();
            var sw1 = new Stopwatch();

            var runs = 100000;
            var rnd  = new MT19937Generator(17);

            var d = new UInt64Cards(0);

            var uPrev = default(UInt32PokerHand);
            var cPrev = default(PokerHand);
            var uCurr = default(UInt32PokerHand);
            var cCurr = default(PokerHand);

            int uCompare = 0;
            int cCompare = 0;

            Cards old = Cards.Empty;

            for (int i = 0; i < runs; i++)
            {
                var deck = Cards.GetShuffledDeck(rnd);
                var hand = deck.Take(5).ToList();

                sw0.Start();
                var ucards = UInt64Cards.Create(hand);
                uCurr    = ucards.GetScore();
                uCompare = uCurr.CompareTo(uPrev);
                sw0.Stop();


                sw1.Start();
                cCurr    = PokerHand.CreateFrom5(hand);
                cCompare = PokerHandComparer.Instance.Compare(cCurr, cPrev);
                sw1.Stop();


                if (Math.Sign(cCompare) != Math.Sign(uCompare))
                {
                    var log = Cards.Create(hand);
                    Assert.Fail("Old: {0:f}, New: {1:f}", old, log);
                }
                old   = Cards.Create(hand);
                uPrev = uCurr;
                cPrev = cCurr;
            }

            Console.WriteLine("Avarage: {0:#,##0.00} Ticks/hand", (double)sw1.ElapsedTicks / (double)runs);
            Console.WriteLine("Avarage: {0:#,##0.00} Ticks/hand new", (double)sw0.ElapsedTicks / (double)runs);
        }
Exemplo n.º 12
0
        public void CreateFrom5_Speed_IsDoable()
        {
            var stopwatch = new Stopwatch();

            var runs = 100000;
            var rnd  = new MT19937Generator(17);

            for (int i = 0; i < runs; i++)
            {
                var deck = Cards.GetShuffledDeck(rnd);
                var hand = deck.Take(5).ToList();

                stopwatch.Start();
                var score = PokerHand.CreateFrom5(hand);
                stopwatch.Stop();
            }

            Console.WriteLine("Avarage: {0:#,##0.00} Ticks/hand", (double)stopwatch.ElapsedTicks / (double)runs);
        }