示例#1
0
        public async Task ScheduleInThePastTriggersFeedingAsync()
        {
            var now    = DateTime.Parse("2020/04/01 10:00:00");
            var future = DateTime.Parse("2020/04/01 09:50:00");

            _mocker
            .Setup <ISchedulingEngine, Task <DateTime?> >(e => e.CalculateNextSlotAsync(DefaultFeedingManager.ScheduleName, now.Date))
            .Returns(Task.FromResult <DateTime?>(future))
            .Verifiable();

            var sensorMock = _mocker.GetMock <IDigitalSensor>();
            var slot       = _mocker.GetSlotWithSensor("dummy-42", sensorMock);

            slot.BypassSensor = true;

            var manager = _mocker.CreateInstance <DefaultFeedingManager>();

            manager.Slots = new[] { slot };

            var result = await manager.TryScheduledFeedAsync(now);

            _mocker.VerifyAll();

            Assert.True(result.Succeeded);
            Assert.NotNull(result.SlotUsed);
        }
        public void GetsNextSlotForSingleClosedSlot()
        {
            var sensor = _mocker.GetMock <IDigitalSensor>();
            var slot   = _mocker.GetSlotWithSensor("dummy", sensor);

            sensor.Setup(s => s.Read())
            .Returns(true)
            .Verifiable();

            var manager = _mocker.CreateInstance <DefaultFeedingManager>();

            manager.Slots = new[] { slot };

            var result = manager.NextFeedingSlot();

            sensor.VerifyAll();
            Assert.Equal(slot, result);
        }