예제 #1
0
        public void ConstructorTimeSortTest()
        {
            HourRange hourRange = new HourRange(new Time(2, 45), new Time(1, 30));

            Assert.AreEqual(hourRange.Start, new Time(1, 30));
            Assert.AreEqual(hourRange.End, new Time(2, 45));
        }         // ConstructorTimeSortTest
예제 #2
0
        protected virtual bool IsMatchingHour(HourRange hour, TContext context)
        {
            if (Filter.Years.Count > 0 && Filter.Years.Contains(hour.Year) == false)
            {
                return(false);
            }

            if (Filter.Months.Count > 0 && Filter.Months.Contains(hour.Month) == false)
            {
                return(false);
            }

            if (Filter.Days.Count > 0 && Filter.Days.Contains(hour.Day) == false)
            {
                return(false);
            }

            if (Filter.WeekDays.Count > 0 && Filter.WeekDays.Contains(hour.Start.DayOfWeek) == false)
            {
                return(false);
            }

            if (Filter.Hours.Count > 0 && Filter.Hours.Contains(hour.Hour) == false)
            {
                return(false);
            }

            return(CheckExcludePeriods(hour));
        }
예제 #3
0
        public void ConstructorHourTest()
        {
            HourRange hourRange = new HourRange(1);

            Assert.AreEqual(hourRange.Start, new Time(1));
            Assert.AreEqual(hourRange.End, new Time(1));
        }         // ConstructorHourTest
예제 #4
0
        // TODO should be configurable, for now restrictions in constructor (hideous)
        public PicoYPlacaScheduler() : base()
        {
            HourRange morning = new HourRange("07:00", "09:30");
            HourRange evening = new HourRange("16:00", "19:30");

            var ranges = new List <HourRange>()
            {
                morning, evening
            };

            SetDay(DayOfWeek.Monday, new List <string>()
            {
                "1", "2"
            }, ranges);
            SetDay(DayOfWeek.Tuesday, new List <string>()
            {
                "3", "4"
            }, ranges);
            SetDay(DayOfWeek.Wednesday, new List <string>()
            {
                "5", "6"
            }, ranges);
            SetDay(DayOfWeek.Thursday, new List <string>()
            {
                "7", "8"
            }, ranges);
            SetDay(DayOfWeek.Friday, new List <string>()
            {
                "9", "0"
            }, ranges);
        }
예제 #5
0
        // TODO should be configurable, for now restrictions in constructor (hideous)
        public HoyNoCirculaScheduler() : base()
        {
            HourRange allDay = new HourRange("05:00", "20:00");

            var ranges = new List <HourRange>()
            {
                allDay
            };

            SetDay(DayOfWeek.Monday, new List <string>()
            {
                "1", "2"
            }, ranges);
            SetDay(DayOfWeek.Tuesday, new List <string>()
            {
                "3", "4"
            }, ranges);
            SetDay(DayOfWeek.Wednesday, new List <string>()
            {
                "5", "6"
            }, ranges);
            SetDay(DayOfWeek.Thursday, new List <string>()
            {
                "7", "8"
            }, ranges);
            SetDay(DayOfWeek.Friday, new List <string>()
            {
                "9", "0"
            }, ranges);
        }
예제 #6
0
        protected HourRange StartHourhVisit(HourRange hour, TContext context, SeekDirection?visitDirection = null)
        {
            hour.ShouldNotBeNull("hour");
            var direction = visitDirection ?? SeekDirection;

            if (IsDebugEnabled)
            {
                log.Debug("Hour 단위로 탐색합니다. hour=[{0}], context=[{1}], direction=[{2}]", hour, context, direction);
            }

            HourRange lastVisited = null;

            OnVisitStart();

            var minStart = DateTime.MinValue;
            var maxEnd   = DateTime.MaxValue.AddYears(-1);
            var offset   = (direction == SeekDirection.Forward) ? 1 : -1;

            while (hour.Start > minStart && hour.End < maxEnd)
            {
                if (OnVisitHour(hour, context) == false)
                {
                    lastVisited = hour;
                    break;
                }
                hour = hour.AddHours(offset);
            }

            OnVisitEnd();

            if (IsDebugEnabled)
            {
                log.Debug("마지막 탐색 Hour. lastVisited=[{0}]", lastVisited);
            }

            return(lastVisited);
        }
예제 #7
0
 protected virtual bool OnVisitHour(HourRange hour, TContext context)
 {
     return(true);
 }
예제 #8
0
        public void IsNotMomentTest()
        {
            HourRange hourRange = new HourRange(new Time(2, 45, 33, 876), new Time(2, 45, 33, 877));

            Assert.IsFalse(hourRange.IsMoment);
        } // IsNotMomentTest
예제 #9
0
 public TestData()
 {
     Duration = new HourRange();
 }