
/**
 * Tests a DerbyCar implementation by creating a few sample cars and calling
 * all of their various methods.
 *
 * @author Zach Tomaszewski
 * @version 10 Mar 2008
 */
public class DemolitionDerby {

  public static void main(String[] args) {

    //create cars
    DerbyCar car1 = new DerbyCar("Batman", "Batmobile", 3000);
    DerbyCar car2 = new DerbyCar("the Mystery Men", "Herkimer Battle Jitney", 2000);
    DerbyCar car3 = new DerbyCar("Michael Knight", "KITT", 2500);

    //print out car details
    System.out.println("Created 3 cars: ");
    System.out.println(car1.toString());
    System.out.println(car2); //calls toString implicitly
    System.out.println(car3);

    //crashes
    System.out.println("\nSmashed " + car1.getDescription() + " into the other two cars.");
    car1.crashInto(car2);
    car1.crashInto(car3);

    System.out.println("After crashes: ");
    System.out.println(car1);
    System.out.println(car2);
    System.out.println(car3);

    //repairs
    System.out.println("\nRepaired " + car2.getDescription() + " by $500.");
    System.out.println("Repaired " + car3.getDescription() + " by $800.");
    car2.repair(500);
    car3.repair(800.0);

    System.out.println("After repairs: ");
    System.out.println(car1);
    System.out.println(car2);
    System.out.println(car3);

    //updating fields
    System.out.println("\nUpdating car details: ");
    System.out.print("Driver of Car " + car1.getIDNumber() + " (");
    System.out.println(car1.getDriver() + ") will be replaced by Robin.");
    car1.setDriver("Robin");

    System.out.println("Changing description of Car " + car2.getIDNumber());
    car2.setDescription("Finest Nonlethal Military Vehicle Ever Made");

    System.out.print("Adding a late entry (");
    DerbyCar car4 = new DerbyCar("Tester John", 0.50);
    System.out.println("with a value of only $" + car4.getValue() + ").");

    System.out.println("After changes: ");
    System.out.println(car1);
    System.out.println(car2);
    System.out.println(car3);
    System.out.println(car4);

  }

}
