public void TestCase3()
        {
            var card1 = new Card("mastercard", 100);
            var card2 = new Card("mastercard", 100);

            var wallet1 = new Wallet(new [] { card1, card2 });

            var person1 = new Person("person1", new [] { wallet1 });

            var card3 = new Card("visa", 100);
            var card4 = new Card("mastercard", 100);

            var wallet2 = new Wallet(new [] { card3, card4 });

            var person2 = new Person("person2", new [] { wallet2 });

            var calculator = new StandardInterestCalculator();
            var result1    = calculator.CalculateInterest(person1, mockCardIssuers);
            var result2    = calculator.CalculateInterest(person2, mockCardIssuers);

            Assert.AreEqual(result1.PersonInterest, 10);

            Assert.AreEqual(result1.WalletInterest[wallet1], 10);

            Assert.AreEqual(result1.CardInterest[card1], 5);
            Assert.AreEqual(result1.CardInterest[card2], 5);

            Assert.AreEqual(result2.PersonInterest, 15);

            Assert.AreEqual(result2.WalletInterest[wallet2], 15);

            Assert.AreEqual(result2.CardInterest[card3], 10);
            Assert.AreEqual(result2.CardInterest[card4], 5);
        }
        public void TestCase2()
        {
            var card1 = new Card("visa", 100);
            var card2 = new Card("discover", 100);

            var wallet1 = new Wallet(new [] { card1, card2 });

            var card3 = new Card("mastercard", 100);

            var wallet2 = new Wallet(new [] { card3 });

            var person = new Person("person", new [] { wallet1, wallet2 });

            var calculator = new StandardInterestCalculator();
            var result     = calculator.CalculateInterest(person, mockCardIssuers);

            Assert.AreEqual(result.PersonInterest, 16);

            Assert.AreEqual(result.WalletInterest[wallet1], 11);
            Assert.AreEqual(result.WalletInterest[wallet2], 5);

            Assert.AreEqual(result.CardInterest[card1], 10);
            Assert.AreEqual(result.CardInterest[card2], 1);
            Assert.AreEqual(result.CardInterest[card3], 5);
        }