public void Should_Handle_IsOpen_Correctly()
        {
            // Arrange
            var timesCalled = 0;

            _stateEngineWrapperMock.Setup(m => m.ShowMessage(It.IsAny <object>(), It.IsAny <string>()))
            .Callback <object, string>((sender, args) =>
            {
                if (args == _messages[EventMessages.Should_Handle_Door_Open])
                {
                    timesCalled++;
                }
            });
            _stateEngineWrapperMock.Setup(m => m.OpenDoor(It.IsAny <object>(), It.IsAny <object>()))
            .Callback <object, object>((sender, args) => { timesCalled++; });

            var microwaveData = new MicrowaveData
            {
                IsOpen = true
            };

            StateEngine.OpenDoor    += _stateEngineWrapperMock.Object.OpenDoor;
            StateEngine.ShowMessage += _stateEngineWrapperMock.Object.ShowMessage;

            // Act
            StateEngine.MicrowaveEngine(microwaveData);

            // Assert
            Assert.Equal(2, timesCalled);
        }
        public void Should_Handle_Closed_Door_Higher_Time_Than_0()
        {
            // Arrange
            var microwaveData = new MicrowaveData
            {
                IsOpen = false,
                Time   = 1337
            };
            var timesCalled = 0;

            _stateEngineWrapperMock.Setup(m => m.SetReady(It.IsAny <object>(), It.IsAny <object>()))
            .Callback <object, object>((sender, args) => { timesCalled++; });
            _stateEngineWrapperMock.Setup(m => m.SetLightReady(It.IsAny <object>(), It.IsAny <object>()))
            .Callback <object, object>((sender, args) => { timesCalled++; });

            StateEngine.SetReady      += _stateEngineWrapperMock.Object.SetReady;
            StateEngine.SetLightReady += _stateEngineWrapperMock.Object.SetLightReady;

            // Act
            StateEngine.MicrowaveEngine(microwaveData);

            // Assert
            Assert.Equal(2, timesCalled);
            Assert.Equal(StateEngine.State.Ready, StateEngine.CurrentState);
        }
        public void Should_Not_Start_When_Door_Is_Open()
        {
            // Arrange
            var microwaveData = new MicrowaveData
            {
                IsOpen         = false,
                Time           = 0,
                IsStartClicked = true
            };
            var timesCalled = 0;

            _stateEngineWrapperMock.Setup(m => m.ShowMessage(It.IsAny <object>(), It.IsAny <string>()))
            .Callback <object, string>((sender, args) =>
            {
                if (args == _messages[EventMessages.Should_Not_Start_When_Door_Is_Open])
                {
                    timesCalled++;
                }
            });

            StateEngine.ShowMessage += _stateEngineWrapperMock.Object.ShowMessage;

            // Act
            StateEngine.MicrowaveEngine(microwaveData);

            // Assert
            Assert.Equal(1, timesCalled);
        }