public class HW8tester {
  private static boolean valuesMatch(TwoToneCycle ttObj,
                                     int freq1, int freq2,
                                     double pon, double poff) {
    if (ttObj.getFrequency1() != freq1) {
      return false ;
    }
    if (ttObj.getFrequency2() != freq2) {
      return false ;
    }
    if (ttObj.getOnPeriod() < pon-.001 || ttObj.getOnPeriod() > pon+.001) {
      return false ;
    }
    if (ttObj.getOffPeriod() < poff-.001 || ttObj.getOffPeriod() > poff+.001) {
      return false ;
    }  
    return true ;
  }
  
  public static void main(String[] args) {
    TwoToneCycle ringbackT = new TwoToneCycle(1000, 2000, Math.PI, Math.E) ;
    System.out.println(ringbackT.toString()) ;
    if (!valuesMatch(ringbackT, 1000, 2000, Math.PI, Math.E)) {
      System.out.println("Problem with constructor") ;
      return ;
    }
    ringbackT.setFrequency1(201) ;
    if (!valuesMatch(ringbackT, 201, 2000, Math.PI, Math.E)) {
      System.out.println("Problem with frequency1") ;
      return ;
    }
    ringbackT.setFrequency2(255) ;
    if (!valuesMatch(ringbackT, 201, 255, Math.PI, Math.E)) {
      System.out.println("Problem with frequency2") ;
      return ;
    }

    ringbackT.setFrequency(2008) ;
    if (!valuesMatch(ringbackT, 2008, 2008, Math.PI, Math.E)) {
      System.out.println("Problem with setFrequency") ;
      return ;
    }

    ringbackT.setOnPeriod(3.333333) ;
    if (!valuesMatch(ringbackT, 2008, 2008, 3.333333, Math.E)) {
      System.out.println("Problem with setOnPeriod") ;
      return ;
    }

    ringbackT.setOffPeriod(7.777777) ;
    if (!valuesMatch(ringbackT, 2008, 2008, 3.333333, 7.777777)) {
      System.out.println("Problem with setOffPeriod") ;
      return ;
    }
    
    System.out.println("Testing the constructors and makeSound\n") ;
    TwoToneCycle ringbackUS = new TwoToneCycle() ;
    ringbackUS.makeSound().explore() ;
    TwoToneCycle ringbackFR = new TwoToneCycle(400, 1.65, 3.35) ;
    ringbackFR.makeSound().explore() ;
    TwoToneCycle ringbackJP = new TwoToneCycle(384, 416, 1.0, 3.0) ;
    ringbackJP.makeSound().explore() ;
  }
}