public void FourSevensAndTwo() { // ARRANGE var fourAces = FourAcesAndANine().Cards.Where( c => Rank.ACE == c.Rank); var fourSevens = fourAces.Select( c => new Card(Rank.SEVEN, c.Suit)).ToArray(); var game = new Game( fourSevens[0], fourSevens[1], fourSevens[2], fourSevens[3], CardBuilder.Two().Clubs()); // ACT var result = new FourOfAKind().Evaluate(game); // ASSERT Assert.IsTrue(result.Success()); CollectionAssert.AreEquivalent(fourSevens.ToList(), result.UsedCards.ToList()); }
public void FivesFullOfQueens() { var acesFullOfKings = AcesFullOfKingsGame(); // ARRANGE var aces = acesFullOfKings.Cards.Where( c => Rank.ACE == c.Rank); var kings = acesFullOfKings.Cards.Where( c => Rank.KING == c.Rank); var fives = aces.Select( c => new Card(Rank.FIVE, c.Suit)).ToArray(); var queens = kings.Select( c => new Card(Rank.QUEEN, c.Suit)).ToArray(); var game = new Game( fives[0], queens[0], fives[1], queens[1], fives[2]); // ACT var result = new FullHouse().Evaluate(game); // ASSERT Assert.IsTrue(result.Success()); Assert.AreSame(game.Cards, result.UsedCards); }
public void Evaluate(Game game) { chain.Evaluate(game); if (game.Category == null) { throw new ApplicationException("game evaluation failed: no game category found for such game"); } }
public void WrapAround() { // ARRANGE var game = new Game( CardBuilder.King().Hearths(), CardBuilder.Ace().Hearths(), CardBuilder.Two().Hearths(), CardBuilder.Three().Hearths(), CardBuilder.Four().Hearths()); // ACT var result = new StraightFlush().Evaluate(game); // ASSERT Assert.IsFalse(result.Success()); }
public void NoHearthsFlushByOneCard() { // ARRANGE var cards = Helper.HearthsFlush().Cards.ToArray(); var game = new Game( cards[0], cards[1], cards[2], cards[3], new Card(cards[4].Rank, Suit.CLUBS)); // ACT var result = new Flush().Evaluate(game); // ASSERT Assert.IsFalse(result.Success()); }
public void TwoToSix() { // ARRANGE var cards = StraightFlushGameBuilder.Spades() .From(Rank.TWO).To(Rank.SIX).Cards.ToArray(); var game = new Game( cards[0], cards[1], cards[2], cards[3], new Card(cards[4].Rank, Suit.CLUBS)); // ACT var result = new Straight().Evaluate(game); // ASSERT Assert.IsTrue(result.Success()); Assert.AreSame(game.Cards, result.UsedCards); }
public void FiveToNine() { // ARRANGE var cards = StraightFlushGameBuilder.Diamonds() .From(Rank.FIVE).To(Rank.NINE).Cards.ToArray(); var game = new Game( cards[0], cards[1], cards[2], cards[3], new Card(cards[4].Rank, Suit.CLUBS)); // ACT var result = new Straight().Evaluate(game); // ASSERT Assert.IsTrue(result.Success()); Assert.AreSame(game.Cards, result.UsedCards); }
public static GameBuilder Game(Game hand) { return new GameBuilder(hand); }
public GameBuilder(Game hand) { this.hand = hand; }