package edu.neu.ccs.demeter.aplib;

import java.io.*;
import java.util.*;
import edu.neu.ccs.demeter.aplib.cd.*;
import edu.neu.ccs.demeter.aplib.sg.*;

/** Testing stub. */
public class APLibTest {
  /** Testing stub: args = { class dictionary file, strategy file } */
  public static void main(String args[]) {
    if (args.length < 2 || args.length > 3) {
      System.err.println("Usage: java edu.neu.ccs.demeter.aplib.APLibTest class-dictionary-file strategy-file [debug]");
      return;
    }
    System.out.println(TraversalGraph.getVersion());
    try {
      Reader cdin = new BufferedReader(new FileReader(args[0]));
      Reader sgin = new BufferedReader(new FileReader(args[1]));
      TraversalGraph.debug = (args.length == 3);
      ClassGraph cg = ClassGraph.readFrom(cdin);
      System.out.println("Expanded class graph:");
      System.out.println(cg);
      Strategy s = Strategy.readFrom(sgin);
      System.out.println("Expanded strategy graph:");
      System.out.println(s);
      long start = System.currentTimeMillis();
      Traversal t = Traversal.compute(s, cg);
      long finish = System.currentTimeMillis();
      System.out.println("Traversal: (" + (finish - start) + "ms)");
      System.out.println(t);
      System.out.println("Traversal subgraph:");
      cg.printTraversalEdges(t, new PrintWriter(System.out, true));
    } catch (Exception e) {
      e.printStackTrace(System.err);
      return;
    }
  }
}

