public void WhenIRepayOn_WithForCommissionWithForPenaltiesWithForInterest(string amountString, string dateString, string commissionString, string penaltyString, string interestString) { var amount = Convert.ToDecimal(amountString, _cultureInfo); var date = DateTime.Parse(dateString, _cultureInfo, DateTimeStyles.AssumeLocal); var commission = Convert.ToDecimal(commissionString, _cultureInfo); var penalty = Convert.ToDecimal(penaltyString, _cultureInfo); var interest = Convert.ToDecimal(interestString, _cultureInfo); var re = new RepaymentService { Settings = new RepaymentSettings { Loan = _loan, Amount = amount, Date = date, Commission = commission, Penalty = penalty, Interest = interest, Principal = amount - commission - penalty - interest, ScriptName = "1_NormalRepayment.py" } }; _loan = re.Repay(); }
public RepaymentServiceShould() { _lenderFileParserMock = new Mock <ILenderFileParser>(); _interestCalculatorMock = new Mock <IInterestCalculator>(); _repaymentCalculatorMock = new Mock <IRepaymentCalculator>(); var lenders = new[] { new Lender(1000, 1.0m) }; _lenderFileParserMock.Setup(parser => parser.GetLenders(_fileName)).Returns(lenders); _repaymentService = new RepaymentService(_lenderFileParserMock.Object, _interestCalculatorMock.Object, _repaymentCalculatorMock.Object); }
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_ComputeTotalRateOfRepayment_Given_Lent_100() { _lenderData[0].AmountLent = 100; _lenderData[1].AmountLent = 100; _lenderData[2].AmountLent = 100; IRepayment repaymentService = new RepaymentService(_lowLoanLender); var rate = repaymentService.ComputeTotalRateOfRepayment(_lenderData); Assert.AreEqual(rate, 3.53); }
public void Test_ComputeTotalRepaymentAmount_Given_Lent_100() { _lenderData[0].AmountLent = 100; _lenderData[1].AmountLent = 100; _lenderData[2].AmountLent = 100; IRepayment repaymentService = new RepaymentService(_lowLoanLender); var repayable = (decimal)repaymentService.RoundToTheNearest((double)repaymentService.ComputeTotalRepaymentAmount(_lenderData), 2); Assert.AreEqual(repayable, (decimal)310.6); }
public void Test_ComputeMonthlyRepaymentAmount_Given_Lent_100_repayable_18_months() { _lenderData[0].AmountLent = 100; _lenderData[1].AmountLent = 100; _lenderData[2].AmountLent = 100; IRepayment repaymentService = new RepaymentService(_lowLoanLender); var monthlyRepayments = (decimal)repaymentService.RoundToTheNearest((double)repaymentService.ComputeMonthlyRepaymentAmount(_lenderData, 18), 2); Assert.AreEqual(monthlyRepayments, (decimal)17.26); }
public ReceiptController() { _groupService = new GroupService(); _referenceValueService = new ReferenceValueService(); _panchayatService = new PanchayatService(); _bankService = new BankService(); _groupReceiptService = new GroupReceiptService(); _ClusterService = new ClusterService(); _villageService = new VillageService(); _employeeService = new EmployeeService(); _accountheadService = new AccountHeadService(); _repaymentService = new RepaymentService(); }
public MemberReceiptController() { _groupService = new GroupService(); _referenceValueService = new ReferenceValueService(); _bankService = new BankService(); _groupReceiptService = new GroupReceiptService(); _employeeService = new EmployeeService(); _memberservice = new MemberService(); _memberReceiptService = new MemberReceiptService(); _repaymentService = new RepaymentService(); _accountheadService = new AccountHeadService(); _ContraEntryService = new ContraEntryService(); }
public void Test_RoundToTheNearest() { IRepayment repaymentService = new RepaymentService(_lowLoanLender); double number1 = 383.6789; double number2 = 575.235764; double number3 = 4765.235764; number1 = repaymentService.RoundToTheNearest(number1, 1); number2 = repaymentService.RoundToTheNearest(number2, 3); number3 = repaymentService.RoundToTheNearest(number3, 2); Assert.AreEqual(number1, 383.7); Assert.AreEqual(number2, 575.236); Assert.AreEqual(number3, 4765.24); }
public void WhenIRepayOn_(string amountString, string dateString) { var date = DateTime.Parse(dateString, _cultureInfo, DateTimeStyles.AssumeLocal); var amount = Convert.ToDecimal(amountString, _cultureInfo); var re = new RepaymentService { Settings = new RepaymentSettings { Loan = _loan, Amount = amount, AmountChanged = true, Date = date, } }; _loan = re.Repay(); }
public void Test_ComputeAmountRepayable_Given_Lent_100() { _lenderData[0].AmountLent = 100; _lenderData[1].AmountLent = 100; _lenderData[2].AmountLent = 100; IRepayment repaymentJobeBlogs = new RepaymentService(_lowLoanLender); IRepayment repaymentMartinOkello = new RepaymentService(_lowLoanLender); IRepayment repaymentJoshuaLent = new RepaymentService(_lowLoanLender); var repayableJB = (decimal)repaymentJobeBlogs.RoundToTheNearest((double)repaymentJobeBlogs.ComputeAmountRepayable(_lenderData[0]), 2); var repayableMO = (decimal)repaymentMartinOkello.RoundToTheNearest((double)repaymentMartinOkello.ComputeAmountRepayable(_lenderData[1]), 2); var repayableJL = (decimal)repaymentJoshuaLent.RoundToTheNearest((double)repaymentJoshuaLent.ComputeAmountRepayable(_lenderData[2]), 2); Assert.AreEqual(repayableJB, (decimal)105.2); Assert.AreEqual(repayableMO, (decimal)102.2); Assert.AreEqual(repayableJL, (decimal)103.2); }