public void sort_by_suit_same_rank_descending()
        {
            IDeck        d     = new Deck(true);
            Mock <ICard> card1 = new Mock <ICard>();
            Mock <ICard> card2 = new Mock <ICard>();
            Mock <ICard> card3 = new Mock <ICard>();

            card1.Setup(c => c.rank).Returns(Rank.Seven);
            card2.Setup(c => c.rank).Returns(Rank.Seven);
            card3.Setup(c => c.rank).Returns(Rank.Seven);
            card1.Setup(c => c.suit).Returns(Suit.Hearts);
            card2.Setup(c => c.suit).Returns(Suit.Spades);
            card3.Setup(c => c.suit).Returns(Suit.Clubs);

            d.AddCardToTop(card1.Object);
            d.AddCardToTop(card2.Object);
            d.AddCardToTop(card3.Object);

            d.Sort(true);

            ICard sorted1 = d.PeekCard(0);
            ICard sorted2 = d.PeekCard(1);
            ICard sorted3 = d.PeekCard(2);

            Assert.AreEqual(card2.Object.GetHashCode(), sorted1.GetHashCode());
            Assert.AreEqual(card1.Object.GetHashCode(), sorted2.GetHashCode());
            Assert.AreEqual(card3.Object.GetHashCode(), sorted3.GetHashCode());
        }