/** *<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)); }
/** * 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)); }
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)); }
/** 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)); }
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; }
/** *<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); }
/** *<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); }
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); }
/** *<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); }
/** *<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); }
/** * ScheduleItem(itemName, startTime, endTime) * * ScheduleItem detailed constructor */ public ScheduleItem(String itemName, TimeHHMM startTime, TimeHHMM endTime) { //Use construtor helper constructorHelper(itemName, startTime, endTime); }
/** *<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))); }
/** *<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; }
/** *<summary> * Initializes name, start time, and end time *</summary> */ private void constructorHelper(string itemName, TimeHHMM startTime, TimeHHMM endTime) { ItemName = itemName; StartTime = startTime; EndTime = endTime; }
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)); }
/** *<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; }
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); }
/** *<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))); }
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); }
public void T002_TimeHHMM_Display() { /** Nominal Results */ TimeHHMM theTestTime = new TimeHHMM(6, 30); Assert.AreEqual<string>("06:30", theTestTime.ToString()); }
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); }
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); }
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); }
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); }
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); }
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); }
/** *<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; }