public void EveryMD() { var m = new DateTimeMatcher("****.08.14-**-00:00"); Assert.IsTrue(m.Valid); var first = new DateTime(2018, 1, 1, 0, 0, 0); for (var i = 0; i < 366 * 10; i++) { var dt = first.AddDays(i); if (dt.Month == 8 && dt.Day == 14) { Assert.IsTrue(m.IsMatch(dt)); Assert.IsFalse(m.IsMatch(dt.AddSeconds(30))); Assert.IsFalse(m.IsMatch(dt.AddSeconds(630))); } else { // other Assert.IsFalse(m.IsMatch(dt)); } } }
public void EveryLast() { var m = new DateTimeMatcher("****.**.LL-**-00:00"); Assert.IsTrue(m.Valid); var first = new DateTime(2018, 1, 1, 0, 0, 0); for (var i = 0; i < 380; i++) { var dt = first.AddDays(i); if (dt.IsLastDayInMonth()) { Assert.IsTrue(m.IsMatch(dt)); Assert.IsFalse(m.IsMatch(dt.AddSeconds(30))); Assert.IsFalse(m.IsMatch(dt.AddSeconds(630))); } else { // other Assert.IsFalse(m.IsMatch(dt)); } } }
public void Tuesday() { var m = new DateTimeMatcher("****.**.**-*2-21:05"); Assert.IsTrue(m.Valid); var tue = new DateTime(2018, 8, 14, 21, 5, 0); for (var i = 0; i < 200; i++) { if (i % 7 == 0) { // tuesday Assert.IsTrue(m.IsMatch(tue.AddDays(i))); Assert.IsFalse(m.IsMatch(tue.AddDays(i).AddSeconds(30))); Assert.IsFalse(m.IsMatch(tue.AddDays(i).AddSeconds(630))); } else { // other Assert.IsFalse(m.IsMatch(tue.AddDays(i))); } } }
public void EveryLastThursday() { var m = new DateTimeMatcher("****.**.**-L4-00:00"); Assert.IsTrue(m.Valid); var first = new DateTime(2018, 1, 1, 0, 0, 0); for (var i = 0; i < 366 * 10; i++) { var dt = first.AddDays(i); var isLastThursday = dt.DayOfWeek == DayOfWeek.Thursday && dt.AddDays(7).Month != dt.Month; if (isLastThursday) { Assert.IsTrue(m.IsMatch(dt)); Assert.IsFalse(m.IsMatch(dt.AddSeconds(30))); Assert.IsFalse(m.IsMatch(dt.AddSeconds(630))); } else { // other Assert.IsFalse(m.IsMatch(dt)); } } }
public void ThirdThursday() { var m = new DateTimeMatcher("****.**.**-34-21:05"); Assert.IsTrue(m.Valid); var first = new DateTime(2018, 1, 1, 21, 5, 0); for (var i = 0; i < 380; i++) { var dt = first.AddDays(i); var isThirdThursday = dt.DayOfWeek == DayOfWeek.Thursday && dt.GetNumberOfDayOfWeek() == 3; if (isThirdThursday) { Assert.IsTrue(m.IsMatch(dt)); Assert.IsFalse(m.IsMatch(dt.AddSeconds(30))); Assert.IsFalse(m.IsMatch(dt.AddSeconds(630))); } else { // other Assert.IsFalse(m.IsMatch(dt)); } } }
private static void AssertMatcher(DateTimeMatcher matcher, DateTime dt, bool expect) { Assert.AreEqual(expect, matcher.IsMatch(dt), matcher.Pattern + " / " + dt.ToString()); }