public ArrayList<LSDPredicate> getMethodLevelDependency() { String prefix = this.getPrefix(); ArrayList<LSDPredicate> preds = new ArrayList<LSDPredicate>(); preds.add(LSDPredicate.getPredicate(prefix + "_calls")); preds.add(LSDPredicate.getPredicate(prefix + "_accesses")); return preds; }
/** @param args */ public static void main(String[] args) { LSDPredicate foo = LSDPredicate.getPredicate("deleted_field"); assert foo.getName() == "deleted_field"; assert foo.arity() == 1; assert null == LSDPredicate.getPredicate("added_bogusMethod"); foo = LSDPredicate.getPredicate("added_inheritedmethod"); assert foo.getName() == "added_inheritedmethod"; assert foo.arity() == 3; ArrayList<LSDBinding> bindings = new ArrayList<LSDBinding>(); LSDBinding binding = new LSDBinding(new LSDVariable("a", 'm')); bindings.add(binding); binding = new LSDBinding(new LSDVariable("c", 't')); bindings.add(binding); assert false == foo.typeChecks(bindings); binding = new LSDBinding(new LSDVariable("b", 't')); bindings.add(binding); assert true == foo.typeChecks(bindings); bindings = new ArrayList<LSDBinding>(); binding = new LSDBinding(new LSDVariable("a", 'f')); bindings.add(binding); binding = new LSDBinding(new LSDVariable("c", 't')); bindings.add(binding); binding = new LSDBinding(new LSDVariable("b", 't')); bindings.add(binding); assert false == foo.typeChecks(bindings); assert foo.toString().equals("added_inheritedmethod(m,t,t)"); System.out.println("Predicate tests succeeded."); }
public LSDPredicate toClassLevel() { if (isConclusionPredicate()) return LSDPredicate.getPredicate("changed_type"); else { if (predName.contains("accesses") || predName.contains("calls")) { String newPred = predName.substring(0, predName.indexOf('_')) + "_dependency"; return LSDPredicate.getPredicate(newPred); } else return this; } }