package fr.inria.diversify.testamplification.compare;
import fr.inria.diversify.testamplification.compare.diff.*;
import fr.inria.diversify.util.Log;
import org.json.JSONException;
import java.util.*;
/**
* Created by Simon on 15/01/15.
*/
@Deprecated
public class LogTestComparator {
protected List<Test> originalTests;
protected List<Test> sosieTests;
public int nbPointFix = 0;
public int nbPointNotFix = 0;
public LogTestComparator(Collection<Test> original, Collection<Test> test) {
originalTests = new ArrayList<>(original);
sosieTests = new ArrayList<>(test);
}
public Diff compare() throws JSONException {
Diff result = new Diff();
for(Test original : originalTests) {
for (Test sosie : sosieTests) {
if(original.getSignature().equals(sosie.getSignature())) {
SingleMonitoringPoint.initPoint();
TestDiff testdiff = compareTest(original, sosie);
if(testdiff.size() != 0) {
result.add(testdiff);
}
// Log.info("point fix: {}", SingleMonitoringPoint.nbOfFixPoint());
// Log.info("point non fix: {}",SingleMonitoringPoint.nbOfNotFixPoint());
nbPointFix += SingleMonitoringPoint.nbOfFixPoint();
nbPointNotFix += SingleMonitoringPoint.nbOfNotFixPoint();
// Log.info("total point fix: {}", nbPointFix);
// Log.info("total point non fix: {}",nbPointNotFix);
break;
}
}
}
return result;
}
protected TestDiff compareTest(Test original, Test sosie) {
TestDiff result = new TestDiff(original.getSignature());
Log.trace("compare test {}", original.getSignature());
Set<Integer> allId = new HashSet<>(original.getAllId());
allId.addAll(sosie.getAllId());
for(int id : allId) {
AbstractMonitoringPoint originalMonitoringPoint = original.getMonitoringPoint(id);
AbstractMonitoringPoint sosieMonitoringPoint = sosie.getMonitoringPoint(id);
if(originalMonitoringPoint == null || sosieMonitoringPoint == null) {
MonitoringPointDiff diff = new MonitoringPointDiff(id);
diff.setClassDiff(true);
result.add(diff);
} else {
MonitoringPointDiff diff = originalMonitoringPoint.compare(sosieMonitoringPoint);
if(diff.size() != 0) {
result.add(diff);
Log.trace(diff.toString());
}
}
}
return result;
}
}