public void OccurrenceDay()
        {
            TemporalExpression te = new TEDayInMonth(3);
            List<DateTime> dates = te.Occurrences(new DateTime(2010, 6, 1), new DateTime(2011, 6, 5), IntervalPrecision.Days);
            Assert.AreEqual(13, dates.Count);
            Assert.AreEqual(new DateTime(2010, 6, 3, 0, 0, 0), dates[0]);
            Assert.AreEqual(new DateTime(2011, 6, 3, 0, 0, 0), dates[12]);

            List<DateTime> dates2 = te.Occurrences(new DateTime(2010, 6, 1), 12, IntervalPrecision.Days);
            Assert.AreEqual(12, dates2.Count);
            Assert.AreEqual(new DateTime(2010, 6, 3, 0, 0, 0), dates2[0]);
            Assert.AreEqual(new DateTime(2011, 5, 3, 0, 0, 0), dates2[11]);
        }
        public void TE_DayInMonth()
        {
            //single day
            TEDayInMonth tem = new TEDayInMonth(4);
            Assert.IsTrue(tem.Includes(new DateTime(2010, 6, 4)));
            Assert.IsTrue(tem.Includes(new DateTime(2010, 8, 4)));
            Assert.IsTrue(tem.Includes(new DateTime(2011, 9, 4)));

            Assert.IsFalse(tem.Includes(new DateTime(2010, 6, 2)));
            Assert.IsFalse(tem.Includes(new DateTime(2012, 8, 3)));
            Assert.IsFalse(tem.Includes(new DateTime(1998, 9, 5)));

            //date param
            tem = new TEDayInMonth(new DateTime(2012,1,4));
            Assert.IsTrue(tem.Includes(new DateTime(2010, 6, 4)));
            Assert.IsTrue(tem.Includes(new DateTime(2010, 8, 4)));
            Assert.IsTrue(tem.Includes(new DateTime(2011, 9, 4)));

            Assert.IsFalse(tem.Includes(new DateTime(2010, 6, 2)));
            Assert.IsFalse(tem.Includes(new DateTime(2012, 8, 3)));
            Assert.IsFalse(tem.Includes(new DateTime(1998, 9, 5)));

            //range
            TEDayInMonth temr = new TEDayInMonth(5, 10);
            Assert.IsTrue(temr.Includes(new DateTime(2010, 5, 5)));
            Assert.IsTrue(temr.Includes(new DateTime(2010, 8, 7)));
            Assert.IsTrue(temr.Includes(new DateTime(2011, 9, 10)));

            Assert.IsFalse(temr.Includes(new DateTime(2010, 6, 2)));
            Assert.IsFalse(temr.Includes(new DateTime(2012, 8, 3)));
            Assert.IsFalse(temr.Includes(new DateTime(1998, 9, 15)));

            //negative
            TEDayInMonth ten = new TEDayInMonth(-4);
            Assert.IsTrue(ten.Includes(new DateTime(2010, 6, 27)));
            Assert.IsTrue(ten.Includes(new DateTime(2010, 7, 28)));
            Assert.IsTrue(ten.Includes(new DateTime(2010, 5, 28)));

            Assert.IsFalse(ten.Includes(new DateTime(2010, 6, 26)));
            Assert.IsFalse(ten.Includes(new DateTime(2010, 7, 29)));
            Assert.IsFalse(ten.Includes(new DateTime(2010, 5, 27)));
        }