module command.remoteundostatus.app;

import command.remoteundostatus.remotecontrol;
import command.remoteundostatus.lightoncommand;
import command.remoteundostatus.lightoffcommand;
import command.remoteundostatus.light;
import command.remoteundostatus.ceilingfan;
import command.remoteundostatus.ceilingfanoffcommand;
import command.remoteundostatus.ceilingfanhighcommand;
import command.remoteundostatus.ceilingfanmediumcommand;
import command.remoteundostatus.ceilingfanlowcommand;
import command.remoteundostatus.garagedoorupcommand;
import command.remoteundostatus.garagedoordowncommand;
import command.remoteundostatus.garagedoor;
import command.remoteundostatus.stereoonwithcdcommand;
import command.remoteundostatus.stereo;
import command.remoteundostatus.stereooffcommand;
import std.stdio : writeln;

void main()
{
    auto remoteControl = new RemoteControl();

    auto ceilingFan = new CeilingFan("Living Room");

    remoteControl.setCommand(0, new CeilingFanMediumCommand(ceilingFan), new CeilingFanOffCommand(ceilingFan));
    remoteControl.setCommand(1, new CeilingFanHighCommand(ceilingFan), new CeilingFanOffCommand(ceilingFan));

    remoteControl.onButtonWasPushed(0);
    remoteControl.offButtonWasPushed(0);
    writeln(remoteControl);
    remoteControl.undoButtonWasPushed();
    remoteControl.onButtonWasPushed(1);
    writeln(remoteControl);
    remoteControl.undoButtonWasPushed();
}