public void TestMultipleLoanCalculation() { MarketRate rate = new MarketRate { AmountAvailable = 1000, Lender = "Alice", Rate = (float)0.07 }; MarketRate rate1 = new MarketRate { AmountAvailable = 1000, Lender = "Bob", Rate = (float)0.07 }; MarketRate rate2 = new MarketRate { AmountAvailable = 1000, Lender = "Charlie", Rate = (float)0.07 }; List <MarketRate> rates = new List <MarketRate>(); rates.Add(rate); rates.Add(rate1); rates.Add(rate2); LoanAggregator agg = new LoanAggregator(); agg.FindLoans(rates, 3000, 36); Assert.AreEqual(true, agg.IsLoanPossible); Assert.AreEqual(3000, agg.LoanAmount, "LoanAmount check failed"); Assert.AreEqual("92.63", agg.Monthly, "MonthlyPayments check failed"); Assert.AreEqual("3,334.70", agg.Total, "TotalRepayment check failed"); Assert.AreEqual((float)0.07, agg.Rate, "Rate check failed"); }
static void Main(string[] args) { // Parse command line string marketFile = ""; int loanAmount = 0; const int loanDuration = 36; // Not parameterised for the purposes of this test if (!parseCommandLine(args, ref marketFile, ref loanAmount)) { Console.WriteLine("Usage: zopa <location of market rate file> <requested loan amount>"); return; } Console.WriteLine("Processing market file " + marketFile + " for a loan of " + loanAmount.ToString()); // Process market file MarketRateCsvParser parser = new MarketRateCsvParser(); List <MarketRate> marketRates; StreamReader marketStream = new System.IO.StreamReader(marketFile); marketRates = parser.Parse(marketStream); // Pass this to the loan aggregator to compute the loans LoanAggregator loanAgg = new LoanAggregator(); loanAgg.FindLoans(marketRates, loanAmount, loanDuration); // Finally, output the results Console.WriteLine("Requested Amount: " + loanAgg.LoanAmount.ToString("c2")); Console.WriteLine("Rate: " + (loanAgg.Rate * 100).ToString("n1") + "%"); Console.WriteLine("Monthly Repayment: " + loanAgg.MonthlyPayments.ToString("c2")); Console.WriteLine("Total Replayment: " + loanAgg.TotalRepayment.ToString("c2")); }
public void TestMixedRateChosen() { MarketRate rate = new MarketRate { AmountAvailable = 100, Lender = "Bob", Rate = (float)0.07 }; List <MarketRate> rates = new List <MarketRate>(); rates.Add(rate); LoanAggregator agg = new LoanAggregator(); agg.FindLoans(rates, 50, 36); Assert.AreEqual(true, agg.IsLoanPossible); }
public void TestInsufficientLoans() { MarketRate rate = new MarketRate { AmountAvailable = 100, Lender = "Bob", Rate = (float)0.07 }; List <MarketRate> rates = new List <MarketRate>(); rates.Add(rate); LoanAggregator agg = new LoanAggregator(); agg.FindLoans(rates, 1000, 36); Assert.AreEqual(false, agg.IsLoanPossible); }
public void TestMultipleLoadsPossible() { MarketRate rate1 = new MarketRate { AmountAvailable = 100, Lender = "Bob", Rate = (float)0.07 }; MarketRate rate2 = new MarketRate { AmountAvailable = 100, Lender = "Alice", Rate = (float)0.06 }; List <MarketRate> rates = new List <MarketRate>(); rates.Add(rate1); rates.Add(rate2); LoanAggregator agg = new LoanAggregator(); agg.FindLoans(rates, 50, 36); Assert.AreEqual(true, agg.IsLoanPossible); }
public void TestSingleLoanCalculation() { MarketRate rate = new MarketRate { AmountAvailable = 1000, Lender = "Alice", Rate = (float)0.07 }; List <MarketRate> rates = new List <MarketRate>(); rates.Add(rate); LoanAggregator agg = new LoanAggregator(); agg.FindLoans(rates, 1000, 36); Assert.AreEqual(true, agg.IsLoanPossible); Assert.AreEqual(1000, agg.LoanAmount, "LoanAmount check failed"); Assert.AreEqual("30.88", agg.Monthly, "MonthlyPayments check failed"); Assert.AreEqual("1,111.57", agg.Total, "TotalRepayment check failed"); }