public void TestDayOfWeekOrder_NotContainsDaysOfDifferentMonth() { var creator = new CalendarDataCreator(); checkDayOfWeekStart(creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Sunday, false), DayOfWeek.Sunday); checkDayOfWeekStart(creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Monday, false), DayOfWeek.Monday); checkDayOfWeekStart(creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Tuesday, false), DayOfWeek.Tuesday); checkDayOfWeekStart(creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Wednesday, false), DayOfWeek.Wednesday); checkDayOfWeekStart(creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Thursday, false), DayOfWeek.Thursday); checkDayOfWeekStart(creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Friday, false), DayOfWeek.Friday); checkDayOfWeekStart(creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Saturday, false), DayOfWeek.Saturday); void checkDayOfWeekStart(List <Month> months, DayOfWeek dayOfWeekStart) { foreach (var month in months) { for (int i = 0; i < month.Weeks.Count; i++) { Week week = month.Weeks[i]; if (0 < i || week.Days.Count == 7) { Assert.AreEqual(dayOfWeekStart, week.Days[0].Day.DayOfWeek); } } } } }
public void TestDayCreate_Between_2018_12_And_2019_1() { var creator = new CalendarDataCreator(); List <Month> months = creator.Create(new DateTime(2018, 12, 1), new DateTime(2019, 1, 31), DayOfWeek.Sunday, false); List <Day> days = months.SelectMany(x => x.Weeks).SelectMany(x => x.Days).Where(x => x != null).Select(x => x.Day).ToList(); for (int i = 0; i < days.Count; i++) { var day = days[i]; if (i < 31) { Assert.AreEqual(2018, day.Year); Assert.AreEqual(12, day.Month); Assert.AreEqual(i + 1, day.DayOfMonth); // 12/1 is Saturday Assert.AreEqual(((i % 7) + 6) % 7, day.DayOfWeekValue); } else { Assert.AreEqual(2019, day.Year); Assert.AreEqual(1, day.Month); Assert.AreEqual((i - 31) + 1, day.DayOfMonth); // 1/1 is Tuesday Assert.AreEqual((((i - 31) % 7) + 2) % 7, day.DayOfWeekValue); } } }
public void TestWeekSize_ContainsDaysOfDifferentMonth() { var creator = new CalendarDataCreator(); List <Month> months = creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Sunday, true); List <Week> weeks = months.SelectMany(x => x.Weeks).ToList(); // first and last week will be lack of days for (int i = 1; i < weeks.Count - 1; i++) { var week = weeks[i]; Assert.AreEqual(7, week.Days.Count); } }
public void TestDayDisable_MultiMonth() { var creator = new CalendarDataCreator(); List <Month> months = creator.Create(new DateTime(2019, 1, 2), new DateTime(2019, 2, 27), DayOfWeek.Sunday, false); List <Day> days = months.SelectMany(x => x.Weeks).SelectMany(x => x.Days).Where(x => x != null).Select(x => x.Day).ToList(); for (int i = 0; i < days.Count; i++) { var day = days[i]; Assert.AreEqual(i == 0 || i == days.Count - 1, day.IsDisabled); } }
public void TestWeekSize_NotContainsDaysOfDifferentMonth() { var creator = new CalendarDataCreator(); List <Month> months = creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Sunday, false); foreach (var month in months) { List <Week> weeks = month.Weeks; // first and last week will be lack of days for (int i = 1; i < weeks.Count - 1; i++) { var week = weeks[i]; Assert.AreEqual(7, week.Days.Count); } } }
public void TestDayCreate__FewRange() { var creator = new CalendarDataCreator(); List <Month> months = creator.Create(new DateTime(2019, 1, 15), new DateTime(2019, 1, 15), DayOfWeek.Sunday, false); List <Day> days = months.SelectMany(x => x.Weeks).SelectMany(x => x.Days).Where(x => x != null).Select(x => x.Day).ToList(); for (int i = 0; i < days.Count; i++) { var day = days[i]; Assert.AreEqual(2019, day.Year); Assert.AreEqual(1, day.Month); Assert.AreEqual(i + 1, day.DayOfMonth); // 1/1 is Tuesday Assert.AreEqual(((i % 7) + 2) % 7, day.DayOfWeekValue); } }
public void TestDayOfWeekOrder_ContainsDaysOfDifferentMonth() { var creator = new CalendarDataCreator(); checkDayOfWeekStart(creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Sunday, true), DayOfWeek.Sunday); checkDayOfWeekStart(creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Monday, true), DayOfWeek.Monday); checkDayOfWeekStart(creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Tuesday, true), DayOfWeek.Tuesday); checkDayOfWeekStart(creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Wednesday, true), DayOfWeek.Wednesday); checkDayOfWeekStart(creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Thursday, true), DayOfWeek.Thursday); checkDayOfWeekStart(creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Friday, true), DayOfWeek.Friday); checkDayOfWeekStart(creator.Create(new DateTime(2019, 1, 1), new DateTime(2020, 12, 31), DayOfWeek.Saturday, true), DayOfWeek.Saturday); void checkDayOfWeekStart(List <Month> months, DayOfWeek dayOfWeekStart) { foreach (var week in months.SelectMany(x => x.Weeks)) { if (week.Days.Count == 7) { Assert.AreEqual(dayOfWeekStart, week.Days[0].Day.DayOfWeek); } } } }
public void TestDayRelaition_Between_2018_12_And_2018_1() { var creator = new CalendarDataCreator(); List <Month> months = creator.Create(new DateTime(2018, 12, 1), new DateTime(2019, 1, 31), DayOfWeek.Sunday, false); List <RelationalDay> days = months.SelectMany(x => x.Weeks).SelectMany(x => x.Days).Where(x => x != null).ToList(); Assert.AreEqual(62, days.Count); for (int i = 0; i < days.Count; i++) { var day = days[i]; if (i != 0) { Assert.AreEqual(true, Day.Equals(days[i - 1].Day, day.PreviousDay)); } if (i != days.Count - 1) { Assert.AreEqual(true, Day.Equals(days[i + 1].Day, day.NextDay)); } } }
public static void Main(string[] args) { Console.WriteLine("Start CreatingTestData"); var creator = new CalendarDataCreator(); FileInfo symbolFile = findSolutionFile(rootDirectorySymbolFileName); string outPutDirectoryPath = Path.Combine(symbolFile.DirectoryName, outPutDirectory); if (Directory.Exists(outPutDirectoryPath)) { Directory.Delete(outPutDirectoryPath, true); } DirectoryInfo workerDirectory = Directory.CreateDirectory(outPutDirectoryPath); writeJson(creator, (2018, 1, 1), (2018, 1, 31), DayOfWeek.Sunday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 1, 31), DayOfWeek.Monday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 1, 31), DayOfWeek.Tuesday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 1, 31), DayOfWeek.Wednesday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 1, 31), DayOfWeek.Thursday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 1, 31), DayOfWeek.Saturday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 1, 31), DayOfWeek.Sunday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 1, 31), DayOfWeek.Monday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 1, 31), DayOfWeek.Tuesday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 1, 31), DayOfWeek.Wednesday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 1, 31), DayOfWeek.Thursday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 1, 31), DayOfWeek.Saturday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 2, 1), DayOfWeek.Sunday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 2, 1), DayOfWeek.Monday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 2, 1), DayOfWeek.Tuesday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 2, 1), DayOfWeek.Wednesday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 2, 1), DayOfWeek.Thursday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 2, 1), DayOfWeek.Saturday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 2, 1), DayOfWeek.Sunday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 2, 1), DayOfWeek.Monday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 2, 1), DayOfWeek.Tuesday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 2, 1), DayOfWeek.Wednesday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 2, 1), DayOfWeek.Thursday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 2, 1), DayOfWeek.Saturday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 12, 31), DayOfWeek.Sunday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 12, 31), DayOfWeek.Monday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 12, 31), DayOfWeek.Tuesday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 12, 31), DayOfWeek.Wednesday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 12, 31), DayOfWeek.Thursday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 12, 31), DayOfWeek.Saturday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 12, 31), DayOfWeek.Sunday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 12, 31), DayOfWeek.Monday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 12, 31), DayOfWeek.Tuesday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 12, 31), DayOfWeek.Wednesday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 12, 31), DayOfWeek.Thursday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2018, 12, 31), DayOfWeek.Saturday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2019, 12, 31), DayOfWeek.Sunday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2019, 12, 31), DayOfWeek.Monday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2019, 12, 31), DayOfWeek.Tuesday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2019, 12, 31), DayOfWeek.Wednesday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2019, 12, 31), DayOfWeek.Thursday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2019, 12, 31), DayOfWeek.Saturday, true, workerDirectory); writeJson(creator, (2018, 1, 1), (2019, 12, 31), DayOfWeek.Sunday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2019, 12, 31), DayOfWeek.Monday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2019, 12, 31), DayOfWeek.Tuesday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2019, 12, 31), DayOfWeek.Wednesday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2019, 12, 31), DayOfWeek.Thursday, false, workerDirectory); writeJson(creator, (2018, 1, 1), (2019, 12, 31), DayOfWeek.Saturday, false, workerDirectory); writeJson(creator, (2018, 1, 15), (2018, 2, 15), DayOfWeek.Sunday, true, workerDirectory); writeJson(creator, (2018, 1, 15), (2018, 2, 15), DayOfWeek.Monday, true, workerDirectory); writeJson(creator, (2018, 1, 15), (2018, 2, 15), DayOfWeek.Tuesday, true, workerDirectory); writeJson(creator, (2018, 1, 15), (2018, 2, 15), DayOfWeek.Wednesday, true, workerDirectory); writeJson(creator, (2018, 1, 15), (2018, 2, 15), DayOfWeek.Thursday, true, workerDirectory); writeJson(creator, (2018, 1, 15), (2018, 2, 15), DayOfWeek.Saturday, true, workerDirectory); writeJson(creator, (2018, 1, 15), (2018, 2, 15), DayOfWeek.Sunday, false, workerDirectory); writeJson(creator, (2018, 1, 15), (2018, 2, 15), DayOfWeek.Monday, false, workerDirectory); writeJson(creator, (2018, 1, 15), (2018, 2, 15), DayOfWeek.Tuesday, false, workerDirectory); writeJson(creator, (2018, 1, 15), (2018, 2, 15), DayOfWeek.Wednesday, false, workerDirectory); writeJson(creator, (2018, 1, 15), (2018, 2, 15), DayOfWeek.Thursday, false, workerDirectory); writeJson(creator, (2018, 1, 15), (2018, 2, 15), DayOfWeek.Saturday, false, workerDirectory); Console.WriteLine("End CreatingTestData"); }
private static void writeJson( CalendarDataCreator creator, (int year, int month, int day) startDate,