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());
            }
Example #2
0
            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);
            }
Example #3
0
 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());
            }
Example #5
0
            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());
            }
Example #6
0
            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);
            }
Example #7
0
            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);
            }
Example #8
0
 public static GameBuilder Game(Game hand)
 {
     return new GameBuilder(hand);
 }
Example #9
0
 public GameBuilder(Game hand)
 {
     this.hand = hand;
 }