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); }
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); }
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"); }
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>(); }