public void CheckingOffPillOffAt_8H_UpdateCalledTest()
        {
            ITaskReminderIO <Pill, PillSchedule> taskReminderIOMock = Substitute.For <ITaskReminderIO <Pill, PillSchedule> >();

            taskReminderIOMock.GetAllTask().Returns(testPills);
            taskReminderIOMock.GetAllTaskSchedule().Returns(testPillSchedules);

            Time mockedTime = new Time(8, 0, 0);

            timeProvider = Substitute.For <ITimeProvider>();
            timeProvider.CurrentTime.Returns(mockedTime);
            timeProvider.CurrrentDateTime.Returns(mockedTime.ToDateTime());

            timerMock = Substitute.For <ITimer>();

            Tuple <Pill, Time> pillToCheckOff = new Tuple <Pill, Time>(new Pill("Bar", 4, testPills[1].ID), new Time(8, 0, 0));
            PillSchedule       exceptedRecivedPillSchedule = new PillSchedule(testPillSchedules[1].ID, testPills[1], new List <Tuple <Time, bool> >()
            {
                new Tuple <Time, bool>(new Time(8, 0, 0), true),
                new Tuple <Time, bool>(new Time(18, 0, 0), false),
            });


            PillReminderManager reminderManager = new PillReminderManager(new Time(0, 5, 0), taskReminderIOMock, timeProvider, timerMock);

            timerMock.Elapsed += Raise.Event <ElapsedEventHandler>(this, createElapsedEventArgs(mockedTime.ToDateTime()));
            reminderManager.CheckingOffFinishedTask(pillToCheckOff);

            taskReminderIOMock.Received().UpdateTaskScheduleData(Arg.Is <PillSchedule>(p => p.Pill.Equals(pillToCheckOff.Item1)));
        }
示例#2
0
        public PillReminderManager(Time CheckingInterval, ITaskReminderIO <Pill, PillSchedule> PillReminderIO, ITimeProvider TimeProvider, ITimer TimerProvider)
        {
            _schedules       = new List <PillSchedule>();
            _currentTask     = new List <Tuple <Pill, Time> >();
            checkingInterval = CheckingInterval;

            setDependency(PillReminderIO, TimeProvider, TimerProvider);
            intializeReminderTimerData();

            _schedules = pillReminderIO.GetAllTaskSchedule();
        }
        public void OneTimeSetUp()
        {
            testPills = new List <Pill>()
            {
                new Pill("Foo", 3), new Pill("Bar", 4), new Pill("Baz", 3), new Pill("RedPill", 3)
            };
            testPillSchedules = new List <PillSchedule>()
            {
                new PillSchedule(testPills[0], new List <Tuple <Time, bool> >()
                {
                    new Tuple <Time, bool>(new Time(6, 0, 0), false),
                    new Tuple <Time, bool>(new Time(12, 0, 0), false),
                    new Tuple <Time, bool>(new Time(18, 0, 0), false),
                }),
                new PillSchedule(testPills[1], new List <Tuple <Time, bool> >()
                {
                    new Tuple <Time, bool>(new Time(8, 0, 0), false),
                    new Tuple <Time, bool>(new Time(18, 0, 0), false),
                }),
                new PillSchedule(testPills[2], new List <Tuple <Time, bool> >()
                {
                    new Tuple <Time, bool>(new Time(6, 0, 0), false),
                    new Tuple <Time, bool>(new Time(12, 0, 0), false),
                    new Tuple <Time, bool>(new Time(18, 0, 0), false),
                }),
                new PillSchedule(testPills[3], new List <Tuple <Time, bool> >()
                {
                    new Tuple <Time, bool>(new Time(23, 56, 00), true),
                }),
            };


            pillReminderIOMock = Substitute.For <ITaskReminderIO <Pill, PillSchedule> >();
            pillReminderIOMock.GetAllTaskSchedule().Returns(testPillSchedules);
            pillReminderIOMock.GetAllTask().Returns(testPills);

            Time time = new Time(0, 30, 0);
        }
        public void PillManagerSavingTest()
        {
            ITaskReminderIO <Pill, PillSchedule> taskReminderIOMock = Substitute.For <ITaskReminderIO <Pill, PillSchedule> >();

            taskReminderIOMock.GetAllTask().Returns(testPills);
            taskReminderIOMock.GetAllTaskSchedule().Returns(testPillSchedules);

            timeProvider = Substitute.For <ITimeProvider>();
            timeProvider.CurrentTime.Returns(new Time(12, 0, 0));
            timeProvider.CurrrentDateTime.Returns(new Time(12, 0, 0).ToDateTime());

            List <Tuple <Pill, Time> > pillToCheckOff = new List <Tuple <Pill, Time> >()
            {
                new Tuple <Pill, Time>(testPills[0], new Time(12, 0, 0)),
                new Tuple <Pill, Time>(testPills[2], new Time(12, 0, 0))
            };
            List <PillSchedule> exceptedUpdatePillSchedule = new List <PillSchedule>()
            {
                new PillSchedule(testPillSchedules[0].ID, testPills[0], new List <Tuple <Time, bool> >()
                {
                    new Tuple <Time, bool>(new Time(6, 0, 0), false),
                    new Tuple <Time, bool>(new Time(12, 0, 0), true),
                    new Tuple <Time, bool>(new Time(18, 0, 0), false),
                }),
                new PillSchedule(testPillSchedules[1].ID, testPills[1], new List <Tuple <Time, bool> >()
                {
                    new Tuple <Time, bool>(new Time(8, 0, 0), false),
                    new Tuple <Time, bool>(new Time(18, 0, 0), false),
                }),
                new PillSchedule(testPillSchedules[2].ID, testPills[2], new List <Tuple <Time, bool> >()
                {
                    new Tuple <Time, bool>(new Time(6, 0, 0), false),
                    new Tuple <Time, bool>(new Time(12, 0, 0), true),
                    new Tuple <Time, bool>(new Time(18, 0, 0), false),
                }),
                new PillSchedule(testPillSchedules[3].ID, testPills[3], new List <Tuple <Time, bool> >()
                {
                    new Tuple <Time, bool>(new Time(23, 56, 00), true),
                }),
            };

            timerMock = Substitute.For <ITimer>();


            PillReminderManager pillReminderManager = new PillReminderManager(new Time(0, 10, 0), taskReminderIOMock, timeProvider, timerMock);

            timerMock.Elapsed += Raise.Event <ElapsedEventHandler>(this, createElapsedEventArgs(new Time(12, 0, 0).ToDateTime()));
            pillReminderManager.CheckingOffFinishedTask(pillToCheckOff[0]);
            pillReminderManager.CheckingOffFinishedTask(pillToCheckOff[1]);

            timeProvider.CurrentTime.Returns(new Time(12, 10, 0));
            timerMock.Elapsed += Raise.Event <ElapsedEventHandler>(this, createElapsedEventArgs(new Time(12, 10, 0).ToDateTime()));

            timeProvider.CurrentTime.Returns(new Time(12, 20, 0));
            timerMock.Elapsed += Raise.Event <ElapsedEventHandler>(this, createElapsedEventArgs(new Time(12, 20, 0).ToDateTime()));


            taskReminderIOMock.Received().UpdateTaskScheduleDatas(Arg.Is <List <PillSchedule> >(p => p[0].TakenRecordForTheDay[1].Item2 == true &&
                                                                                                p[2].TakenRecordForTheDay[1].Item2 == true));

            timeProvider.CurrentTime.Returns(new Time(12, 30, 0));
            timerMock.Elapsed += Raise.Event <ElapsedEventHandler>(this, createElapsedEventArgs(new Time(12, 30, 0).ToDateTime()));
        }
示例#5
0
 private void setDependency(ITaskReminderIO <Pill, PillSchedule> PillReminderIO, ITimeProvider TimeProvider, ITimer timer)
 {
     pillReminderIO            = PillReminderIO;
     timeProvider              = TimeProvider;
     pillReminderCheckingTimer = timer;
 }