public void TestCloneDeck()
        {
            //completeDeck
            DeckOfCards deck       = new DeckOfCards();
            DeckOfCards clonedDeck = deck.CloneDeck();

            //Check that the cloneDeck is a different reference to private field DeckOfCards.cardDeck
            PrivateObject pObj = new PrivateObject(deck);
            List <Card>   useToCheckCloneMakesADifferentReference = (List <Card>)pObj.GetField("cardDeck");

            Assert.IsFalse(Object.ReferenceEquals(useToCheckCloneMakesADifferentReference, clonedDeck));

            //Check values of cards in the clonedDeck are the same as in the DeckOfCards.cardDeck
            IEnumerable <Tuple <Card, Card> > tupledEnumerator = MultipleIterate.Over(clonedDeck.GetCardEnumerator(), deck.GetCardEnumerator());

            foreach (var decksTuple in tupledEnumerator)
            {
                Assert.AreEqual(decksTuple.Item1, decksTuple.Item2);
                Assert.IsFalse(Object.ReferenceEquals(decksTuple.Item1, decksTuple.Item2));
            }
        }
        public void TestSetDeck()
        {
            DeckOfCards deck  = new DeckOfCards();
            List <Card> cards = new List <Card>();

            Card[] threeCards = { new Card(Suit.Spades, FaceValue.Two),
                                  new Card(Suit.Spades, FaceValue.Three),
                                  new Card(Suit.Spades, FaceValue.Four) };

            cards.Add(new Card(Suit.Spades, FaceValue.Two));
            cards.Add(new Card(Suit.Spades, FaceValue.Three));
            cards.Add(new Card(Suit.Spades, FaceValue.Four));

            deck.SetDeck(cards);
            IEnumerable <Tuple <Card, Card> > deckAndTestCardListMultpleEnumerator =
                MultipleIterate.Over(deck.GetCardEnumerator(), threeCards);

            foreach (var decksTuple in deckAndTestCardListMultpleEnumerator)
            {
                Assert.AreEqual(decksTuple.Item1, decksTuple.Item2);
            }
        }