001package daikon.test;
002
003import daikon.PptTopLevel;
004import daikon.ProglangType;
005import daikon.VarComparabilityNone;
006import daikon.VarInfo;
007import daikon.VarInfoAux;
008import java.util.ArrayList;
009import java.util.List;
010
011/** A collection of useful helper methods that are common to many different individual tests. */
012public class Common {
013  private Common() {
014    throw new Error("do not instantiate");
015  }
016
017  @SuppressWarnings("interning")
018  public static VarInfo newIntVarInfo(String name) {
019    return new VarInfo(
020        name, ProglangType.INT, ProglangType.INT, VarComparabilityNone.it, VarInfoAux.getDefault());
021  }
022
023  @SuppressWarnings("interning")
024  public static VarInfo makeHashcodeVarInfo(String name) {
025    return new VarInfo(
026        name,
027        ProglangType.HASHCODE,
028        ProglangType.HASHCODE,
029        VarComparabilityNone.it,
030        VarInfoAux.getDefault());
031  }
032
033  @SuppressWarnings("interning")
034  public static VarInfo makeIntArrayVarInfo(String name) {
035    return new VarInfo(
036        name,
037        ProglangType.INT_ARRAY,
038        ProglangType.INT_ARRAY,
039        VarComparabilityNone.it,
040        VarInfoAux.getDefault());
041  }
042
043  @SuppressWarnings("interning")
044  public static VarInfo makeHashcodeArrayVarInfo(String name) {
045    return new VarInfo(
046        name,
047        ProglangType.HASHCODE_ARRAY,
048        ProglangType.HASHCODE_ARRAY,
049        VarComparabilityNone.it,
050        VarInfoAux.getDefault());
051  }
052
053  public static PptTopLevel makePptTopLevel(String pptname, VarInfo[] vars) {
054
055    // If any of the variables have enclosing variables, include those in
056    // the ppt as well.
057    List<VarInfo> vlist = new ArrayList<>();
058    for (VarInfo vi : vars) {
059      if (vi.enclosing_var != null) {
060        vlist.add(vi.enclosing_var);
061      }
062    }
063    if (vlist.size() > 0) {
064      VarInfo[] full = new VarInfo[vars.length + vlist.size()];
065      int index = 0;
066      for (VarInfo vi : vars) {
067        full[index++] = vi;
068      }
069      for (VarInfo vi : vlist) {
070        full[index++] = vi;
071      }
072      vars = full;
073    }
074
075    PptTopLevel ppt = new PptTopLevel(pptname, vars);
076    return ppt;
077  }
078}