public void Duration_WillNotDecrementLunchTime_ForEmptyDays() { TimeMerge.Utils.Calculations.NowTime = new DateTime(2014, 12, 12, 15, 0, 0); SingleDayData dayData = new SingleDayData(); // day completely empty, like a weekend-day Assert.AreEqual(TimeSpan.FromMinutes(0), dayData.Duration); }
public void Duration_WillNotDecrementLunchTime_ForCurrentDay() { TimeMerge.Utils.Calculations.NowTime = new DateTime(2014, 12, 12, 15, 0, 0); SingleDayData dayData = new SingleDayData(); dayData.WorkSpans[0].StartTime = new DateTime(2014, 12, 12, 7, 0, 0); // no EndTime exists yet: still in work Assert.AreEqual(TimeSpan.FromMinutes(8 * 60), dayData.Duration); }
public void GetDate_WillReturnWorkSpanDate_ByDefault() { SingleDayData dayData = new SingleDayData(); dayData.WorkSpans[0].StartTime = new DateTime(2014, 12, 11, 7, 0, 0); dayData.WorkSpans[0].EndTime = new DateTime(2014, 12, 11, 15, 0, 0); DateTime singleDayDataDate = dayData.GetDate(); Assert.AreEqual(new DateTime(2014, 12, 11), singleDayDataDate); }
public void Duration_WillAutoDecrementLunchTime_ForPastDays() { TimeMerge.Utils.Calculations.NowTime = new DateTime(2014, 12, 12, 15, 0, 0); SingleDayData dayData = new SingleDayData(); dayData.WorkSpans[0].StartTime = new DateTime(2014, 12, 11, 7, 0, 0); dayData.WorkSpans[0].EndTime = new DateTime(2014, 12, 11, 15, 0, 0); Assert.AreEqual(TimeSpan.FromMinutes(8 * 60 - SingleDayData.LunchTimeMinimalTime), dayData.Duration); }
public void Duration_WillAutoDecrementLunchTime_ForWorkDayFromHome() { TimeMerge.Utils.Calculations.NowTime = new DateTime(2014, 12, 12, 15, 0, 0); SingleDayData dayData = new SingleDayData(); dayData.WorkInterruptions[0].CorrectionStartTime = new DateTime(2014, 12, 11, 7, 0, 0); dayData.WorkInterruptions[0].CorrectionEndTime = new DateTime(2014, 12, 11, 15, 0, 0); dayData.WorkInterruptions[0].CorrectedType = WorkInterruption.WorkInterruptionType.PDOMA; Assert.AreEqual(TimeSpan.FromMinutes(8 * 60 - SingleDayData.LunchTimeMinimalTime), dayData.Duration); }
public void GetDate_WillReturnWorkInterruptionDate_WhenNoWorkSpanExists() { SingleDayData dayData = new SingleDayData(); dayData.WorkInterruptions[0].StartTime = new DateTime(2014, 12, 11, 7, 0, 0); dayData.WorkInterruptions[0].EndTime = new DateTime(2014, 12, 11, 15, 0, 0); dayData.WorkInterruptions[0].Type = WorkInterruption.WorkInterruptionType.PDOMA; DateTime singleDayDataDate = dayData.GetDate(); Assert.AreEqual(new DateTime(2014, 12, 11), singleDayDataDate); }
public void IsWorkAsWell_ReturnsFalse_OnWeekendsAndHolidaysForDOV() { var dayData = new SingleDayData() { Day = 26, IsNoWorkDay = true }; // simulate a weekend/holiday/vacation day dayData.WorkInterruptions[0].Type = WorkInterruption.WorkInterruptionType.DOV; bool isWorkAsWell = dayData.WorkInterruptions[0].IsWorkAsWell; Assert.AreEqual(false, isWorkAsWell); }
public void IsWorkAsWell_ReturnsTrue_OnWorkdaysForDOV() { var dayData = new SingleDayData() { Day = 26, IsNoWorkDay = false }; // simulate a normal, working weekday dayData.WorkInterruptions[0].Type = WorkInterruption.WorkInterruptionType.DOV; bool isWorkAsWell = dayData.WorkInterruptions[0].IsWorkAsWell; Assert.AreEqual(true, isWorkAsWell); }
public void Duration_WillNotDecrementLunchTime_WhenMoreThanOneWorkSpanExists() { TimeMerge.Utils.Calculations.NowTime = new DateTime(2014, 12, 12, 15, 0, 0); SingleDayData dayData = new SingleDayData(); dayData.WorkSpans[0].StartTime = new DateTime(2014, 12, 11, 7, 0, 0); dayData.WorkSpans[0].EndTime = new DateTime(2014, 12, 11, 12, 0, 0); dayData.WorkSpans[1].StartTime = new DateTime(2014, 12, 11, 12, 20, 0); dayData.WorkSpans[1].EndTime = new DateTime(2014, 12, 11, 15, 20, 0); Assert.AreEqual(TimeSpan.FromMinutes(8 * 60), dayData.Duration); }
public void SplitWorkInterruption_WillRejectInterruption_WhenWorkNotEvenStartedAtAll() { // We shall turn interruptions like this... // <whole day fully empty> // // ...into this: // <whole day fully empty> SingleDayData dayData = new SingleDayData(); // dayData.WorkInterruptions[0].StartTime = ...; // dayData.WorkInterruptions[0].EndTime = ...; // dayData.WorkInterruptions[0].Type = WorkInterruption.WorkInterruptionType.PDOMA; bool inserted = dayData.SplitWorkInterruptionWithInterruption(0, TimeSpan.FromHours(12), TimeSpan.FromMinutes(12 * 60 + SingleDayData.LunchTimeMinimalTime), WorkInterruption.WorkInterruptionType.OBED); Assert.IsFalse(inserted); }
public void SplitWorkInterruption_WillAcceptInterruption_WhenLunchTimeFitsNicelyInsideWorkTime() { // We shall turn interruptions like this... // 7:00 - 15:00 (PDOMA) 17:17 - 18:18 (SLUZ) // // ...into intervals like this: // 7:00 - 12:00 (PDOMA) 12:00 - 12:20 (OBED) 12:20 - 15:00 (PDOMA) 17:17 - 18:18 (SLUZ) SingleDayData dayData = new SingleDayData(); dayData.WorkInterruptions[0].StartTime = new DateTime(2012, 10, 2, 7, 0, 0); dayData.WorkInterruptions[0].EndTime = new DateTime(2012, 10, 2, 15, 0, 0); dayData.WorkInterruptions[0].Type = WorkInterruption.WorkInterruptionType.PDOMA; dayData.WorkInterruptions[1].StartTime = new DateTime(2012, 10, 2, 17, 17, 0); dayData.WorkInterruptions[1].EndTime = new DateTime(2012, 10, 2, 18, 18, 0); dayData.WorkInterruptions[1].Type = WorkInterruption.WorkInterruptionType.SLUZ; bool inserted = dayData.SplitWorkInterruptionWithInterruption(0, TimeSpan.FromHours(12), TimeSpan.FromMinutes(12 * 60 + SingleDayData.LunchTimeMinimalTime), WorkInterruption.WorkInterruptionType.OBED); Assert.IsTrue(inserted); Assert.AreEqual(WorkInterruption.WorkInterruptionType.PDOMA, dayData.WorkInterruptions[0].GetTypeIncludingCorrections()); Assert.AreEqual(7, dayData.WorkInterruptions[0].GetStartTimeIncludingCorrections().Hour); Assert.AreEqual(0, dayData.WorkInterruptions[0].GetStartTimeIncludingCorrections().Minute); Assert.AreEqual(12, dayData.WorkInterruptions[0].GetEndTimeIncludingCorrections().Hour); Assert.AreEqual(0, dayData.WorkInterruptions[0].GetEndTimeIncludingCorrections().Minute); Assert.AreEqual(WorkInterruption.WorkInterruptionType.OBED, dayData.WorkInterruptions[1].GetTypeIncludingCorrections()); Assert.AreEqual(12, dayData.WorkInterruptions[1].GetStartTimeIncludingCorrections().Hour); Assert.AreEqual(0, dayData.WorkInterruptions[1].GetStartTimeIncludingCorrections().Minute); Assert.AreEqual(12, dayData.WorkInterruptions[1].GetEndTimeIncludingCorrections().Hour); Assert.AreEqual(20, dayData.WorkInterruptions[1].GetEndTimeIncludingCorrections().Minute); Assert.AreEqual(WorkInterruption.WorkInterruptionType.PDOMA, dayData.WorkInterruptions[2].GetTypeIncludingCorrections()); Assert.AreEqual(12, dayData.WorkInterruptions[2].GetStartTimeIncludingCorrections().Hour); Assert.AreEqual(20, dayData.WorkInterruptions[2].GetStartTimeIncludingCorrections().Minute); Assert.AreEqual(15, dayData.WorkInterruptions[2].GetEndTimeIncludingCorrections().Hour); Assert.AreEqual(0, dayData.WorkInterruptions[2].GetEndTimeIncludingCorrections().Minute); Assert.AreEqual(WorkInterruption.WorkInterruptionType.SLUZ, dayData.WorkInterruptions[3].GetTypeIncludingCorrections()); Assert.AreEqual(17, dayData.WorkInterruptions[3].GetStartTimeIncludingCorrections().Hour); Assert.AreEqual(17, dayData.WorkInterruptions[3].GetStartTimeIncludingCorrections().Minute); Assert.AreEqual(18, dayData.WorkInterruptions[3].GetEndTimeIncludingCorrections().Hour); Assert.AreEqual(18, dayData.WorkInterruptions[3].GetEndTimeIncludingCorrections().Minute); }
public void SplitWorkInterruption_WillRejectInterruption_WhenWholeWorkStartsDuringLunchTime() { // We shall turn interruptions like this... // 12:10 - 19:00 (PDOMA) // // ...into this: // 12:10 - 19:00 (PDOMA) SingleDayData dayData = new SingleDayData(); dayData.WorkInterruptions[0].StartTime = new DateTime(2012, 10, 2, 12, 10, 0); dayData.WorkInterruptions[0].EndTime = new DateTime(2012, 10, 2, 19, 1, 0); dayData.WorkInterruptions[0].Type = WorkInterruption.WorkInterruptionType.PDOMA; bool inserted = dayData.SplitWorkInterruptionWithInterruption(0, TimeSpan.FromHours(12), TimeSpan.FromMinutes(12 * 60 + SingleDayData.LunchTimeMinimalTime), WorkInterruption.WorkInterruptionType.OBED); Assert.IsFalse(inserted); }
public void HomeOfficeDay_WillBeStarted_AccordingToTimeInArguments() { var dayData = new SingleDayData() { Day = 26, IsNoWorkDay = false }; // simulate a normal, working weekday Calculations.NowTime = new DateTime(2016, 10, 31, 7, 5, 0); // it's 07:05 in the morning // Remote Desktop Logon happened at, say, 06:38, when TimeMerge was not running yet: var remoteLogonTime = new DateTime(2016, 10, 31, 6, 38, 0); var args = new HomeOfficeDetector.HomeOfficeActivityEventArgs() { EventTime = remoteLogonTime }; dayData.StartHomeOfficeDay(args); Assert.AreEqual(WorkInterruption.WorkInterruptionType.PDOMA, dayData.WorkInterruptions[0].CorrectedType); Assert.AreEqual(remoteLogonTime, dayData.WorkInterruptions[0].CorrectionStartTime); }
public void SplitWorkSpanTest() { // We shall turn intervals like this... // 7:00 - 15:00 17:17 - 18:18 // // ...into intervals like this: // 7:00 - 12:00 12:20 - 15:00 17:17 - 18:18 SingleDayData dayData = new SingleDayData(); dayData.WorkSpans[0].StartTime = new DateTime(2012, 10, 2, 7, 0, 0); dayData.WorkSpans[0].EndTime = new DateTime(2012, 10, 2, 15, 0, 0); dayData.WorkInterruptions[0].StartTime = new DateTime(2012, 10, 2, 17, 17, 0); dayData.WorkInterruptions[0].EndTime = new DateTime(2012, 10, 2, 18, 18, 0); dayData.WorkInterruptions[0].Type = WorkInterruption.WorkInterruptionType.PDOMA; bool inserted = dayData.SplitWorkSpanWithInterruption(0, TimeSpan.FromHours(12), TimeSpan.FromMinutes(12 * 60 + SingleDayData.LunchTimeMinimalTime), WorkInterruption.WorkInterruptionType.OBED); Assert.IsTrue(inserted); Assert.AreEqual(12, dayData.WorkSpans[0].GetEndTimeIncludingCorrections().Hour); Assert.AreEqual(0, dayData.WorkSpans[0].GetEndTimeIncludingCorrections().Minute); Assert.AreEqual(12, dayData.WorkSpans[1].GetStartTimeIncludingCorrections().Hour); Assert.AreEqual(20, dayData.WorkSpans[1].GetStartTimeIncludingCorrections().Minute); Assert.AreEqual(15, dayData.WorkSpans[1].GetEndTimeIncludingCorrections().Hour); Assert.AreEqual(0, dayData.WorkSpans[1].GetEndTimeIncludingCorrections().Minute); Assert.AreEqual(WorkInterruption.WorkInterruptionType.PDOMA, dayData.WorkInterruptions[1].GetTypeIncludingCorrections()); Assert.AreEqual(17, dayData.WorkInterruptions[1].GetStartTimeIncludingCorrections().Hour); Assert.AreEqual(17, dayData.WorkInterruptions[1].GetStartTimeIncludingCorrections().Minute); Assert.AreEqual(18, dayData.WorkInterruptions[1].GetEndTimeIncludingCorrections().Hour); Assert.AreEqual(18, dayData.WorkInterruptions[1].GetEndTimeIncludingCorrections().Minute); Assert.AreEqual(WorkInterruption.WorkInterruptionType.OBED, dayData.WorkInterruptions[0].GetTypeIncludingCorrections()); Assert.AreEqual(12, dayData.WorkInterruptions[0].GetStartTimeIncludingCorrections().Hour); Assert.AreEqual(0, dayData.WorkInterruptions[0].GetStartTimeIncludingCorrections().Minute); Assert.AreEqual(12, dayData.WorkInterruptions[0].GetEndTimeIncludingCorrections().Hour); Assert.AreEqual(20, dayData.WorkInterruptions[0].GetEndTimeIncludingCorrections().Minute); }
public void SplitWorkInterruption_WillAcceptInterruption_WhenWorkStartedBeforeLunchTimeButWorkStillNotFinished() { // We shall turn interruptions like this... // 7:00 - xxx (PDOMA) // // ...into this: // 7:00 - 12:00 (PDOMA) 12:00 - 12:20 (OBED) 12:20 - xxx (PDOMA) SingleDayData dayData = new SingleDayData(); dayData.WorkInterruptions[0].StartTime = new DateTime(2012, 10, 2, 7, 0, 0); // dayData.WorkInterruptions[0].EndTime = ...; dayData.WorkInterruptions[0].Type = WorkInterruption.WorkInterruptionType.PDOMA; bool inserted = dayData.SplitWorkInterruptionWithInterruption(0, TimeSpan.FromHours(12), TimeSpan.FromMinutes(12 * 60 + SingleDayData.LunchTimeMinimalTime), WorkInterruption.WorkInterruptionType.OBED); Assert.IsTrue(inserted); Assert.AreEqual(WorkInterruption.WorkInterruptionType.PDOMA, dayData.WorkInterruptions[0].GetTypeIncludingCorrections()); Assert.AreEqual(7, dayData.WorkInterruptions[0].GetStartTimeIncludingCorrections().Hour); Assert.AreEqual(0, dayData.WorkInterruptions[0].GetStartTimeIncludingCorrections().Minute); Assert.AreEqual(2012, dayData.WorkInterruptions[0].GetEndTimeIncludingCorrections().Year); // indefinite value is "0:00" in year "1", so date shall be set anew, as well Assert.AreEqual(10, dayData.WorkInterruptions[0].GetEndTimeIncludingCorrections().Month); Assert.AreEqual(2, dayData.WorkInterruptions[0].GetEndTimeIncludingCorrections().Day); Assert.AreEqual(12, dayData.WorkInterruptions[0].GetEndTimeIncludingCorrections().Hour); Assert.AreEqual(0, dayData.WorkInterruptions[0].GetEndTimeIncludingCorrections().Minute); Assert.AreEqual(WorkInterruption.WorkInterruptionType.OBED, dayData.WorkInterruptions[1].GetTypeIncludingCorrections()); Assert.AreEqual(12, dayData.WorkInterruptions[1].GetStartTimeIncludingCorrections().Hour); Assert.AreEqual(0, dayData.WorkInterruptions[1].GetStartTimeIncludingCorrections().Minute); Assert.AreEqual(12, dayData.WorkInterruptions[1].GetEndTimeIncludingCorrections().Hour); Assert.AreEqual(20, dayData.WorkInterruptions[1].GetEndTimeIncludingCorrections().Minute); Assert.AreEqual(WorkInterruption.WorkInterruptionType.PDOMA, dayData.WorkInterruptions[2].GetTypeIncludingCorrections()); Assert.AreEqual(12, dayData.WorkInterruptions[2].GetStartTimeIncludingCorrections().Hour); Assert.AreEqual(20, dayData.WorkInterruptions[2].GetStartTimeIncludingCorrections().Minute); Assert.AreEqual(0, dayData.WorkInterruptions[2].GetEndTimeIncludingCorrections().Hour); Assert.AreEqual(0, dayData.WorkInterruptions[2].GetEndTimeIncludingCorrections().Minute); }