public void CalculateInterest_TestCase1_calculate_simple_interest_for_card_and_holder()
        {
            var cardHolder = new CreditCardHolder
            {
                Wallets = new List <Wallet>
                {
                    new Wallet
                    {
                        CreditCards = new List <CreditCard>
                        {
                            new VisaCreditCard {
                                Balance = 100
                            },
                            new MasterCardCreditCard {
                                Balance = 100
                            },
                            new DiscoverCreditCard {
                                Balance = 100
                            }
                        }
                    }
                }
            };

            _logic.CalculateInterestForHolder(cardHolder);

            var creditCards = cardHolder.Wallets.First().CreditCards.ToList();

            Assert.Equal(10, creditCards[0].SimpleInterest);             // per card
            Assert.Equal(5, creditCards[1].SimpleInterest);
            Assert.Equal(1, creditCards[2].SimpleInterest);

            Assert.Equal(16, cardHolder.TotalInterest);             // for card holder
        }
        public void CalculateInterest_TestCase3_calculate_simple_interest_for_wallet_and_holder_for_2_card_holders(
            CreditCardHolder cardHolder, double walletInterest, double cardHolderInterest)
        {
            _logic.CalculateInterestForHolder(cardHolder);

            Assert.Equal(walletInterest, cardHolder.Wallets.First().TotalInterest);
            Assert.Equal(cardHolderInterest, cardHolder.TotalInterest);
        }
Пример #3
0
 /// <summary>
 /// Calculate interest for all cards and all wallets of the credit card holder
 /// </summary>
 /// <param name="person">The person to calculate interest for</param>
 public void CalculateInterestForHolder(CreditCardHolder person)
 {
     foreach (Wallet wallet in person.Wallets)
     {
         foreach (CreditCard card in wallet.CreditCards)
         {
             card.InterestRate = _interestRates.First(r => r.Key == card.Type).Value;
             CalculateInterestForCard(card);
             wallet.TotalInterest += card.SimpleInterest;
         }
         person.TotalInterest += wallet.TotalInterest;
     }
 }
Пример #4
0
        static void Main(string[] args)
        {
            ICreditCardInterestLogic interestLogic = new CreditCardInterestLogic();

            var cardHolder1 = new CreditCardHolder
            {
                Wallets = new List <Wallet>
                {
                    new Wallet
                    {
                        CreditCards = new List <CreditCard>
                        {
                            new VisaCreditCard {
                                Balance = 100
                            },
                            new MasterCardCreditCard {
                                Balance = 100
                            },
                            new DiscoverCreditCard {
                                Balance = 100
                            }
                        }
                    }
                }
            };

            interestLogic.CalculateInterestForHolder(cardHolder1);

            Console.WriteLine("\nTEST CASE 1");
            var cards = cardHolder1.Wallets.First().CreditCards.ToList();

            cards.ForEach(c => Console.WriteLine($"Interest for {c.Type} card: {c.SimpleInterest}"));
            Console.WriteLine($"Total interest for card holder: {cardHolder1.TotalInterest}");

            var cardHolder2 = new CreditCardHolder
            {
                Wallets = new List <Wallet>
                {
                    new Wallet
                    {
                        CreditCards = new List <CreditCard>
                        {
                            new VisaCreditCard {
                                Balance = 100
                            },
                            new DiscoverCreditCard {
                                Balance = 100
                            }
                        }
                    },
                    new Wallet
                    {
                        CreditCards = new List <CreditCard>
                        {
                            new MasterCardCreditCard {
                                Balance = 100
                            },
                        }
                    }
                }
            };

            interestLogic.CalculateInterestForHolder(cardHolder2);
            Console.WriteLine("\nTEST CASE 2");
            var case2Wallets = cardHolder2.Wallets.ToList();

            case2Wallets.ForEach(w => Console.WriteLine($"Interest for wallet: {w.TotalInterest}"));
            Console.WriteLine($"Total interest for card holder: {cardHolder2.TotalInterest}");

            var cardHolderGroups3 = new List <CreditCardHolder>
            {
                new CreditCardHolder
                {
                    Wallets = new List <Wallet>
                    {
                        new Wallet
                        {
                            CreditCards = new List <CreditCard>
                            {
                                new MasterCardCreditCard {
                                    Balance = 100
                                },
                                new VisaCreditCard {
                                    Balance = 100
                                }
                            }
                        }
                    }
                },
                new CreditCardHolder
                {
                    Wallets = new List <Wallet>
                    {
                        new Wallet
                        {
                            CreditCards = new List <CreditCard>
                            {
                                new VisaCreditCard {
                                    Balance = 100
                                },
                                new MasterCardCreditCard {
                                    Balance = 100
                                },
                            }
                        }
                    }
                }
            };

            Console.WriteLine("\nTEST CASE 3");
            for (int i = 0; i < cardHolderGroups3.Count; i++)
            {
                interestLogic.CalculateInterestForHolder(cardHolderGroups3[i]);

                var case3Wallets = cardHolderGroups3[i].Wallets.ToList();
                case3Wallets.ForEach(w => Console.WriteLine($"Interest for card holder {i + 1} wallet: {w.TotalInterest}"));
                Console.WriteLine($"Total interest for card holder {i + 1}: {cardHolderGroups3[i].TotalInterest}\n");
            }
        }
 /// <summary>
 /// Instantiate the object and assigns default values of it members
 /// </summary>
 public CreditCardProcessAccessLayer()
 {
     cardHolder = new CreditCardHolder();
 }