Beispiel #1
0
        private void OnDoorOpenedChanged(bool doorOpened)
        {
            switch (microwaveState)
            {
            case MicrowaveOvenState.OPENED:
                if (!microwaveOvenHW.DoorOpen)
                {
                    microwaveState = MicrowaveOvenState.CLOSED;
                    LightOn        = false;
                }
                break;

            case MicrowaveOvenState.CLOSED:
                if (microwaveOvenHW.DoorOpen)
                {
                    microwaveState = MicrowaveOvenState.OPENED;
                    LightOn        = true;
                }
                break;

            case MicrowaveOvenState.RUNNING:
                if (microwaveOvenHW.DoorOpen)
                {
                    microwaveState = MicrowaveOvenState.OPENED;
                    timer.Stop();
                    HeaterOn = false;
                    LightOn  = true;
                }
                break;

            default:
                throw new Exception("Unhandled state: " + microwaveState);
            }
        }
Beispiel #2
0
        public void HeaterRunning_StartButtonPress_StateTest(MicrowaveOvenState expectedResult)
        {
            Mock <IMicrowaveOvenHW> hwMock = new Mock <IMicrowaveOvenHW>();

            Utilities.MicrowaveOvenController controller = new Utilities.MicrowaveOvenController(hwMock.Object, MicrowaveOvenState.RUNNING);

            hwMock.Raise(hw => hw.StartButtonPressed += null, EventArgs.Empty);

            Assert.AreEqual(expectedResult, controller.MicrowaveState);
        }
Beispiel #3
0
        public void DoorClosed_StartButtonPress_StateTest(MicrowaveOvenState expectedResult)
        {
            Mock <IMicrowaveOvenHW> hwMock = new Mock <IMicrowaveOvenHW>();

            Utilities.MicrowaveOvenController controller = new Utilities.MicrowaveOvenController(hwMock.Object, MicrowaveOvenState.CLOSED);

            hwMock.Raise(hw => hw.StartButtonPressed += null, EventArgs.Empty);
            hwMock.Verify(hw => hw.TurnOnHeater());

            Assert.AreEqual(expectedResult, controller.MicrowaveState);
        }
Beispiel #4
0
        public void DoorOpened_StartButtonPress_StateTest(MicrowaveOvenState expectedResult)
        {
            Mock <IMicrowaveOvenHW> hwMock = new Mock <IMicrowaveOvenHW>();

            Utilities.MicrowaveOvenController controller = new Utilities.MicrowaveOvenController(hwMock.Object, MicrowaveOvenState.OPENED);

            hwMock.Setup(hw => hw.DoorOpen).Returns(true);
            hwMock.Raise(hw => hw.StartButtonPressed += null, EventArgs.Empty);

            Assert.AreEqual(expectedResult, controller.MicrowaveState);
        }
Beispiel #5
0
        public MicrowaveOvenController(IMicrowaveOvenHW microwaveOvenHW, MicrowaveOvenState startingState = MicrowaveOvenState.CLOSED)
        {
            this.microwaveOvenHW = microwaveOvenHW ?? throw new Exception("No microwave oven hardware passed!");

            microwaveOvenHW.StartButtonPressed += OnStartButtonPressed;
            microwaveOvenHW.DoorOpenChanged    += OnDoorOpenedChanged;

            timer           = new MicrowaveOvenTimer();
            timer.Finished += OnTimerFinished;

            SetInitialState(startingState);
        }
Beispiel #6
0
        public void DoorOpened_CloseDoor_StateTest(MicrowaveOvenState expectedResult)
        {
            Mock <IMicrowaveOvenHW> hwMock = new Mock <IMicrowaveOvenHW>();

            hwMock.Setup(hw => hw.DoorOpen).Returns(false);

            Utilities.MicrowaveOvenController controller = new Utilities.MicrowaveOvenController(hwMock.Object, MicrowaveOvenState.OPENED);

            hwMock.Raise(hw => hw.DoorOpenChanged += null, false);

            Assert.AreEqual(expectedResult, controller.MicrowaveState);
        }
Beispiel #7
0
        public void HeaterRunning_OpenDoor_StateTest(MicrowaveOvenState expectedResult)
        {
            Mock <IMicrowaveOvenHW> hwMock = new Mock <IMicrowaveOvenHW>();

            hwMock.Setup(hw => hw.DoorOpen).Returns(true);

            Utilities.MicrowaveOvenController controller = new Utilities.MicrowaveOvenController(hwMock.Object, MicrowaveOvenState.RUNNING);

            hwMock.Raise(hw => hw.DoorOpenChanged += null, true);
            hwMock.Verify(hw => hw.TurnOffHeater());

            Assert.AreEqual(expectedResult, controller.MicrowaveState);
        }
Beispiel #8
0
        public void HeaterRunning_TimerFinish_StateTest(MicrowaveOvenState expectedResult)
        {
            Mock <IMicrowaveOvenHW> hwMock = new Mock <IMicrowaveOvenHW>();

            Utilities.MicrowaveOvenController controller = new Utilities.MicrowaveOvenController(hwMock.Object, MicrowaveOvenState.RUNNING);

            ITimer timer = controller.Timer;

            timer.InvokeFinished();

            hwMock.Verify(hw => hw.TurnOffHeater());

            Assert.AreEqual(expectedResult, controller.MicrowaveState);
        }
Beispiel #9
0
        private void OnStartButtonPressed(object sender, EventArgs e)
        {
            switch (microwaveState)
            {
            case MicrowaveOvenState.CLOSED:
                microwaveState = MicrowaveOvenState.RUNNING;
                timer.Start();
                HeaterOn = true;
                break;

            case MicrowaveOvenState.OPENED:
                break;

            case MicrowaveOvenState.RUNNING:
                timer.AddTime();
                break;

            default:
                throw new Exception("Unhandled state: " + microwaveState);
            }
        }
Beispiel #10
0
 private void SetInitialState(MicrowaveOvenState startingState)
 {
     MicrowaveState = startingState;
     LightOn        = MicrowaveState == MicrowaveOvenState.OPENED;
     HeaterOn       = MicrowaveState == MicrowaveOvenState.RUNNING;
 }
Beispiel #11
0
 private void OnTimerFinished(object sender, EventArgs e)
 {
     microwaveState = MicrowaveOvenState.CLOSED;
     timer.Stop();
     HeaterOn = false;
 }