package fr.inria.diversify.testamplification.compare;
import fr.inria.diversify.testamplification.compare.diff.MonitoringPointDiff;
import java.util.ArrayList;
import java.util.List;
/**
* User: Simon
* Date: 06/03/15
* Time: 12:27
*/
@Deprecated
public class MultiMonitoringPoint extends AbstractMonitoringPoint {
List<SingleMonitoringPoint> monitoringPoints;
public MultiMonitoringPoint(int assertId) {
this.id = assertId;
monitoringPoints = new ArrayList<>();
}
public void add(SingleMonitoringPoint m) {
monitoringPoints.add(m);
}
public MultiMonitoringPoint toMulti() {
return this;
}
@Override
public MonitoringPointDiff compare(AbstractMonitoringPoint other) {
MonitoringPointDiff diff = new MonitoringPointDiff(id);
if(other instanceof SingleMonitoringPoint) {
diff.setIsMulti(true);
return diff;
} else {
boolean notSameSize = false;
MultiMonitoringPoint otherCast = (MultiMonitoringPoint) other;
int borne = monitoringPoints.size();
if(this.monitoringPoints.size() != otherCast.monitoringPoints.size()) {
borne = Math.min(this.monitoringPoints.size(), otherCast.monitoringPoints.size());
notSameSize = true;
}
int i = 0;
for(; i< borne; i++) {
MonitoringPointDiff tmp = this.monitoringPoints.get(i).compare(otherCast.monitoringPoints.get(i));
diff.addAllMethodDiff(tmp.getMethodsDiff(), tmp.getValueOriginal(), tmp.getValueSosie());
if (tmp.getClassDiff()) {
notSameSize = true;
break;
}
}
if(notSameSize) {
diff.setMaxSize(i);
}
return diff;
}
}
}