public void YearlyBillingIsCorrect() { var recurringPayment = new RecurringPaymentInfo { Interval = Interval.FromIsoDuration("P1Y"), Start = new DateTime(2008, 1, 1) }; Assert.AreEqual(TimeUnit.Year, recurringPayment.GetTimeUnit()); Assert.AreEqual(1, recurringPayment.GetTimeUnitFrequency()); var cycle = BillingCycle.CalculateFirst( start: recurringPayment.Start, interval: recurringPayment.Interval ); Assert.AreEqual(TimeUnit.Year, cycle.GetTimeUnit()); Assert.AreEqual(new DateTime(2008, 1, 1), cycle.Start); Assert.AreEqual(new DateTime(2009, 1, 1), cycle.End); var nextCycle = cycle.CalculateNext(); Assert.AreEqual(TimeUnit.Year, nextCycle.GetTimeUnit()); Assert.AreEqual(1, nextCycle.GetTimeFrequency()); Assert.AreEqual(new DateTime(2009, 1, 1), nextCycle.Start); Assert.AreEqual(new DateTime(2010, 1, 1), nextCycle.End); nextCycle = nextCycle.CalculateNext(); Assert.AreEqual(TimeUnit.Year, nextCycle.GetTimeUnit()); Assert.AreEqual(1, nextCycle.GetTimeFrequency()); Assert.AreEqual(new DateTime(2010, 1, 1), nextCycle.Start); Assert.AreEqual(new DateTime(2011, 1, 1), nextCycle.End); }