Пример #1
0
        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);
                        }
                    }
                }
            }
        }
Пример #2
0
        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);
                }
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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);
                }
            }
        }
Пример #6
0
        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);
            }
        }
Пример #7
0
        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);
                    }
                }
            }
        }
Пример #8
0
        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));
                }
            }
        }
Пример #9
0
        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");
        }
Пример #10
0
 private static void writeJson(
     CalendarDataCreator creator,
     (int year, int month, int day) startDate,