public void TestCase1() { //Arrange decimal bal = 100m; var visa = new Visa(bal); var mc = new MasterCard(bal); var disc = new Discover(bal); Wallet homersWallet = new Wallet(); homersWallet.AddCard(visa); homersWallet.AddCard(mc); homersWallet.AddCard(disc); Person homer = new Person("Homer J Simpson", new List <Wallet>() { homersWallet }); //Act decimal interestHomer = InterestCalculator.CalculatePersonSimpleInterest(homer); decimal interestVisa = InterestCalculator.CalculateSimpleInterest(visa.CurrentBalance, visa.InterestRate); decimal interestMasterCard = InterestCalculator.CalculateSimpleInterest(mc.CurrentBalance, mc.InterestRate); decimal interestDiscover = InterestCalculator.CalculateSimpleInterest(disc.CurrentBalance, disc.InterestRate); //Assert Assert.Equal(16m, interestHomer); //Total simple interest for the person Assert.Equal(10m, interestVisa); //Simple interest per card Assert.Equal(5m, interestMasterCard); Assert.Equal(1m, interestDiscover); Assert.Equal(interestHomer, interestVisa + interestMasterCard + interestDiscover); //Total should equal the sum of all cards }
public void TwoPersonsOneWalletEach() { var person1 = new Person(); var wallet1 = new Wallet(); wallet1.AddCard(new Visa(100)); wallet1.AddCard(new Mastercard(100)); wallet1.AddCard(new Discover(100)); person1.GiveWallet(wallet1); var person2 = new Person(); var wallet2 = new Wallet(); wallet2.AddCard(new Visa(100)); wallet2.AddCard(new Mastercard(100)); person2.GiveWallet(wallet2); Assert.IsTrue(person1.CalculateSimpleInterest() == 16d); Assert.IsTrue(wallet1.GetSimpleInterest() == 16d); Assert.IsTrue(person2.CalculateSimpleInterest() == 15d); Assert.IsTrue(wallet2.GetSimpleInterest() == 15d); }
public void AddCardToWallet(string name, double interest, double balance) { sut.AddCard(name, interest, balance); cardBuilderMock .Verify(x => x.BuildCreditCard(name, interest, balance), Times.Once); Assert.That(sut.Cards.Contains(cardMock.Object)); }
public void Test1() { Wallet wallet = new Wallet(); Person person = new Person(); wallet.AddCard(visa); wallet.AddCard(mastercard); wallet.AddCard(discover); person.AddWallet(wallet); double personInterest = person.CalculatePersonInterest(); Assert.AreEqual(personInterest, 16); }
public void OnePersonOneWallet() { var person = new Person(); var wallet = new Wallet(); var visaId = wallet.AddCard(new Visa(100)); var masterId = wallet.AddCard(new Mastercard(100)); var discId = wallet.AddCard(new Discover(100)); person.GiveWallet(wallet); Assert.IsTrue(person.CalculateSimpleInterest() == 16d); Assert.IsTrue(wallet.retrieveCard(visaId).GetSimpleInterest() == 10d); Assert.IsTrue(wallet.retrieveCard(masterId).GetSimpleInterest() == 5d); Assert.IsTrue(wallet.retrieveCard(discId).GetSimpleInterest() == 1d); }
public void FirstTest() { var person = new Person("First", "Person"); var wallet = new Wallet(); wallet.AddCard(_visa); wallet.AddCard(_masterCard); wallet.AddCard(_discover); person.AddWallet(wallet); double totalInterest = 0.00; // Sum the total interest per card per wallet. person.Wallets.ForEach(ww => totalInterest += ww.CalculateTotalInterest()); Console.WriteLine($"Total interest for {person.FullName} is {totalInterest.ToString("C")}\n"); var aggregateCardInterest = (_discover.GetMonthlyInterestStatement() + _masterCard.GetMonthlyInterestStatement() + _visa.GetMonthlyInterestStatement()); Assert.IsTrue(totalInterest == aggregateCardInterest); person.Wallets.ForEach(ww => ww.CreditCards.ForEach(cc => { // Testing the expected interest return values per card. switch (cc.CardType) { case CreditCardType.Discover: Assert.AreEqual(cc.GetMonthlyInterestStatement(), _discover.GetMonthlyInterestStatement()); break; case CreditCardType.MasterCard: Assert.AreEqual(cc.GetMonthlyInterestStatement(), _masterCard.GetMonthlyInterestStatement()); break; case CreditCardType.Visa: Assert.AreEqual(cc.GetMonthlyInterestStatement(), _visa.GetMonthlyInterestStatement()); break; } Console.WriteLine($"{cc.CardName} has {cc.GetMonthlyInterestStatement().ToString("C")}\n"); })); }
public void TestCase3() { //Arrange decimal bal = 100m; var visa = new Visa(bal); var mc = new MasterCard(bal); var disc = new Discover(bal); Wallet bartsWallet = new Wallet(); bartsWallet.AddCard(mc); bartsWallet.AddCard(mc); bartsWallet.AddCard(visa); Person bart = new Person("Bart Simpson", new List <Wallet>() { bartsWallet }); Wallet lisasWallet = new Wallet(); lisasWallet.AddCard(visa); lisasWallet.AddCard(mc); Person lisa = new Person("Lisa Simpson", new List <Wallet>() { lisasWallet }); //Act decimal interestBart = InterestCalculator.CalculatePersonSimpleInterest(bart); decimal interestBartsWallet = InterestCalculator.CalculateWalletSimpleInterest(bartsWallet); decimal interestLisa = InterestCalculator.CalculatePersonSimpleInterest(lisa); decimal interestLisasWallet = InterestCalculator.CalculateWalletSimpleInterest(lisasWallet); //Assert Assert.Equal(20m, interestBart); Assert.Equal(15m, interestLisa); Assert.Equal(20m, interestBartsWallet); Assert.Equal(15m, interestLisasWallet); }
public void OnePersonTwoWallets() { var person = new Person(); var wallet1 = new Wallet(); wallet1.AddCard(new Visa(100)); wallet1.AddCard(new Discover(100)); person.GiveWallet(wallet1); var wallet2 = new Wallet(); wallet2.AddCard(new Mastercard(100)); person.GiveWallet(wallet2); Assert.IsTrue(person.CalculateSimpleInterest() == 16d); Assert.IsTrue(wallet1.GetSimpleInterest() == 11d); Assert.IsTrue(wallet2.GetSimpleInterest() == 5d); }
public void Test3() { Wallet wallet1 = new Wallet(); Wallet wallet2 = new Wallet(); Person person1 = new Person(); Person person2 = new Person(); wallet1.AddCard(mastercard); wallet1.AddCard(visa); wallet1.AddCard(discover); wallet2.AddCard(visa); wallet2.AddCard(mastercard); person1.AddWallet(wallet1); person2.AddWallet(wallet2); double person1Interest = person1.CalculatePersonInterest(); double person2Interest = person2.CalculatePersonInterest(); Assert.AreEqual(person1Interest, 16); Assert.AreEqual(person2Interest, 15); }
public void TestCase2() { //Arrange decimal bal = 100m; var visa = new Visa(bal); var mc = new MasterCard(bal); var disc = new Discover(bal); Wallet margesWallet1 = new Wallet(); margesWallet1.AddCard(visa); margesWallet1.AddCard(disc); Wallet margesWallet2 = new Wallet(); margesWallet2.AddCard(mc); Person marge = new Person("Marge Simpson", new List <Wallet>() { margesWallet1, margesWallet2 }); //Act decimal interestMarge = InterestCalculator.CalculatePersonSimpleInterest(marge); decimal interestWallet1 = InterestCalculator.CalculateWalletSimpleInterest(margesWallet1); decimal interestWallet2 = InterestCalculator.CalculateWalletSimpleInterest(margesWallet2); //Assert Assert.Equal(16m, interestMarge); //Total simple interest for the person Assert.Equal(11m, interestWallet1); //Simple interest per wallet Assert.Equal(5m, interestWallet2); Assert.Equal(interestMarge, interestWallet1 + interestWallet2); //Total should equal the sum of all wallets }
public void SecondTest() { var person = new Person("Second", "Person"); var wallet1 = new Wallet(); wallet1.AddCard(_visa); wallet1.AddCard(_discover); person.AddWallet(wallet1); var wallet2 = new Wallet(); wallet2.AddCard(_masterCard); person.AddWallet(wallet2); // Spec: // 1 Person, 2 wallets // Wallet 1 - 1 Visa, 1 Discover // Wallet 2 - 1 MC var totalPersonInterest = (_visa.GetMonthlyInterestStatement() + _discover.GetMonthlyInterestStatement() + _masterCard.GetMonthlyInterestStatement()); Assert.IsTrue(person.CalculateTotalWalletInterest() == totalPersonInterest, $"Total interest of both wallets for this person should be {totalPersonInterest.ToString("C")}"); int walletCount = 0; person.Wallets.ForEach(ww => { walletCount++; // Test total interest per wallet. if (walletCount == 1) { Assert.IsTrue(ww.CalculateTotalInterest() == (_visa.GetMonthlyInterestStatement() + _discover.GetMonthlyInterestStatement()), $"Total interest in wallet 1 should be {(_visa.GetMonthlyInterestStatement() + _discover.GetMonthlyInterestStatement()).ToString("C")}"); } else { Assert.IsTrue(ww.CalculateTotalInterest() == _masterCard.GetMonthlyInterestStatement(), $"Total interest in wallet 2 should be {_masterCard.GetMonthlyInterestStatement().ToString("C")}"); } ww.CreditCards.ForEach(cc => { switch (cc.CardType) { case CreditCardType.Discover: Assert.IsTrue(walletCount == 1, "Making sure the Discover card is in wallet 1"); break; case CreditCardType.MasterCard: Assert.IsTrue(walletCount == 2, "Making sure the MasterCard is in wallet 2"); break; case CreditCardType.Visa: Assert.IsTrue(walletCount == 1, "Making sure the Visa is in wallet 1"); break; } }); } ); }
public void ThirdTest() { var personOne = new Person("Person", "One"); var wallet1 = new Wallet(); /* * Spec says: "person 1 has 1 wallet , with 2 cards MC and visa". * I am interpreting this to be 2 cards MC and 1 card Visa since * the implied Visa count appears to be one though the spec for person * two explicitly states only one wallet and 1 MC and 1 Visa in the wallet. * I would normally ask for clarification, though. */ wallet1.AddCard(_masterCard); wallet1.AddCard(_masterCard); wallet1.AddCard(_visa); personOne.AddWallet(wallet1); var personTwo = new Person("Person", "Two"); var wallet2 = new Wallet(); wallet2.AddCard(_visa); wallet2.AddCard(_masterCard); personTwo.AddWallet(wallet2); List <IPerson> people = new List <IPerson> { personOne, personTwo }; int personCount = 0; foreach (var personItem in people) { personCount++; double totalInterestPerPerson = 0.00; int walletCount = 0; personItem.Wallets.ForEach(ww => { walletCount++; var totalPerWallet = ww.CalculateTotalInterest(); double cardSum = 0.00; if (personCount == 1 && walletCount == 1) { cardSum = (_masterCard.GetMonthlyInterestStatement() * 2) + _visa.GetMonthlyInterestStatement(); } else if (personCount == 2 && walletCount == 1) { cardSum = _masterCard.GetMonthlyInterestStatement() + _visa.GetMonthlyInterestStatement(); } Assert.IsTrue(totalPerWallet == cardSum, $"Total interest in wallet {walletCount} is {cardSum}"); totalInterestPerPerson += totalPerWallet; }); if (personCount == 1) { Assert.IsTrue(totalInterestPerPerson == (_masterCard.GetMonthlyInterestStatement() * 2) + _visa.GetMonthlyInterestStatement(), $"Total interest in wallet {walletCount} is {((_masterCard.GetMonthlyInterestStatement() * 2) + _visa.GetMonthlyInterestStatement()).ToString("C")}"); } else { Assert.IsTrue(totalInterestPerPerson == _masterCard.GetMonthlyInterestStatement() + _visa.GetMonthlyInterestStatement(), $"Total interest in wallet {walletCount} is {(_masterCard.GetMonthlyInterestStatement() + _visa.GetMonthlyInterestStatement()).ToString("C")}"); } } }