Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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);
        }