コード例 #1
0
        public async Task FeedingSuccessfullForSingleClosedSlotAsync()
        {
            var mocker   = new AutoMocker();
            var sensor   = mocker.GetMock <IDigitalSensor>();
            var gate     = mocker.GetMock <IGateDevice>();
            var isClosed = true;

            var slot = _mocker.GetSlotWithGateAndSensor("dummy", gate, sensor);

            gate
            .Setup(g => g.OpenGateAsync())
            .Callback(() => { isClosed = false; })
            .Returns(Task.CompletedTask)
            .Verifiable();

            sensor
            .Setup(s => s.Read())
            .Returns(() => { return(isClosed); })
            .Verifiable();

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

            manager.Slots = new[] { slot };

            var result = await manager.TryFeedAsync();

            _mocker.VerifyAll();
            Assert.True(result.Succeeded);
            Assert.Equal(slot.Name, result.SlotUsed);
        }