Example #1
0
 internal void AddRecentPayments(FixedRateLoan testSubject)
 {
     testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-29), new Pecuniam(-461.0M));
     testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-60), new Pecuniam(-460.0M));
     testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-90), new Pecuniam(-459.0M));
     testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-120), new Pecuniam(-458.0M));
     testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-150), new Pecuniam(-457.0M));
     testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-180), new Pecuniam(-456.0M));
 }
Example #2
0
        public void TestGetMinPayment()
        {
            var testSubject = new FixedRateLoan(DateTime.UtcNow.AddYears(-3).Date, 0.0125F);

            AddTransactionsOld(testSubject);
            AddRecentPayments(testSubject);

            var testResult = testSubject.GetMinPayment(DateTime.UtcNow.AddDays(-15).Date);

            Assert.AreEqual(-52.79M, testResult.Amount);

            Console.WriteLine(testResult.Amount);
        }
Example #3
0
        public void TestGet30yearBalance()
        {
            var testSubject = new FixedRateLoan(DateTime.Today, 0.0885F, new Pecuniam(150000))
            {
                Rate = 0.05F
            };
            var testResult = testSubject.GetValueAt(DateTime.Today.AddYears(30));

            Console.WriteLine(testResult);

            var fv = Econ.PerDiemInterest(150000M, 0.03F,
                                          (DateTime.Today.AddYears(30) - DateTime.Today).TotalDays);

            Console.WriteLine(fv);

            var v = fv / 30;

            v = v / 12;
            Console.WriteLine(v);
        }
Example #4
0
        internal void AddTransactionsOld(FixedRateLoan testSubject)
        {
            //monthly payments
            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-360), new Pecuniam(-450.0M));
            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-240), new Pecuniam(-454.0M));
            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-300), new Pecuniam(-452.0M));
            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-270), new Pecuniam(-453.0M));
            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-210), new Pecuniam(-455.0M));
            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-330), new Pecuniam(-451.0M));

            //charges
            testSubject.AddPositiveValue(DateTime.UtcNow.AddDays(-365), new Pecuniam(8000.0M));
            testSubject.AddPositiveValue(DateTime.UtcNow.AddDays(-350), new Pecuniam(164.4M));
            testSubject.AddPositiveValue(DateTime.UtcNow.AddDays(-198), new Pecuniam(165.4M));
            testSubject.AddPositiveValue(DateTime.UtcNow.AddDays(-24), new Pecuniam(166.4M));
            testSubject.AddPositiveValue(DateTime.UtcNow.AddDays(-74), new Pecuniam(167.4M));
            testSubject.AddPositiveValue(DateTime.UtcNow.AddDays(-88), new Pecuniam(168.4M));
            testSubject.AddPositiveValue(DateTime.UtcNow.AddDays(-92), new Pecuniam(169.4M));
            testSubject.AddPositiveValue(DateTime.UtcNow.AddDays(-121), new Pecuniam(170.4M));
            testSubject.AddPositiveValue(DateTime.UtcNow.AddDays(-180), new Pecuniam(171.4M));
            testSubject.AddPositiveValue(DateTime.UtcNow.AddDays(-142), new Pecuniam(172.4M));
            testSubject.AddPositiveValue(DateTime.UtcNow.AddDays(-155), new Pecuniam(173.4M));
        }
Example #5
0
        public void TestGetStatus()
        {
            var testSubject = new FixedRateLoan(DateTime.UtcNow.AddYears(-3).Date, 0.0125F);

            AddTransactionsOld(testSubject);
            AddRecentPayments(testSubject);

            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-15), new Pecuniam(-461.0M));
            var testResult = testSubject.GetStatus(DateTime.UtcNow);

            Assert.AreEqual(SpStatus.Current, testResult);

            testSubject = new FixedRateLoan(DateTime.UtcNow.AddYears(-3).Date, 0.0125F);

            testResult = testSubject.GetStatus(DateTime.UtcNow);
            Assert.AreEqual(SpStatus.NoHistory, testResult);

            testSubject.Terminus = DateTime.UtcNow.AddDays(-1).Date;

            testSubject.Closure = ClosedCondition.ClosedWithZeroBalance;

            testResult = testSubject.GetStatus(DateTime.UtcNow);
            Assert.AreEqual(SpStatus.Closed, testResult);

            testSubject.Terminus = DateTime.UtcNow.AddDays(1).Date;
            testSubject.Closure  = ClosedCondition.ClosedWithZeroBalance;

            testResult = testSubject.GetStatus(DateTime.UtcNow);
            Assert.AreNotEqual(SpStatus.Closed, testResult);

            testSubject = new FixedRateLoan(DateTime.UtcNow.AddYears(-3).Date, 0.0125F);
            testSubject.DueFrequency = new TimeSpan(28, 0, 0, 0);
            AddTransactionsOld(testSubject);
            AddRecentPayments(testSubject);

            testResult = testSubject.GetStatus(DateTime.UtcNow);
            Assert.AreEqual(SpStatus.Late, testResult);

            testSubject.DueFrequency = new TimeSpan(45, 0, 0, 0);
            testResult = testSubject.GetStatus(DateTime.UtcNow);
            Assert.AreEqual(SpStatus.Current, testResult);

            //account opened then over paid off - better be current
            testSubject = new FixedRateLoan(DateTime.UtcNow.AddYears(-3).Date, 0.0125F);
            testSubject.AddPositiveValue(DateTime.UtcNow.AddDays(-365), new Pecuniam(8000.0M));
            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-360), new Pecuniam(-9000.0M));

            testResult = testSubject.GetStatus(DateTime.UtcNow);
            Assert.AreEqual(SpStatus.Current, testResult);

            //immediate payment didn't cover it cause of per diem interest
            testSubject = new FixedRateLoan(DateTime.UtcNow.AddYears(-3).Date, 0.0125F)
            {
                Rate = 0.0825f
            };
            testSubject.AddPositiveValue(DateTime.UtcNow.AddDays(-40), new Pecuniam(8000.0M));
            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-35), new Pecuniam(-8000.0M));

            testResult = testSubject.GetStatus(DateTime.UtcNow);
            Assert.AreEqual(SpStatus.Late, testResult);
        }
Example #6
0
        public void TestGetDelinquency()
        {
            var testSubject = new FixedRateLoan(DateTime.UtcNow.AddYears(-3).Date, 0.0125F);

            AddTransactionsOld(testSubject);
            AddRecentPayments(testSubject);

            var testResult = testSubject.GetDelinquency(DateTime.UtcNow);

            Assert.IsNull(testResult);

            testSubject = new FixedRateLoan(DateTime.UtcNow.AddYears(-3).Date, 0.0125F);
            testSubject.AddPositiveValue(DateTime.UtcNow.AddDays(-365), new Pecuniam(8000.0M));

            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-180 - testSubject.DueFrequency.Value.TotalDays),
                                         new Pecuniam(-461.0M));

            var dt = DateTime.UtcNow;

            testResult = testSubject.GetDelinquency(dt);
            Assert.AreEqual(PastDue.HundredAndEighty, testResult);

            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-179 - testSubject.DueFrequency.Value.TotalDays),
                                         new Pecuniam(-461.0M));

            testResult = testSubject.GetDelinquency(dt);
            Assert.AreEqual(PastDue.Ninety, testResult);

            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-90 - testSubject.DueFrequency.Value.TotalDays),
                                         new Pecuniam(-461.0M));

            testResult = testSubject.GetDelinquency(dt);
            Assert.AreEqual(PastDue.Ninety, testResult);

            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-89 - testSubject.DueFrequency.Value.TotalDays),
                                         new Pecuniam(-461.0M));

            testResult = testSubject.GetDelinquency(dt);
            Assert.AreEqual(PastDue.Sixty, testResult);

            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-60 - testSubject.DueFrequency.Value.TotalDays),
                                         new Pecuniam(-461.0M));

            testResult = testSubject.GetDelinquency(dt);
            Assert.AreEqual(PastDue.Sixty, testResult);

            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-59 - testSubject.DueFrequency.Value.TotalDays),
                                         new Pecuniam(-461.0M));

            testResult = testSubject.GetDelinquency(dt);
            Assert.AreEqual(PastDue.Thirty, testResult);

            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-30 - testSubject.DueFrequency.Value.TotalDays),
                                         new Pecuniam(-461.0M));

            testResult = testSubject.GetDelinquency(dt);
            Assert.AreEqual(PastDue.Thirty, testResult);

            testSubject.AddNegativeValue(DateTime.UtcNow.AddDays(-29 - testSubject.DueFrequency.Value.TotalDays),
                                         new Pecuniam(-461.0M));

            testResult = testSubject.GetDelinquency(dt);
            Assert.IsNull(testResult);
        }