コード例 #1
0
        /**
         *<summary>
         * Reschedules a class to a new start time
         *</summary>
         */
        public bool Reschedule(string className, TimeHHMM newStartTime)
        {
            ScheduleItem foundClass;

            //Check null
            if (null == (object)newStartTime)
            {
                return(false);
            }

            //Retrieve named class
            foundClass = GetClass(className);

            //Check that Class was found
            if (null == (object)foundClass)
            {
                return(false);
            }

            //Check that new start time doesn't conflict with any existing
            if (scheduleConflictStart(newStartTime))
            {
                return(false);
            }

            //Check that new end time doesn't conflict with any existing
            if (scheduleConflictEnd(newStartTime + foundClass.Duration))
            {
                return(false);
            }

            return(foundClass.Reschedule(newStartTime));
        }
コード例 #2
0
        /**
        * ScheduleItem(itemName, startTime, duration)
        *
        * ScheduleItem detailed constructor
        */
        public ScheduleItem(String itemName, TimeHHMM startTime, int duration)
        {
            int durationHours, durationMinutes;

            durationMinutes = duration % 60;
            durationHours = (duration - durationMinutes) / 60;

            //Use constructor helper
            constructorHelper(itemName, startTime, startTime + new TimeSpan(durationHours, durationMinutes, 0));
        }
コード例 #3
0
        /**
         * ScheduleItem(itemName, startTime, duration)
         *
         * ScheduleItem detailed constructor
         */
        public ScheduleItem(String itemName, TimeHHMM startTime, int duration)
        {
            int durationHours, durationMinutes;

            durationMinutes = duration % 60;
            durationHours   = (duration - durationMinutes) / 60;

            //Use constructor helper
            constructorHelper(itemName, startTime, startTime + new TimeSpan(durationHours, durationMinutes, 0));
        }
コード例 #4
0
        public bool Equals(TimeHHMM rhs)
        {
            //Check for null
            if (null == (object)rhs)
            {
                return(false);
            }

            //Equal if hour and minute are equal
            return((Hour == rhs.Hour) && (Minute == rhs.Minute));
        }
コード例 #5
0
        /** Equals() methods */
        public override bool Equals(object obj)
        {
            //Check for null
            if (null == obj)
            {
                return(false);
            }

            //Check type and use class Equals()
            TimeHHMM rhs = obj as TimeHHMM;

            return(Equals(rhs));
        }
コード例 #6
0
        public ScheduleItemUnitTests()
        {
            //Name of item
            itemName = "Homeroom";

            //Start @ 8:15a
            startHour = 8;
            startMinute = 15;
            startTime = new TimeHHMM(startHour, startMinute);

            //End @ 8:45a
            endHour = 8;
            endMinute = 45;
            endTime = new TimeHHMM(endHour, endMinute);
            duration = 30;
        }
コード例 #7
0
        /**
         *<summary>
         * Checks if ScheduleItem  conflicts with TimeHHMM as an end time
         *</summary>
         */
        public bool ConflictsWithEnd(TimeHHMM time)
        {
            //Check null
            if (null == (object)time)
            {
                return(false);
            }

            //Check if time is within bounds of this ScheduleItem (excl, incl)
            if ((time > StartTime) && (time <= EndTime))
            {
                return(true);
            }

            return(false);
        }
コード例 #8
0
        /**
         *<summary>
         * Reschedule to new start time
         *</summary>
         */
        public bool Reschedule(TimeHHMM newStartTime)
        {
            int duration = Duration;

            //Check for null
            if (null == (object)newStartTime)
            {
                return(false);
            }

            //Update start time
            StartTime = newStartTime;

            //Update end time, preserving duration
            EndTime = StartTime + duration;

            return(true);
        }
コード例 #9
0
        public void T001_TimeHHMM_Constructors()
        {
            int hour = 6;
            int minute = 30;

            /** Nominal Construction */
            TimeHHMM theNominalTime = new TimeHHMM(hour, minute);
            Assert.AreEqual<int>(hour, theNominalTime.Hour);
            Assert.AreEqual<int>(minute, theNominalTime.Minute);

            /** Out of Bounds Construction */
            TimeHHMM theOOBHour = new TimeHHMM(24, minute);
            Assert.AreEqual<int>(0, theOOBHour.Hour);
            Assert.AreEqual<int>(minute, theOOBHour.Minute);

            TimeHHMM theOOBMinute = new TimeHHMM(hour, 60);
            Assert.AreEqual<int>(hour, theOOBMinute.Hour);
            Assert.AreEqual<int>(0, theOOBMinute.Minute);
        }
コード例 #10
0
        /**
         *<summary>
         * With Name, Start TimeHHMM, and Duration
         *</summary>
         */
        public bool AddClass(string className, TimeHHMM startTime, int minutesDuration)
        {
            //Validate className
            if ("" == className)
            {
                return(false);
            }

            //Validate startTime
            if (null == (object)startTime)
            {
                return(false);
            }

            //Validate minutesDuration
            if (minutesDuration <= 0)
            {
                return(false);
            }

            //Check that new class doesn't conflict with any existing
            ScheduleItem newClass = new ScheduleItem(className, startTime, minutesDuration);

            if (scheduleConflict(newClass))
            {
                return(false);
            }

            //Check that new class isn't same name as any existing
            if (nameConflict(newClass))
            {
                return(false);
            }

            //Add class to schedule
            studentSchedule.Add(newClass);
            return(true);
        }
コード例 #11
0
        /**
        *<summary>
        *Reschedules a class to a new start time
        *</summary>
        */
        public bool Reschedule(string className, TimeHHMM newStartTime)
        {
            ScheduleItem foundClass;

            //Check null
            if(null == (object) newStartTime)
            {
                return false;
            }

            //Retrieve named class
            foundClass = GetClass(className);

            //Check that Class was found
            if (null == (object)foundClass)
            {
                return false;
            }

            //Check that new start time doesn't conflict with any existing
            if(scheduleConflictStart(newStartTime))
            {
                return false;
            }

            //Check that new end time doesn't conflict with any existing
            if (scheduleConflictEnd(newStartTime + foundClass.Duration))
            {
                return false;
            }

            return foundClass.Reschedule(newStartTime);
        }
コード例 #12
0
 /**
 * ScheduleItem(itemName, startTime, endTime)
 *
 * ScheduleItem detailed constructor
 */
 public ScheduleItem(String itemName, TimeHHMM startTime, TimeHHMM endTime)
 {
     //Use construtor helper
     constructorHelper(itemName, startTime, endTime);
 }
コード例 #13
0
 /**
 *<summary>
 *Schedule conflict helper (ScheduleItems conflict with TimeHHMM as start time)
 *</summary>
 */
 private bool scheduleConflictStart(TimeHHMM time)
 {
     return (null != (object)studentSchedule.Find(x => x.ConflictsWithStart(time)));
 }
コード例 #14
0
        /**
        *<summary>
        *Reschedule to new start time
        *</summary>
        */
        public bool Reschedule(TimeHHMM newStartTime)
        {
            int duration = Duration;

            //Check for null
            if(null == (object)newStartTime)
            {
                return false;
            }

            //Update start time
            StartTime = newStartTime;

            //Update end time, preserving duration
            EndTime = StartTime + duration;

            return true;
        }
コード例 #15
0
 /**
 *<summary>
 * Initializes name, start time, and end time
 *</summary>
 */
 private void constructorHelper(string itemName, TimeHHMM startTime, TimeHHMM endTime)
 {
     ItemName = itemName;
     StartTime = startTime;
     EndTime = endTime;
 }
コード例 #16
0
        public bool Equals(TimeHHMM rhs)
        {
            //Check for null
            if(null == (object) rhs)
            {
                return false;
            }

            //Equal if hour and minute are equal
            return ((Hour == rhs.Hour) && (Minute == rhs.Minute));
        }
コード例 #17
0
        /**
        *<summary>
        * Checks if ScheduleItem  conflicts with TimeHHMM as a start time
        *</summary>
        */
        public bool ConflictsWithStart(TimeHHMM time)
        {
            //Check null
            if(null == (object)time)
            {
                return false;
            }

            //Check if time is within bounds of this ScheduleItem (incl, excl)
            if((time >= StartTime) && (time < EndTime))
            {
                return true;
            }

            return false;
        }
コード例 #18
0
 /**
  * ScheduleItem(itemName, startTime, endTime)
  *
  * ScheduleItem detailed constructor
  */
 public ScheduleItem(String itemName, TimeHHMM startTime, TimeHHMM endTime)
 {
     //Use construtor helper
     constructorHelper(itemName, startTime, endTime);
 }
コード例 #19
0
        public void T002_ScheduleItem_ConflictsWith()
        {
            bool result = false;

            //New TimeHHMMs for Test
            TimeHHMM time1 = new TimeHHMM(8, 30);
            TimeHHMM time2 = new TimeHHMM(8, 45);
            TimeHHMM time3 = new TimeHHMM(9,  0);

            //ScheduleItems for Test
            ScheduleItem item1 = new ScheduleItem("Item1", time1, 30);
            ScheduleItem item2 = new ScheduleItem("Item2", time2, 30);
            ScheduleItem item3 = new ScheduleItem("Item3", time3, 30);

            //No Conflict
            result = item1.ConflictsWith(item3);
            Assert.IsFalse(result);
            result = item1.ConflictsWith(null);
            Assert.IsFalse(result);

            //Conflict
            result = item1.ConflictsWith(item2);
            Assert.IsTrue(result);
        }
コード例 #20
0
 /**
  *<summary>
  * Schedule conflict helper (ScheduleItems conflict with TimeHHMM as end time)
  *</summary>
  */
 private bool scheduleConflictEnd(TimeHHMM time)
 {
     return(null != (object)studentSchedule.Find(x => x.ConflictsWithEnd(time)));
 }
コード例 #21
0
 /**
  *<summary>
  * Initializes name, start time, and end time
  *</summary>
  */
 private void constructorHelper(string itemName, TimeHHMM startTime, TimeHHMM endTime)
 {
     ItemName  = itemName;
     StartTime = startTime;
     EndTime   = endTime;
 }
コード例 #22
0
        public void T004_TimeHHMM_Difference()
        {
            //Time objects for testing
            int hour1 = 12;
            int minute1 = 0;
            int hour2 = 0;
            int minute2 = 0;
            double length = Math.Abs(hour1 - hour2) * 60.0 + (minute1 - minute2);
            TimeHHMM time1 = new TimeHHMM(hour1, minute1);
            TimeHHMM time2 = new TimeHHMM(hour2, minute2);
            TimeHHMM time3;
            TimeSpan timeDiffResult;
            TimeSpan time12Diff = new TimeSpan(12, 0, 0);

            /** Nominal subtraction */
            timeDiffResult = time1 - time2;
            Assert.AreEqual<double>(length, timeDiffResult.TotalMinutes);

            time3 = time1 - (int)time12Diff.TotalMinutes;
            Assert.AreEqual<int>(time2.Hour, time3.Hour);
            Assert.AreEqual<int>(time2.Minute, time3.Minute);

            time3 = time1 - time12Diff;
            Assert.AreEqual<int>(time2.Hour, time3.Hour);
            Assert.AreEqual<int>(time2.Minute, time3.Minute);

            /** Reverse subtraction */
            timeDiffResult = time2 - time1;
            Assert.AreEqual<double>(length, timeDiffResult.TotalMinutes);

            /** Identical subtraction */
            timeDiffResult = time1 - time1;
            Assert.AreEqual<double>(0.0, timeDiffResult.TotalMinutes);

            /** Crossing day barrier */
            TimeHHMM midnight = new TimeHHMM(0, 0);
            TimeHHMM elevenThirtyPM = new TimeHHMM(23, 30);

            timeDiffResult = midnight - elevenThirtyPM;
            Assert.AreEqual<double>(30.0, timeDiffResult.TotalMinutes);

            time3 = midnight - 30;
            Assert.AreEqual<int>(elevenThirtyPM.Hour, time3.Hour);
            Assert.AreEqual<int>(elevenThirtyPM.Minute, time3.Minute);

            time3 = midnight - new TimeSpan(0, 30, 0);
            Assert.AreEqual<int>(elevenThirtyPM.Hour, time3.Hour);
            Assert.AreEqual<int>(elevenThirtyPM.Minute, time3.Minute);
        }
コード例 #23
0
 public void T002_TimeHHMM_Display()
 {
     /** Nominal Results */
     TimeHHMM theTestTime = new TimeHHMM(6, 30);
     Assert.AreEqual<string>("06:30", theTestTime.ToString());
 }
コード例 #24
0
        public void T007_TimeHHMM_Comparison()
        {
            //TimeHHMM objects for test
            TimeHHMM time1 = new TimeHHMM(8, 30);
            TimeHHMM time2 = new TimeHHMM(8, 30);
            TimeHHMM time3 = new TimeHHMM(9, 0);

            //less-than comparisons
            Assert.IsTrue(time1 < time3);
            Assert.IsFalse(time1 < time2);
            Assert.IsFalse(time3 < time1);

            //greater-than comparisons
            Assert.IsTrue(time3 > time1);
            Assert.IsFalse(time1 > time2);
            Assert.IsFalse(time1 > time3);

            //less-than-equal-to comparisons
            Assert.IsTrue(time1 <= time3);
            Assert.IsTrue(time1 <= time2);
            Assert.IsFalse(time3 <= time1);

            //greater-than-equal-to comparisons
            Assert.IsTrue(time3 >= time1);
            Assert.IsTrue(time1 >= time2);
            Assert.IsFalse(time1 >= time3);
        }
コード例 #25
0
        public void T005_TimeHHMM_Addition()
        {
            //TimeHHMM + TimeSpan
            TimeHHMM theTestStart = new TimeHHMM(9, 0); //9am
            TimeSpan theTestSpan = new TimeSpan(12, 45, 0); //12hr 45m
            TimeHHMM theNewTime = theTestStart + theTestSpan;
            Assert.AreEqual<int>(21, theNewTime.Hour);
            Assert.AreEqual<int>(45, theNewTime.Minute);

            //Truncation to minutes
            TimeSpan theTestSpan2 = new TimeSpan(12, 45, 45);
            TimeHHMM theNewTime2 = theTestStart + theTestSpan2;
            Assert.AreEqual<TimeHHMM>(theNewTime, theNewTime2);

            //TimeHHMM + minutes
            TimeHHMM theNewTime3 = theTestStart + 35;
            Assert.AreEqual<int>(9, theNewTime3.Hour);
            Assert.AreEqual<int>(35, theNewTime3.Minute);
        }
コード例 #26
0
        public void T006_TimeHHMM_Equality()
        {
            //TimeHHMM objects for test
            TimeHHMM time1 = new TimeHHMM(8, 30);
            TimeHHMM time2 = new TimeHHMM(8, 30);
            TimeHHMM time3 = new TimeHHMM(9, 0);
            TimeSpan span = new TimeSpan();

            //Equals()
            Assert.IsTrue(time1.Equals(time2));
            Assert.IsFalse(time1.Equals(time3));
            Assert.IsFalse(time1.Equals(span));

            //== operator
            Assert.IsTrue(time1 == time2);
            Assert.IsFalse(time1 == time3);

            //!= operator
            Assert.IsTrue(time1 != time3);
            Assert.IsFalse(time1 != time2);
        }
コード例 #27
0
        public void T003_TimeHHMM_Bounds()
        {
            int hour = 6;
            int minute = 30;

            /** Nominal Sets */
            //Test setting valid Hour
            TimeHHMM theNominalTime = new TimeHHMM(0, 0);
            theNominalTime.Hour = hour;
            Assert.AreEqual<int>(hour, theNominalTime.Hour);
            Assert.AreEqual<int>(0, theNominalTime.Minute);

            //Test setting valid Minute
            theNominalTime.Minute = minute;
            Assert.AreEqual<int>(hour, theNominalTime.Hour);
            Assert.AreEqual<int>(minute, theNominalTime.Minute);

            /** Out of Bounds Sets */
            //Test setting low OOB Hour
            TimeHHMM theOOBTime = new TimeHHMM(hour, minute);
            hour = -1;
            theOOBTime.Hour = hour;
            Assert.AreNotEqual<int>(hour, theOOBTime.Hour);
            Assert.AreEqual<int>(minute, theOOBTime.Minute);

            //Test setting minimum Hour
            hour = 0;
            theOOBTime.Hour = hour;
            Assert.AreEqual<int>(hour, theOOBTime.Hour);
            Assert.AreEqual<int>(minute, theOOBTime.Minute);

            //test setting high OOB Hour
            hour = 24;
            theOOBTime.Hour = hour;
            Assert.AreNotEqual<int>(hour, theOOBTime.Hour);
            Assert.AreEqual<int>(minute, theOOBTime.Minute);

            //Test setting maximum Hour
            hour = 23;
            theOOBTime.Hour = hour;
            Assert.AreEqual<int>(hour, theOOBTime.Hour);
            Assert.AreEqual<int>(minute, theOOBTime.Minute);

            //test setting low OOB minute
            minute = -1;
            theOOBTime.Minute = minute;
            Assert.AreEqual<int>(hour, theOOBTime.Hour);
            Assert.AreNotEqual<int>(minute, theOOBTime.Minute);

            //Test setting minimum Minute
            minute = 0;
            theOOBTime.Minute = minute;
            Assert.AreEqual<int>(hour, theOOBTime.Hour);
            Assert.AreEqual<int>(minute, theOOBTime.Minute);

            //test setting hight OOB minute
            minute = 60;
            theOOBTime.Minute = minute;
            Assert.AreEqual<int>(hour, theOOBTime.Hour);
            Assert.AreNotEqual<int>(minute, theOOBTime.Minute);

            //Test setting maximum Minute
            minute = 59;
            theOOBTime.Minute = minute;
            Assert.AreEqual<int>(hour, theOOBTime.Hour);
            Assert.AreEqual<int>(minute, theOOBTime.Minute);
        }
コード例 #28
0
        public void T005_ScheduleItem_Reschedule()
        {
            bool result = false;

            //TimeHHMMs for Test
            TimeHHMM startTime = new TimeHHMM(8, 30);
            TimeHHMM endTime = new TimeHHMM(9, 0);
            TimeHHMM newTime = new TimeHHMM(9, 30);

            //Nominal Test
            ScheduleItem nominalItem = new ScheduleItem("Nominal Item", startTime, endTime);
            result = nominalItem.Reschedule(newTime);
            Assert.IsTrue(result);
            Assert.AreEqual<TimeHHMM>(newTime, nominalItem.StartTime); //New start time
            Assert.AreNotEqual<TimeHHMM>(endTime, nominalItem.EndTime); //New end time
            Assert.AreEqual<int>((int) (endTime - startTime).TotalMinutes, nominalItem.Duration); //Same duration

            //Failed test
            ScheduleItem failureItem = new ScheduleItem("Failure Item", new TimeHHMM(11, 0), 45);
            result = failureItem.Reschedule(null);
            Assert.IsFalse(result);
        }
コード例 #29
0
        public void T004_ScheduleItem_ConflictsWithEnd()
        {
            bool result = false;

            //New TimeHHMMs for Test
            TimeHHMM time1 = new TimeHHMM(8, 30);
            TimeHHMM time2 = new TimeHHMM(8, 45);
            TimeHHMM time3 = new TimeHHMM(9,  0);

            //ScheduleItems for Test
            ScheduleItem item = new ScheduleItem("Item", time1, 30);

            //No Conflict
            result = item.ConflictsWithEnd(time1);
            Assert.IsFalse(result);

            //Conflict
            result = item.ConflictsWithEnd(time2);
            Assert.IsTrue(result);
            result = item.ConflictsWithEnd(time3);
            Assert.IsTrue(result);
        }
コード例 #30
0
        /**
        *<summary>
        *With Name, Start TimeHHMM, and Duration
        *</summary>
        */
        public bool AddClass(string className, TimeHHMM startTime, int minutesDuration)
        {
            //Validate className
            if ("" == className)
            {
                return false;
            }

            //Validate startTime
            if (null == (object)startTime)
            {
                return false;
            }

            //Validate minutesDuration
            if (minutesDuration <= 0)
            {
                return false;
            }

            //Check that new class doesn't conflict with any existing
            ScheduleItem newClass = new ScheduleItem(className, startTime, minutesDuration);
            if (scheduleConflict(newClass))
            {
                return false;
            }

            //Check that new class isn't same name as any existing
            if (nameConflict(newClass))
            {
                return false;
            }

            //Add class to schedule
            studentSchedule.Add(newClass);
            return true;
        }