public void EveningSession_NetWorkingEvent_IsNotAdded_TimeIsBefore() { //Arrange var dateTime = new DateTime(2016, 2, 1, 1, 0, 0); var mockObject = Enumerable.Repeat(new Session() { Duration = 30, Title = "Test" }, 25); ISheduler sheduler = new StubISheduler { SheduleSessionListOfSessionDateTimeInt32 = (list, dtime, duration) => new List <Session>() { new Session() { Title = "Test", Duration = 40, StartTime = new DateTime(2016, 2, 1, 3, 0, 0) } } }; //Act var result = new EveningSession(dateTime, 240, sheduler).CreateShedule(mockObject.ToList()); //Assert Assert.IsFalse(result.Any(h => h.Title.Contains("Networking")), "Expected sequence should not contain netwroking"); }
public void EveningSession_NetWorkingEvent_IsAdded_ValidTiming() { //Arrange var dateTime = new DateTime(2016, 2, 1, 1, 0, 0); var mockObject = Enumerable.Repeat(new Session() { Duration = 30, Title = "Test" }, 25); ISheduler sheduler = new StubISheduler { SheduleSessionListOfSessionDateTimeInt32 = (list, dtime, duration) => new List <Session>() { new Session() { Title = "Test", Duration = 30, StartTime = new DateTime(2016, 2, 1, 4, 30, 0) } } }; //Act var result = new EveningSession(dateTime, 240, sheduler).CreateShedule(mockObject.ToList()); var networkingItem = result.FirstOrDefault(h => h.Title.Contains("Networking")); //Assert Assert.IsNotNull(networkingItem, "Instance is null"); Assert.IsTrue(networkingItem.StartTime.Hour <= 4 || networkingItem.StartTime.Hour >= 5, "The networking started at invalid time"); }
/// <summary> /// Create the task and shedule the time /// </summary> /// <param name="programmsToBeSheduled"></param> /// <returns></returns> public List <Session> TaskSheduler(List <Session> programmsToBeSheduled) { var morningSession = new MorningSession(MorningStartTime, MorningDuration, _sheduler); var sheduledProgramms = morningSession.CreateShedule(programmsToBeSheduled); var eveningSessionCandiates = programmsToBeSheduled.Except(sheduledProgramms).ToList(); var eveningSession = new EveningSession(EveningStartTime, EveningDuration, _sheduler); sheduledProgramms.AddRange(eveningSession.CreateShedule(eveningSessionCandiates)); return(sheduledProgramms); }
public TaskManager(ISheduler sheduler, MorningSession MorningSession, EveningSession eveningSession) { _sheduler = sheduler; _morningSession = MorningSession; }