コード例 #1
0
        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);
        }
コード例 #2
0
        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");
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }