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