Example #1
0
        public void Should_Plan_Correct_Retrieval_At_6_53_AM()
        {
            var temperature = new Mock <ITemperature>().Object;
            var dateTime    = new DateTime(2016, 5, 16, 6, 53, 0);

            var timeSpan = RetrievalPlanner.Next(temperature, dateTime);

            Assert.AreEqual(TimeSpan.Zero, timeSpan);
        }
Example #2
0
        public void Should_Plan_Correct_Retrieval_Before_6_00_AM()
        {
            var temperature = new Mock <ITemperature>().Object;
            var dateTime    = new DateTime(2016, 5, 16, 5, 00, 0);

            var timeSpan = RetrievalPlanner.Next(temperature, dateTime);

            Assert.AreEqual(TimeSpan.FromMinutes(60 + 53), timeSpan);
        }
Example #3
0
        public void Should_Plan_Correct_Retrieval_At_6_54_AM_With_Temperature_From_Last_Day()
        {
            var temperature = new Mock <ITemperature>();

            temperature.Setup(x => x.MeasuredAt).Returns(new DateTime(2016, 5, 15, 16, 52, 0));
            var dateTime = new DateTime(2016, 5, 16, 6, 54, 0);

            var timeSpan = RetrievalPlanner.Next(temperature.Object, dateTime);

            Assert.AreEqual(TimeSpan.Zero, timeSpan);
        }
Example #4
0
        public void Should_Plan_Correct_Retrieval_At_20_00_PM()
        {
            var temperatureMock = new Mock <ITemperature>();

            temperatureMock.Setup(x => x.MeasuredAt).Returns(new DateTime(2016, 5, 16, 16, 52, 0));
            var temperature = temperatureMock.Object;
            var dateTime    = new DateTime(2016, 5, 16, 20, 00, 0);

            var timeSpan = RetrievalPlanner.Next(temperature, dateTime);

            Assert.AreEqual(TimeSpan.FromHours(10).Add(TimeSpan.FromMinutes(53)), timeSpan);
        }
Example #5
0
        protected override TimeSpan PlanNextExecution() {
            if (LastExecution == default(DateTime)) {
                return TimeSpan.Zero;
            }

            var lastTemperature = CreateContext().GetLastTemperature();
            var next = RetrievalPlanner.Next(lastTemperature, DateTime.Now);

            // min delay protection
            if (DateTime.Now.Add(next) < LastExecution.Add(MinDelay)) {
                return MinDelay;
            }

            return next;
        }
Example #6
0
        public void Should_Plan_Correct_Retrieval_When_No_Temperature_Is_Passed()
        {
            var timeSpan = RetrievalPlanner.Next(null, DateTime.Now);

            Assert.AreEqual(TimeSpan.Zero, timeSpan);
        }