Ejemplo n.º 1
0
        public void GarageDoorTest()
        {
            Remotes    remote = new Remotes();
            GarageDoor door   = new GarageDoor();

            Assert.AreEqual(door.LightState, GarageDoor.LightStates.Off);
            Assert.AreEqual(door.DoorState, GarageDoor.DoorStates.Down);
            DoorUpCommand   doorUp   = new DoorUpCommand(door);
            DoorDownCommand doorDown = new DoorDownCommand(door);

            remote.SetCommand(doorUp);
            remote.ButtonWasPressed();

            // Make sure that the door went up and the light turned on
            Assert.AreEqual(door.DoorState, GarageDoor.DoorStates.Up);
            Assert.AreEqual(door.LightState, GarageDoor.LightStates.On);

            remote.ButtonWasPressed();

            // Make sure that the door stayed up and the light stayed on after a second door up command
            Assert.AreEqual(door.DoorState, GarageDoor.DoorStates.Up);
            Assert.AreEqual(door.LightState, GarageDoor.LightStates.On);

            door.AddObstruction();

            remote.SetCommand(doorDown);
            remote.ButtonWasPressed();

            // Make sure the door did not start closing when an obstruction was in the way
            Assert.AreEqual(door.DoorState, GarageDoor.DoorStates.Up);

            door.RemoveObstruction();
            remote.ButtonWasPressed();

            // Make sure that the door started ot go down when the button was pressed
            Assert.AreEqual(door.DoorState, GarageDoor.DoorStates.GoingDown);

            door.AddObstruction();

            remote.ButtonWasPressed();

            // Make sure the door detected that something was in the way when is was coming down and went back up
            Assert.AreEqual(door.DoorState, GarageDoor.DoorStates.Up);

            door.RemoveObstruction();

            remote.ButtonWasPressed();
            remote.ButtonWasPressed();


            // Make sure that when there are no obstructions and the button is pressed twice that the door closes
            // and the light turns off
            Assert.AreEqual(door.DoorState, GarageDoor.DoorStates.Down);
            Assert.AreEqual(door.LightState, GarageDoor.LightStates.Off);
        }
Ejemplo n.º 2
0
        public void RemoteTest()
        {
            Remote remote = new Remote();

            Light      livingRoomLight = new Light();
            Light      kitchenLight    = new Light();
            Fan        fan             = new Fan();
            GarageDoor door            = new GarageDoor();
            Stero      stero           = new Stero();

            LightOnCommand       livingRoomLightOn  = new LightOnCommand(livingRoomLight);
            LightOnCommand       kitchenLightOn     = new LightOnCommand(kitchenLight);
            LightOffCommand      livingRoomLightOff = new LightOffCommand(livingRoomLight);
            LightOffCommand      kitchenlightOff    = new LightOffCommand(kitchenLight);
            FanHighCommand       fanHighCommand     = new FanHighCommand(fan);
            FanOffCommand        fanOffCommand      = new FanOffCommand(fan);
            DoorUpCommand        doorUpCommand      = new DoorUpCommand(door);
            DoorDownCommand      doorDownCommand    = new DoorDownCommand(door);
            SteroOnWithCDCommand steroOn            = new SteroOnWithCDCommand(stero);
            SteroOffCommand      steroOff           = new SteroOffCommand(stero);

            remote.SetCommnd(0, livingRoomLightOn, livingRoomLightOff);
            remote.SetCommnd(1, kitchenLightOn, kitchenlightOff);
            remote.SetCommnd(2, fanHighCommand, fanOffCommand);
            remote.SetCommnd(3, doorUpCommand, doorDownCommand);
            remote.SetCommnd(4, steroOn, steroOff);


            Assert.AreEqual(Light.States.Off, livingRoomLight.CurrentState);
            Assert.AreEqual(Light.States.Off, kitchenLight.CurrentState);
            Assert.AreEqual(Fan.Speed.Off, fan.CurrentSpeed);
            Assert.AreEqual(GarageDoor.DoorStates.Down, door.DoorState);
            Assert.AreEqual(GarageDoor.LightStates.Off, door.LightState);
            Assert.AreEqual((int)0, stero.Volume);
            Assert.AreEqual(Stero.State.Off, stero.CurrentState);

            remote.OnButtonPressed(0);
            Assert.AreEqual(Light.States.On, livingRoomLight.CurrentState);
            Assert.AreEqual(Light.States.Off, kitchenLight.CurrentState);
            Assert.AreEqual(Fan.Speed.Off, fan.CurrentSpeed);
            Assert.AreEqual(GarageDoor.DoorStates.Down, door.DoorState);
            Assert.AreEqual(GarageDoor.LightStates.Off, door.LightState);
            Assert.AreEqual((int)0, stero.Volume);
            Assert.AreEqual(Stero.State.Off, stero.CurrentState);

            remote.OnButtonPressed(1);
            Assert.AreEqual(Light.States.On, livingRoomLight.CurrentState);
            Assert.AreEqual(Light.States.On, kitchenLight.CurrentState);
            Assert.AreEqual(Fan.Speed.Off, fan.CurrentSpeed);
            Assert.AreEqual(GarageDoor.DoorStates.Down, door.DoorState);
            Assert.AreEqual(GarageDoor.LightStates.Off, door.LightState);
            Assert.AreEqual((int)0, stero.Volume);
            Assert.AreEqual(Stero.State.Off, stero.CurrentState);

            remote.OnButtonPressed(2);
            Assert.AreEqual(Fan.Speed.High, fan.CurrentSpeed);
            Assert.AreEqual(GarageDoor.DoorStates.Down, door.DoorState);
            Assert.AreEqual(GarageDoor.LightStates.Off, door.LightState);
            Assert.AreEqual((int)0, stero.Volume);
            Assert.AreEqual(Stero.State.Off, stero.CurrentState);

            remote.OnButtonPressed(3);
            Assert.AreEqual(GarageDoor.DoorStates.Up, door.DoorState);
            Assert.AreEqual(GarageDoor.LightStates.On, door.LightState);
            Assert.AreEqual((int)0, stero.Volume);
            Assert.AreEqual(Stero.State.Off, stero.CurrentState);

            remote.OnButtonPressed(4);
            Assert.AreEqual((int)11, stero.Volume);
            Assert.AreEqual(Stero.State.CD, stero.CurrentState);

            remote.OffButtonPressed(0);
            Assert.AreEqual(Light.States.Off, livingRoomLight.CurrentState);
            Assert.AreEqual(Light.States.On, kitchenLight.CurrentState);
            Assert.AreEqual(Fan.Speed.High, fan.CurrentSpeed);
            Assert.AreEqual(GarageDoor.DoorStates.Up, door.DoorState);
            Assert.AreEqual(GarageDoor.LightStates.On, door.LightState);
            Assert.AreEqual((int)11, stero.Volume);
            Assert.AreEqual(Stero.State.CD, stero.CurrentState);

            remote.OffButtonPressed(1);
            Assert.AreEqual(Light.States.Off, livingRoomLight.CurrentState);
            Assert.AreEqual(Light.States.Off, kitchenLight.CurrentState);
            Assert.AreEqual(GarageDoor.DoorStates.Up, door.DoorState);
            Assert.AreEqual(GarageDoor.LightStates.On, door.LightState);
            Assert.AreEqual((int)11, stero.Volume);
            Assert.AreEqual(Stero.State.CD, stero.CurrentState);

            remote.OffButtonPressed(2);
            Assert.AreEqual(Light.States.Off, livingRoomLight.CurrentState);
            Assert.AreEqual(Light.States.Off, kitchenLight.CurrentState);
            Assert.AreEqual(Fan.Speed.Off, fan.CurrentSpeed);
            Assert.AreEqual(GarageDoor.DoorStates.Up, door.DoorState);
            Assert.AreEqual(GarageDoor.LightStates.On, door.LightState);
            Assert.AreEqual((int)11, stero.Volume);
            Assert.AreEqual(Stero.State.CD, stero.CurrentState);

            remote.OffButtonPressed(3);
            remote.OffButtonPressed(3);
            Assert.AreEqual(Light.States.Off, livingRoomLight.CurrentState);
            Assert.AreEqual(Light.States.Off, kitchenLight.CurrentState);
            Assert.AreEqual(Fan.Speed.Off, fan.CurrentSpeed);
            Assert.AreEqual(GarageDoor.DoorStates.Down, door.DoorState);
            Assert.AreEqual(GarageDoor.LightStates.Off, door.LightState);
            Assert.AreEqual((int)11, stero.Volume);
            Assert.AreEqual(Stero.State.CD, stero.CurrentState);

            remote.OffButtonPressed(4);
            Assert.AreEqual(Light.States.Off, livingRoomLight.CurrentState);
            Assert.AreEqual(Light.States.Off, kitchenLight.CurrentState);
            Assert.AreEqual(Fan.Speed.Off, fan.CurrentSpeed);
            Assert.AreEqual(GarageDoor.DoorStates.Down, door.DoorState);
            Assert.AreEqual(GarageDoor.LightStates.Off, door.LightState);
            Assert.AreEqual((int)0, stero.Volume);
            Assert.AreEqual(Stero.State.Off, stero.CurrentState);
        }