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); }
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); }