コード例 #1
0
        public void DailyOccurrenceDaysSinceStart()
        {
            // test 0 interval 1
            {
                var dc0 = new DailyOccurrence(today, DateTime.MaxValue, 1);
                Assert.AreEqual <int>(0, dc0.GetDaysLeft(today));
            }
            //# test 1 interval 1
            {
                var dc1 = new DailyOccurrence(today, DateTime.MaxValue, 1);
                Assert.AreEqual <int>(0, dc1.GetDaysLeft(today.AddDays(1)));
            }
            {
                //# test 0 interval 2
                var dc2 = new DailyOccurrence(today, DateTime.MaxValue, 2);
                Assert.AreEqual <int>(0, dc2.GetDaysLeft(today));
            }
            {
                // # test 1 interval 2
                var dc3 = DailyOccurrence.From(today, 2);
                visualiseOccurrencesInRange(dc3, today.AddDays(-5), today.AddDays(5));
                Assert.AreEqual <int>(1, ((DailyOccurrence)dc3).GetDaysLeft(today.AddDays(1)));
            }

            {
                var dc4 = DailyOccurrence.From(today.AddDays(-3), 2);
                visualiseOccurrencesInRange(dc4, today.AddDays(-10), today.AddDays(10));
                Assert.AreEqual <int>(0, ((DailyOccurrence)dc4).GetDaysLeft(today.AddDays(1)));
            }
        }
コード例 #2
0
        public void DailyOccurrenceOutOfRangeTest()
        {
            var occ = new DailyOccurrence(twentyDaysAgo, tenDaysAgo, 1);

            Assert.IsNull(occ.GetNext(today));
            Assert.IsNull(occ.GetNext(today, true));


            var futureOcc = new DailyOccurrence(today.AddDays(20), today.AddDays(30), 1);

            Assert.IsNull(futureOcc.GetNext(today));

            var nextOccPastEnd = new DailyOccurrence(today.AddDays(20), today.AddDays(31), 4);

            visualiseOccurrencesInRange(nextOccPastEnd, today.AddDays(15), today.AddDays(38));
            Assert.IsNull(nextOccPastEnd.GetNext(today.AddDays(30)));
            Assert.IsNotNull(nextOccPastEnd.GetNext(today.AddDays(26)).Value);
        }
コード例 #3
0
        public void TodayOpenEndedTest()
        {
            {
                var occ = DailyOccurrence.From(today);
                Assert.AreEqual(today, occ.GetNext(today));
            }
            {
                var occ = DailyOccurrence.From(yesterday);
                Assert.AreEqual(today, occ.GetNext(today));
                Assert.IsNull(occ.GetNext(today.AddDays(-2)));
                Assert.IsNull(occ.GetNext(today.AddDays(-3)));
            }

            {
                foreach (var i in Enumerable.Range(2, 30))
                {
                    var startDTt = today.AddDays(-1000);
                    var occ      = DailyOccurrence.From(startDTt, i);

                    var dt = new DateTime(startDTt.Year, startDTt.Month, startDTt.Day);


                    while (dt < today)
                    {
                        dt = dt.AddDays(i);
                    }
                    Assert.AreEqual(dt, occ.GetNext(today), String.Format("For Start {0:s} interval {1:d}", today.ToString("YYYY-MM-dd"), i));
                }
            }

            {
                var occ = DailyOccurrence.From(today.AddDays(-20000));
                Assert.AreEqual(today, occ.GetNext(DateTime.Now.Date));
            }

            {
                var occ = DailyOccurrence.From(today.AddDays(-7), 3);
                Assert.AreEqual(today.AddDays(-7), occ.GetNext(today.AddDays(-7)));
                Assert.AreEqual(today.AddDays(-7).AddDays(3), today.AddDays(-4));
                Assert.AreEqual(today.AddDays(2), occ.GetNext(today));
            }
        }
コード例 #4
0
        public void WeeklyOccurrenceMultipleDaysTest()
        {
            var start = new DateTime(2010, 6, 3);
            var end   = new DateTime(2010, 8, 13);

            var days = new[] { DayOfWeek.Sunday, DayOfWeek.Saturday };

            var occ = new WeeklyOccurrence(start, end, days, 2);

            Assert.AreEqual(new DateTime(2010, 6, 5), occ.GetNext(start));
            Assert.AreEqual(new DateTime(2010, 6, 5), occ.GetNext(start));
            Assert.AreEqual(new DateTime(2010, 6, 5), occ.GetNext(start.AddDays(1)));
            Assert.AreEqual(new DateTime(2010, 6, 5), occ.GetNext(new DateTime(2010, 6, 5)));
            Assert.AreEqual(new DateTime(2010, 6, 6), occ.GetNext(new DateTime(2010, 6, 6)));
            Assert.AreEqual(new DateTime(2010, 6, 19), occ.GetNext(new DateTime(2010, 6, 7)));
            Assert.AreEqual(new DateTime(2010, 6, 19), occ.GetNext(new DateTime(2010, 6, 8)));
            Assert.AreEqual(new DateTime(2010, 6, 19), occ.GetNext(new DateTime(2010, 6, 9)));
            Assert.AreEqual(new DateTime(2010, 6, 19), occ.GetNext(new DateTime(2010, 6, 10)));
            Assert.AreEqual(new DateTime(2010, 6, 19), occ.GetNext(new DateTime(2010, 6, 11)));
            Assert.AreEqual(new DateTime(2010, 6, 19), occ.GetNext(new DateTime(2010, 6, 12)));
            Assert.AreEqual(new DateTime(2010, 6, 19), occ.GetNext(new DateTime(2010, 6, 13)));
            Assert.AreEqual(new DateTime(2010, 6, 19), occ.GetNext(new DateTime(2010, 6, 14)));
            Assert.AreEqual(new DateTime(2010, 6, 19), occ.GetNext(new DateTime(2010, 6, 15)));
            Assert.AreEqual(new DateTime(2010, 6, 19), occ.GetNext(new DateTime(2010, 6, 16)));
            Assert.AreEqual(new DateTime(2010, 6, 19), occ.GetNext(new DateTime(2010, 6, 17)));
            Assert.AreEqual(new DateTime(2010, 6, 19), occ.GetNext(new DateTime(2010, 6, 18)));
            Assert.AreEqual(new DateTime(2010, 6, 19), occ.GetNext(new DateTime(2010, 6, 19)));
            Assert.AreEqual(new DateTime(2010, 6, 20), occ.GetNext(new DateTime(2010, 6, 20)));
            Assert.AreEqual(new DateTime(2010, 7, 3), occ.GetNext(new DateTime(2010, 6, 21)));

            visualiseOccurrencesInRange(occ);
            Assert.IsNull(occ.GetNext(today));
            var docc = new DailyOccurrence(new DateTime(2010, 6, 5), end, 14);

            Assert.AreEqual(new DateTime(2010, 6, 19), docc.GetNext(new DateTime(2010, 6, 19)));
        }