public void ShouldBuildCardsFromString() { var str = "7C KC 4H QH QD AS TC"; var cards = CardsBuilder.BuildCardsFromString(str); Assert.AreEqual(7, cards.ElementAt(0).Value); Assert.AreEqual(2, cards.ElementAt(0).Color); Assert.AreEqual(13, cards.ElementAt(1).Value); Assert.AreEqual(2, cards.ElementAt(1).Color); Assert.AreEqual(4, cards.ElementAt(2).Value); Assert.AreEqual(1, cards.ElementAt(2).Color); Assert.AreEqual(12, cards.ElementAt(3).Value); Assert.AreEqual(1, cards.ElementAt(3).Color); Assert.AreEqual(12, cards.ElementAt(4).Value); Assert.AreEqual(4, cards.ElementAt(4).Color); Assert.AreEqual(14, cards.ElementAt(5).Value); Assert.AreEqual(3, cards.ElementAt(5).Color); Assert.AreEqual(10, cards.ElementAt(6).Value); Assert.AreEqual(2, cards.ElementAt(6).Color); }
public void ShouldCalculateCorrectPints() { //Arrange var cards = CardsBuilder.CreateHighCardHandCards(); CardsBuilder.CreateFourOfAKindHandCards(); }
public void SameCardsShouldGetTie() { var cards = CardsBuilder.CreateStraightFlushHandCards(); var result = _evaluator.EvaluateCardsWinner(cards, cards); Assert.Equal(GameResult.Tie, result); }
public void ShouldBuildCardsFromAndToStringWithoutAnyLoss() { var str = "7C KC 4H QH QD AS TC"; var cards = CardsBuilder.BuildCardsFromString(str); var newStr = CardsBuilder.BuildStringFromCards(cards); Assert.AreEqual(str, newStr); }
public void FourOfAKindAndHighCardsShouldGetFourOfAKindWins() { var blackCards = CardsBuilder.CreateFourOfAKindHandCards(); var whiteCards = CardsBuilder.CreateHighCardHandCards(); var result = _evaluator.EvaluateCardsWinner(blackCards, whiteCards); Assert.Equal(GameResult.BlackWin, result); }
public void StraightFlushCardAndHighCardsShouldGetStraightFlushWins() { var blackCards = CardsBuilder.CreateStraightFlushHandCards(); var whiteCards = CardsBuilder.CreateHighCardHandCards(); var result = _evaluator.EvaluateCardsWinner(blackCards, whiteCards); Assert.Equal(GameResult.BlackWin, result); }
public void ShouldEvalThreeOfAKindWithLessThan5Cards(string str, string expectedCombination) { var cards = CardsBuilder.BuildCardsFromString(str); var combination = _combinationEvaluator.EvaluateCards(cards); var combinationString = CardsBuilder.BuildStringFromCards(combination.Cards); Assert.AreEqual(CombinationType.ThreeOfAKind, combination.Type); Assert.AreEqual(expectedCombination, combinationString); }
public void ShouldEvalStraight(string str, string expectedCombination) { var cards = CardsBuilder.BuildCardsFromString(str); var combination = _combinationEvaluator.EvaluateCards(cards); var combinationString = CardsBuilder.BuildStringFromCards(combination.Cards); Assert.AreEqual(CombinationType.Straight, combination.Type); Assert.AreEqual(expectedCombination, combinationString); }
public void ShouldValidateSatisfy() { //Arrange var cards = CardsBuilder.CreateStraightFlushHandCards(); //Act var isSatisfied = _typeValidator.IsSatisfied(cards); //Assert Assert.Equal(true, isSatisfied); }
public void ShouldValidateNotSatisfy() { //Arrange var cards = CardsBuilder.CreateHighCardHandCards(); //Act var isSatisfied = _typeValidator.IsSatisfied(cards); //Assert Assert.Equal(false, isSatisfied); }
public void TwoAndThreeShouldBe0() { var str = "2H 3S"; var cards = CardsBuilder.BuildCardsFromString(str).ToList(); var playerHand = new PlayerHand(cards[0], cards[1]); var quality = _qualityEvaluator.EvalQualityScore(playerHand, new List <Card>()); Assert.AreEqual(0, Math.Round(quality, 1)); }
public void QualityQuickTest() { var cards = "2S KH 3H"; var hands = "6H TD"; var playerCards = CardsBuilder.BuildCardsFromString(hands).ToList(); var cardslist = CardsBuilder.BuildCardsFromString(cards).ToList(); var playerHand = new PlayerHand(playerCards[0], playerCards[1]); var quality = _qualityEvaluator.EvalQualityScore(playerHand, new List <Card>()); }
public void ShouldPutAScoreOnEachHand() { var hands = new List <string>(); hands.Add("AH KH QH JH TH 2S 4S"); // RoyalFlush hands.Add("AS KS QS JS TS 8D 7H"); // RoyalFlush hands.Add("QH JH TH 9H 8H AH 7S"); // StraightFlush hands.Add("AS 2S 3S 4S 5S 8D 7H"); // StraightFlush hands.Add("KH KS KD KC 3S 2S 4S"); // FourOfAKind hands.Add("KH KS KD KC 3S 2H 2S"); // FourOfAKind hands.Add("JH JS JD JC 3S 2H 2S"); // FourOfAKind hands.Add("AH AS AD 3C 4S 3H 2S"); // FullHouse hands.Add("AH AS AD 2C 4S 2H 2S"); // FullHouse hands.Add("KH KS KD AC AS 2H 2S"); // FullHouse hands.Add("AD 4D KD 6D 7D 8D 9D"); // Flush hands.Add("4S QS JS TS 9S 5S 2S"); // Flush hands.Add("TH 9D 8C 7C 6C 2S AS"); // Straight hands.Add("9D 8C 7C 6C 5S AS JD"); // Straight hands.Add("AD 2S 3D 4S 5S 8D 7H"); // Straight hands.Add("AS AD AC KS 4C 2C 5H"); // ThreeOfAKind hands.Add("AS AD AC KS 4C 2C 3H"); // ThreeOfAKind hands.Add("AS AD AC QS 4C 2C 3H"); // ThreeOfAKind hands.Add("KS KD KC AS JC TC 3H"); // ThreeOfAKind hands.Add("KS KD QS QD 6H 4H 3H"); // TwoPairs hands.Add("KS KD QS QD 5H 4H 3H"); // TwoPairs hands.Add("KS KD 2S 2D 5H 4H 3H"); // TwoPairs hands.Add("QS QD JS JD 5H 4H 3H"); // TwoPairs hands.Add("QS QD AS TD 5H 4H 3H"); // OnePair hands.Add("QS QD JS KD 5H 4H 3H"); // OnePair hands.Add("JS JD AS KD 5H 4H 3H"); // OnePair hands.Add("AS QD TS KD 5H 4H 3H"); // HighCards hands.Add("AS 7D TS KD 5H 4H 3H"); // HighCards hands.Add("AS 7D 8S KD 5H 4H 3H"); // HighCards hands.Add("AS 7D 8S JD 5H 4H 3H"); // HighCards var results = new Dictionary <string, CardCombination>(); foreach (var hand in hands) { var cards = CardsBuilder.BuildCardsFromString(hand); var combination = _combinationEvaluator.EvaluateCards(cards); results.Add(hand, combination); } var ordererResults = results.OrderByDescending(kvp => kvp.Value.Score).ToList(); for (int i = 0; i < ordererResults.Count; i++) { Assert.AreEqual(hands[i], ordererResults[i].Key, $"{hands[i]} expected but {ordererResults[i].Key} actual"); } }
public void ShouldBuildStringFromCard() { var cards = new List <Card>(); cards.Add(new Card(6, 1)); cards.Add(new Card(14, 3)); cards.Add(new Card(10, 2)); cards.Add(new Card(3, 3)); cards.Add(new Card(12, 2)); cards.Add(new Card(8, 3)); cards.Add(new Card(11, 1)); var str = CardsBuilder.BuildStringFromCards(cards); Assert.AreEqual("6H AS TC 3S QC 8S JH", str); }
private void DrawTable(Table table) { if (table.CurrentGame != null) { Draw($"Cards : {CardsBuilder.BuildStringFromCards(_spinAndGoGame.Table.CurrentGame.Cards.Cards)}"); if (table.CurrentGame.Pots != null && table.CurrentGame.Pots.Count > 0) { foreach (var pot in table.CurrentGame.Pots) { DrawPot(pot); } } else { Draw("Pot : 0"); } } }
public void Statistics_Score_Hands() { int simulationCount = 1000000; var cardCombinations = new List <CardCombination>(); var deck = new Deck(); var cards = new List <Card>(); for (int i = 0; i < simulationCount; i++) { deck.Regroup(); deck.Shuffle(); cards.Clear(); for (int j = 0; j < 7; j++) { cards.Add(deck.Draw()); } var cardCombination = _combinationEvaluator.EvaluateCards(cards); cardCombinations.Add(cardCombination); } cardCombinations = cardCombinations.OrderByDescending(combination => combination.Score).ToList(); var previousCombinationType = (int)CombinationType.RoyalFlush; CardCombination previousCombination = null; foreach (var cardCombination in cardCombinations) { if ((int)cardCombination.Type > previousCombinationType) { var cardsString = CardsBuilder.BuildStringFromCards(cardCombination.Cards); var previousCardsString = CardsBuilder.BuildStringFromCards(cardCombination.Cards); throw new Exception( $"{cardsString} is a {cardCombination.Type} with {cardCombination.Score} that is lower in score than {previousCardsString}-{previousCombination.Type}-{previousCombination.Score}"); } previousCombination = cardCombination; previousCombinationType = (int)cardCombination.Type; } }
public void PlayersWinPots(IList <KeyValuePair <Player, CardCombination> > winners, Pot pot) { if (winners.Count == 1 && winners[0].Value == null) { _eventManager.RaiseEvent($"{winners[0].Key.Name} won {pot.Amount / winners.Count} from the pot because every one else fold"); } else { for (int i = 0; i < winners.Count; i++) { _eventManager.RaiseEvent($"{winners[i].Key.Name} won {pot.Amount / winners.Count} from the pot with a {winners[i].Value.Type} : {CardsBuilder.BuildStringFromCards(winners[i].Value.Cards)}"); } } }
public MemoryGameControl(Game parent, GraphicsDeviceManager graphics) { Parent = parent; _cardsCollection = new CardsCollection(Parent); _mathCardBuilder = new MathCardBuilder <CardDraw, MathCardDraw>(1, 10, (op, num1, num2) => { if (op == Operations.Sub) { int max = Math.Max(num1, num2); int min = Math.Min(num1, num2); num1 = max; num2 = min; } return(new MathCardDraw(Parent, new MathCard(op, num1, num2)) { GameParent = Parent, Parent = _cardsCollection }); }, (result) => new NumCardDraw(Parent, result) { Parent = _cardsCollection }); _cardsBuilder = new CardsBuilder(); _gameEngine = new Engine <CardDraw>(_mathCardBuilder, _cardsBuilder); _cardsBuilder.Engine = _gameEngine; _cardsBuilder.CardsCollection = _cardsCollection; _drawScoreBars = new DrawScoreBars(Parent) { Location = Vector2.Zero, Size = new Vector2() { X = graphics.PreferredBackBufferWidth, Y = graphics.PreferredBackBufferHeight * (1 - BOARD_PART_OF_WINDOW) - margin * 2 }, }; _winnerMessage = new WinnerMessage() { Rect = new Rectangle() { Size = new Vector2(graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight * 1 / 3).ToPoint(), Location = Vector2.Zero.ToPoint() }, Size = new Vector2(graphics.PreferredBackBufferWidth - 100) }; _player1 = new Player() { Name = "Player1" }; _player2 = new Player() { Name = "Player2" }; }
public void QuickTester(string str) { var cards = CardsBuilder.BuildCardsFromString(str); var combination = _combinationEvaluator.EvaluateCards(cards); }