public void ThreeOfAKindToFour() { Stopwatch watch = new Stopwatch(); List <Card> cards = new List <Card> { new Card(Rank.Ace, Suit.Hearts), new Card(Rank.Six, Suit.Diamonds), new Card(Rank.Five, Suit.Hearts), new Card(Rank.Six, Suit.Clubs), new Card(Rank.Six, Suit.Spades), new Card(Rank.Queen, Suit.Clubs), }; SixCardHand hand = new SixCardHand(cards); hand.Sort(); watch.Start(); var current = PokerEvaluator.CalculateTurnScore(hand.Cards); var outs = PokerOutsCalculator.CalculateRiverOuts(hand, current); watch.Stop(); Assert.AreEqual(1, outs.FourOfAKind.Outs); Assert.AreEqual(false, outs.FourOfAKind.RunnerRunner); Assert.Greater(200, watch.ElapsedMilliseconds); }
public void OneInsideSFlushHighAce() { Stopwatch watch = new Stopwatch(); List <Card> cards = new List <Card> { new Card(Rank.Ace, Suit.Hearts), new Card(Rank.Queen, Suit.Hearts), new Card(Rank.Five, Suit.Hearts), new Card(Rank.Jack, Suit.Hearts), new Card(Rank.Five, Suit.Hearts), new Card(Rank.Ten, Suit.Hearts), }; SixCardHand hand = new SixCardHand(cards); hand.Sort(); watch.Start(); var score = PokerEvaluator.CalculateFlopScore(hand.Cards); var outs = PokerOutsCalculator.CalculateRiverOuts(hand, score); watch.Stop(); Assert.AreEqual(1, outs.StraightFlush.Outs); Assert.Greater(200, watch.ElapsedMilliseconds); }
public void OneInsideSFlushDrawWithTwoPair() { Stopwatch watch = new Stopwatch(); List <Card> cards = new List <Card> { new Card(Rank.Four, Suit.Spades), new Card(Rank.Four, Suit.Hearts), new Card(Rank.Five, Suit.Hearts), new Card(Rank.Six, Suit.Hearts), new Card(Rank.Eight, Suit.Hearts), new Card(Rank.Six, Suit.Diamonds), }; SixCardHand hand = new SixCardHand(cards); hand.Sort(); watch.Start(); var score = PokerEvaluator.CalculateFlopScore(hand.Cards); var outs = PokerOutsCalculator.CalculateRiverOuts(hand, score); watch.Stop(); Assert.AreEqual(1, outs.StraightFlush.Outs); Assert.Greater(200, watch.ElapsedMilliseconds); }
public void OneInsideStraightDrawWithHighAceWithTwoPair() { Stopwatch watch = new Stopwatch(); List <Card> cards = new List <Card> { new Card(Rank.Queen, Suit.Diamonds), new Card(Rank.King, Suit.Hearts), new Card(Rank.Ten, Suit.Clubs), new Card(Rank.Queen, Suit.Spades), new Card(Rank.King, Suit.Hearts), new Card(Rank.Ace, Suit.Diamonds), }; SixCardHand hand = new SixCardHand(cards); hand.Sort(); watch.Start(); var score = PokerEvaluator.CalculateFlopScore(hand.Cards); var outs = PokerOutsCalculator.CalculateRiverOuts(hand, score); watch.Stop(); Assert.AreEqual(4, outs.Straight.Outs); Assert.Greater(200, watch.ElapsedMilliseconds); }
public void OneOutsideRFlushWithTwoPair() { Stopwatch watch = new Stopwatch(); List <Card> cards = new List <Card> { new Card(Rank.Ten, Suit.Hearts), new Card(Rank.Jack, Suit.Hearts), new Card(Rank.Queen, Suit.Hearts), new Card(Rank.King, Suit.Hearts), new Card(Rank.Jack, Suit.Clubs), new Card(Rank.Queen, Suit.Diamonds), }; SixCardHand hand = new SixCardHand(cards); hand.Sort(); watch.Start(); var score = PokerEvaluator.CalculateFlopScore(hand.Cards); var outs = PokerOutsCalculator.CalculateRiverOuts(hand, score); watch.Stop(); Assert.AreEqual(1, outs.RoyalFlush.Outs); Assert.Greater(250, watch.ElapsedMilliseconds); }
private void HandleTurn() { try { GameState = PokerGameState.Turn; ClearOutsEvent?.Invoke(); PokerScore = PokerEvaluator.CalculateTurnScore(CurrentRound.AllCards.Values.ToList().GetRange(0, 6)); Outs = PokerOutsCalculator.CalculateRiverOuts( new SixCardHand(CurrentRound.AllCards.Values.ToList().GetRange(0, 6)), PokerScore); UpdateOutsEvent?.Invoke(Outs); UpdateCurrentScoreEvent?.Invoke(PokerScore); UpdateBestPossibleEvent?.Invoke(Outs.BestScore()); UpdateBestChanceEvent?.Invoke(Outs.BestPossible()); UpdateOutsToBestEvent?.Invoke(Outs.BestPossible()); } catch (Exception e) { Log.Error(e.Message); Log.Error(e.StackTrace); } }