public void ThreeOfAKind_ReturnsAppropriateValue_TieBreaker() { var mockLeft = new Mock <IHand>(); mockLeft.SetupGet(p => p.Cards).Returns(CardSequences.ThreeOfAKindHigher); var mockRight = new Mock <IHand>(); mockRight.SetupGet(p => p.Cards).Returns(CardSequences.ThreeOfAKindLower); var mockLower = new Mock <IHand>(); mockLower.SetupGet(p => p.Cards).Returns(CardSequences.ThreeOfAKindKickerLower); var left = new ThreeOfAKindHand(mockLeft.Object); var right = new ThreeOfAKindHand(mockRight.Object); var lowerKicker = new ThreeOfAKindHand(mockLower.Object); Assert.Equal(1, left.CompareTo(right)); Assert.Equal(1, left.CompareTo(lowerKicker)); Assert.Equal(0, right.CompareTo(right)); Assert.Equal(-1, lowerKicker.CompareTo(left)); Assert.Equal(-1, right.CompareTo(left)); }
/// <summary> /// Gets the three cards that create the Three of a Kind, from the provided hand. /// </summary> /// <param name="hand">The hand from which to get the high card, presumes this hand is of type <see cref="ThreeOfAKindHand"/>.</param> /// <returns></returns> internal static Card[] GetThreesom(Hand hand) { ThreeOfAKindHand realHand = (ThreeOfAKindHand)hand; return(realHand.Take(3).ToArray()); }