public IHandEvaluator Create()
        {
            IHandEvaluator chain = new RoyalFlushEvaluator();

            // TODO: Construct the rest of the chain of responsibility using the many
            // IHandEvaluator instances and return it

            return(chain);
        }
Пример #2
0
        public void ReturnsFailureResultIfHandIsNotBigEnoughToQualifyForAFlush()
        {
            var hand = new Hand();
            var card = new Card(new Ace(), new Diamond());

            hand.Add(card);

            var result = new RoyalFlushEvaluator().Evaluate(hand);

            result.Should().BeOfType <NullRank>();
        }
        public IHandEvaluator Create()
        {
            IHandEvaluator chain = new RoyalFlushEvaluator();

            chain.AttachNext(new StraightFlushEvaluator())
            .AttachNext(new FourOfAKindEvaluator())
            .AttachNext(new FullHouseEvaluator())
            .AttachNext(new FlushEvaluator())
            .AttachNext(new StraightEvaluator())
            .AttachNext(new ThreeOfAKindEvaluator())
            .AttachNext(new TwoPairsEvaluator())
            .AttachNext(new PairEvaluator())
            .AttachNext(new HighCardEvaluator());

            return(chain);
        }
Пример #4
0
        public void ReturnsSuccessIfHandIsRoyalFlush()
        {
            var hand  = new Hand();
            var card1 = new Card(new Ace(), new Diamond());
            var card2 = new Card(new King(), new Diamond());
            var card3 = new Card(new Queen(), new Diamond());
            var card4 = new Card(new Jack(), new Diamond());
            var card5 = new Card(new Ten(), new Diamond());

            hand.Add(card1);
            hand.Add(card2);
            hand.Add(card3);
            hand.Add(card4);
            hand.Add(card5);

            var result = new RoyalFlushEvaluator().Evaluate(hand);

            result.RankedHand.ToString().ShouldBeEquivalentTo("Ad, Kd, Qd, Jd, Td");
        }
Пример #5
0
        public void ReturnsFailureResultIfHandIsFlushButNotARoyalFlush()
        {
            var hand  = new Hand();
            var card1 = new Card(new Ace(), new Diamond());
            var card2 = new Card(new King(), new Diamond());
            var card3 = new Card(new Four(), new Diamond());
            var card4 = new Card(new Three(), new Diamond());
            var card5 = new Card(new Two(), new Diamond());

            hand.Add(card1);
            hand.Add(card2);
            hand.Add(card3);
            hand.Add(card4);
            hand.Add(card5);

            var result = new RoyalFlushEvaluator().Evaluate(hand);

            result.Should().BeOfType <NullRank>();
        }