Ejemplo n.º 1
0
        public void Test_GenerateDebtRepaymentPlan_ExtraPaymentLoan_MinimumPaymentRollover()
        {
            var loans = new Loan[] {
                new Loan()
                {
                    AccruedInterest       = 0,
                    PrincipalBalance      = 275m,
                    InterestRate          = 0.0m,
                    MinimumMonthlyPayment = 25m,
                    Name = "a"
                },
                new Loan()
                {
                    AccruedInterest       = 0,
                    PrincipalBalance      = 100m,
                    InterestRate          = 0.0m,
                    MinimumMonthlyPayment = 25m,
                    Name = "b"
                }
            };
            var startDate = new DateTime(2020, 1, 1);
            var salary    = new Salary();

            var model   = new Person(loans, 25, salary);
            var service = new DebtCalendar(model);
            var result  = service.GenerateDebtRepaymentPlan(startDate);

            Assert.AreEqual(startDate.AddMonths(4), result.Last().Month);
        }
Ejemplo n.º 2
0
        public void Test_GenerateDebtRepaymentPlan_ApplyRaise()
        {
            var loans = new Loan[] {
                new Loan()
                {
                    AccruedInterest       = 0,
                    PrincipalBalance      = 300,
                    InterestRate          = 0.0m,
                    MinimumMonthlyPayment = 25m,
                    Name = "a"
                }
            };

            var startDate = new DateTime(2020, 1, 1);

            var salary = new Salary()
            {
                AnnualAmount               = 100m,
                AnnualRaiseMonth           = 4,
                AnnualRaisePercent         = 0.25m,
                PercentOfRaiseForRepayment = 1m
            };

            var model   = new Person(loans, 25, salary);
            var service = new DebtCalendar(model);
            var result  = service.GenerateDebtRepaymentPlan(startDate);

            Assert.AreEqual(startDate.AddMonths(5), result.Last().Month);
        }
Ejemplo n.º 3
0
        public void Test_GenerateDebtRepaymentPlan_Decisions()
        {
            var loans = new Loan[] {
                new Loan()
                {
                    AccruedInterest       = 0,
                    PrincipalBalance      = 100,
                    InterestRate          = 0.0m,
                    MinimumMonthlyPayment = 25m,
                    Name = "a"
                },
                new Loan()
                {
                    AccruedInterest       = 0,
                    PrincipalBalance      = 100,
                    InterestRate          = 0.0m,
                    MinimumMonthlyPayment = 25m,
                    Name = "b"
                }
            };

            var startDate = new DateTime(2020, 1, 1);

            var salary = new Salary();

            var model   = new Person(loans, 25, salary);
            var service = new DebtCalendar(model);
            var result  = service.GenerateDebtRepaymentPlan(startDate);

            Assert.AreEqual(3, result.Count);

            Assert.AreEqual(startDate, result[0].Month);
            Assert.AreEqual(2, result[0].Decisions.Count);
            AssertDecision(result[0].Decisions[0], "a", 100, 50);
            AssertDecision(result[0].Decisions[1], "b", 100, 25);

            Assert.AreEqual(startDate.AddMonths(1), result[1].Month);
            Assert.AreEqual(2, result[1].Decisions.Count);
            AssertDecision(result[1].Decisions[0], "a", 50, 50);
            AssertDecision(result[1].Decisions[1], "b", 75, 25);

            Assert.AreEqual(startDate.AddMonths(2), result[2].Month);
            Assert.AreEqual(1, result[2].Decisions.Count);
            AssertDecision(result[2].Decisions[0], "b", 50, 75);
        }
Ejemplo n.º 4
0
        public void Test_GenerateDebtRepaymentPlan_NoExtraPayment()
        {
            var loans = new Loan[] {
                new Loan()
                {
                    AccruedInterest       = 0,
                    PrincipalBalance      = 25000,
                    InterestRate          = 0.068m,
                    MinimumMonthlyPayment = 287.7m,
                    Name = "a"
                }
            };
            var startDate = new DateTime(2020, 1, 1);
            var salary    = new Salary();

            var model   = new Person(loans, 0, salary);
            var service = new DebtCalendar(model);
            var result  = service.GenerateDebtRepaymentPlan(startDate);

            Assert.AreEqual(startDate.AddMonths(119), result.Last().Month);
        }