public static int CalcCountDownValue(MedicineWithDoses medicine)
        {
            if (medicine == null)
            {
                return(0);
            }

            var previousDoseTime = medicine.PreviousDoseTime;
            var nextDoseTime     = medicine.NextDoseTime;
            var totalTime        = TimeOfDayHelper.GetTimeBetween(previousDoseTime, nextDoseTime);
            var remainingTime    = TimeOfDayHelper.GetTimeOffsetForNextPill(medicine.NextDoseTime);
            var countDown        = ((int)remainingTime.TotalMinutes * 100) /
                                   (int)totalTime.TotalMinutes;

            return(countDown > CountDownMaxValue ? CountDownMaxValue : countDown);
        }
        public void Test_GetTimeOffsetForNextPill_Dinner_AfterDinner_IsTomorrowDinner()
        {
            var ts = TimeOfDayHelper.GetTimeOffsetForNextPill(TimeOfDay.Dinner, () => new DateTime(2016, 2, 25, 22, 0, 0));

            Assert.AreEqual(22, ts.TotalHours);
        }
        public void Test_GetTimeOffsetForNextPill_Dinner_BeforeDinner_IsDinner()
        {
            var ts = TimeOfDayHelper.GetTimeOffsetForNextPill(TimeOfDay.Dinner, () => new DateTime(2016, 2, 25, 16, 0, 0));

            Assert.AreEqual(4, ts.TotalHours);
        }
        public void Test_GetTimeOffsetForNextPill_Lunch_AfterLunch_IsTomorrowLunch()
        {
            var ts = TimeOfDayHelper.GetTimeOffsetForNextPill(TimeOfDay.Lunch, () => new DateTime(2016, 2, 25, 15, 0, 0));

            Assert.AreEqual(23, ts.TotalHours);
        }
        public void Test_GetTimeOffsetForNextPill_Lunch_BeforeLunch_IsLunch()
        {
            var ts = TimeOfDayHelper.GetTimeOffsetForNextPill(TimeOfDay.Lunch, () => new DateTime(2016, 2, 25, 10, 0, 0));

            Assert.AreEqual(4, ts.TotalHours);
        }
        public void Test_GetTimeOffsetForNextPill_Breakfast_AfterBreakfast_IsTomorrowBfast()
        {
            var ts = TimeOfDayHelper.GetTimeOffsetForNextPill(TimeOfDay.Breakfast, () => new DateTime(2016, 2, 25, 10, 0, 0));

            Assert.AreEqual(22, ts.TotalHours);
        }
        public void Test_GetTimeOffsetForNextPill_Breakfast_BeforeBreakfast_IsTodayBfast()
        {
            var ts = TimeOfDayHelper.GetTimeOffsetForNextPill(TimeOfDay.Breakfast, () => new DateTime(2016, 2, 25, 7, 0, 0));

            Assert.AreEqual(1, ts.TotalHours);
        }