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}