public void deck_has_duplicate_cards()
        {
            IDeck d = new Deck();
            bool  hasDuplicateBefore = d.HasDuplicateCards();
            ICard duplicate          = d.PeekCard(42).Clone();

            d.AddCardToEnd(duplicate);
            bool hasDuplicateAfter = d.HasDuplicateCards();

            Assert.IsFalse(hasDuplicateBefore);
            Assert.IsTrue(hasDuplicateAfter);
        }
        public void deal_until_deck_is_empty_returns_all_cards_without_duplication()
        {
            IDeck freshDeck = new Deck();
            IDeck testDeck  = new Deck(true);
            ICard card;

            do
            {
                try
                {
                    card = freshDeck.DealTopCard();
                    testDeck.AddCardToEnd(card);
                }
                catch (DeckException ex)
                {
                    card = null;
                }
            } while (card != null);
            Assert.IsFalse(freshDeck.HasDuplicateCards(), "The initial deck must have no duplicates");
            Assert.IsFalse(testDeck.HasDuplicateCards(), "Duplicate cards found");
        }