public void Test_ComputeZopaLoanPool() { var zopaLoanPoolService = new ZopaLoanPoolService(_lenderData); var totalLoanAvailable = zopaLoanPoolService.ComputeZopaLoanPool(); Assert.AreEqual(totalLoanAvailable, 1030); }
public void Test_CanZopaFulFillLoan_Given_Loan_Is_1400_Can_not_Fullfill() { var zopaLoanPoolService = new ZopaLoanPoolService(_lenderData); var loanRequest = 1400; var isSatisfiable = zopaLoanPoolService.CanZopaFulFillLoan(loanRequest); Assert.IsFalse(isSatisfiable); }
static void Main(string[] args) { try { IZopaPrintAndIO zopaPrintAndIOService = new ZopaPrintAndIOService(); IList <LenderData> lenderData = zopaPrintAndIOService.ReadCvsFile("market_data.txt"); /* * new List<LenderData> * { * new LenderData {Available = 150, Lender = "Joe Blogs", Rate = (float) 0.052}, * new LenderData {Available = 230, Lender = "Martin Okello", Rate = (float) 0.022}, * new LenderData {Available = 650, Lender = "Joshua Lent", Rate = (float) 0.032} * };*/ decimal loanAmountRequest = 1010;//decimal.Parse(args[1]); var monthsDurationOfPayment = 36; if (args.Length > 0) { lenderData = zopaPrintAndIOService.ReadCvsFile(args[0]); loanAmountRequest = decimal.Parse(args[1]); } IZopaLoanPool zopaLoanService = new ZopaLoanPoolService(lenderData); var canZopaSatisfy = zopaLoanService.CanZopaFulFillLoan(loanAmountRequest); if (canZopaSatisfy) { ILowLoanLender lowLoanLenderService = new LowLenderService(); var lenderLowLenderSatisiyingList = lowLoanLenderService.GetLenderContributors(loanAmountRequest, lenderData); IRepayment repaymentService = new RepaymentService(lowLoanLenderService); var repaymentAmount = repaymentService.ComputeTotalRepaymentAmount(lenderLowLenderSatisiyingList); var interestRate = repaymentService.ComputeTotalRateOfRepayment(lenderLowLenderSatisiyingList); var monthlyPayments = repaymentService.ComputeMonthlyRepaymentAmount(lenderLowLenderSatisiyingList, monthsDurationOfPayment); zopaPrintAndIOService.PrintLine((decimal)repaymentService.RoundToTheNearest((double)loanAmountRequest, 2), (double)repaymentService.RoundToTheNearest(interestRate, 1), (decimal)repaymentService.RoundToTheNearest((double)monthlyPayments, 2), (decimal)repaymentService.RoundToTheNearest((double)repaymentAmount, 2)); } else { Console.Out.WriteLine(string.Format("Zopa cannot satisfy the loan request for £{0} Pounds", loanAmountRequest)); } } catch (Exception ex) { Console.Out.WriteLine("Your data may be inadequate for the machine. check the Program inputs"); } }
public void Test_CanZopaFulFillLoan_Given_Loan_Is_15001_Or_999_Can_not_Fullfill() { var zopaLoanPoolService = new ZopaLoanPoolService(_lenderData); var loanRequest1 = 15001; var loanRequest2 = 999; var isSatisfiableloan1 = zopaLoanPoolService.CanZopaFulFillLoan(loanRequest1); var isSatisfiableloan2 = zopaLoanPoolService.CanZopaFulFillLoan(loanRequest1); Assert.IsFalse(isSatisfiableloan1 && isSatisfiableloan2); }