public class ClosestPairTest {
  
  public static boolean testFindNone() {
    int[] toTest = {1, 2, 3, 4, 5};
    return ClosestPair.find(toTest) == null;
  }
  
  public static boolean testFindLongest() {
    int[] toTest = {10, 9, 11, -3, 5, 10};
    return sameArray(ClosestPair.find(toTest),toTest);
  }
  
  public static boolean testFindShortest() {
    int[] toTest = {5, 12, 3, 3, 10};
    int[] expected = {3,3};
    return sameArray(ClosestPair.find(toTest),expected);
  }
  
  public static boolean testFindDifficult() {
    int[] toTest = {4, -2, 10, 4, 9, 2, 10, 2, 20};
    int[] expected = {2,10,2};
    return sameArray(ClosestPair.find(toTest),expected);
  }
  
  private static boolean sameArray( int[] a, int[] b ) {
    if( (a == null) && (b == null) ) return true;
    if( (a == null) || (b == null) ) return false;
    if( a.length != b.length ) return false;
    
    for( int i = 0; i < a.length; ++i ) {
      if( a[i] != b[i] ) return false;
    }
    return true;
  }
  
  public static void main(String[] args) {
    boolean passAll = true;

    if( testFindNone() )
      System.out.println("pass " + "testFindNone");
    else {
      System.out.println("FAIL for test " + "testFindNone");
      passAll = false;
    }

    if( testFindLongest() )
      System.out.println("pass " + "testFindLongest");
    else {
      System.out.println("FAIL for test " + "testFindLongest");
      passAll = false;
    }

    if( testFindShortest() )
      System.out.println("pass " + "testFindShortest");
    else {
      System.out.println("FAIL for test " + "testFindShortest");
      passAll = false;
    }

    if( testFindDifficult() )
      System.out.println("pass " + "testFindDifficult");
    else {
      System.out.println("FAIL for test " + "testFindDifficult");
      passAll = false;
    }

    if( true == passAll )
      System.out.println("All tests passed.");
  }
}