Beispiel #1
0
        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");
        }
Beispiel #2
0
        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"));
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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");
        }