public void MacroCommandtest() { Remote remote = new Remote(); Light light = new Light(); Stero stero = new Stero(); Fan fan = new Fan(); LightOnCommand lightOn = new LightOnCommand(light); SteroOnWithCDCommand steroOn = new SteroOnWithCDCommand(stero); FanHighCommand fanOn = new FanHighCommand(fan); LightOffCommand lightOff = new LightOffCommand(light); SteroOffCommand steroOff = new SteroOffCommand(stero); FanOffCommand fanOff = new FanOffCommand(fan); MacroCommand macroCommandOn = new MacroCommand(new ICommand[] { lightOn, steroOn, fanOn }); MacroCommand macroCommandOff = new MacroCommand(new ICommand[] { lightOff, steroOff, fanOff }); remote.SetCommnd(0, macroCommandOn, macroCommandOff); remote.OnButtonPressed(0); Assert.AreEqual(Light.States.On, light.CurrentState); Assert.AreEqual(Stero.State.CD, stero.CurrentState); Assert.AreEqual((int)11, stero.Volume); Assert.AreEqual(Fan.Speed.High, fan.CurrentSpeed); remote.OffButtonPressed(0); Assert.AreEqual(Light.States.Off, light.CurrentState); Assert.AreEqual(Stero.State.Off, stero.CurrentState); Assert.AreEqual((int)0, stero.Volume); Assert.AreEqual(Fan.Speed.Off, fan.CurrentSpeed); }
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); }