package org.pitest.mutationtest.report.html;
import static org.pitest.mutationtest.DetectionStatus.KILLED;
import static org.pitest.mutationtest.DetectionStatus.MEMORY_ERROR;
import static org.pitest.mutationtest.DetectionStatus.NON_VIABLE;
import static org.pitest.mutationtest.DetectionStatus.NOT_STARTED;
import static org.pitest.mutationtest.DetectionStatus.NO_COVERAGE;
import static org.pitest.mutationtest.DetectionStatus.RUN_ERROR;
import static org.pitest.mutationtest.DetectionStatus.STARTED;
import static org.pitest.mutationtest.DetectionStatus.SURVIVED;
import static org.pitest.mutationtest.DetectionStatus.TIMED_OUT;
import java.io.Serializable;
import java.util.Comparator;
import java.util.EnumMap;
import org.pitest.mutationtest.DetectionStatus;
import org.pitest.mutationtest.MutationResult;
class ResultComparator implements Comparator<MutationResult>, Serializable {
private static final long serialVersionUID = 1L;
private static final EnumMap<DetectionStatus, Integer> RANK = new EnumMap<DetectionStatus, Integer>(
DetectionStatus.class);
static {
RANK.put(KILLED, 4);
RANK.put(SURVIVED, 0);
RANK.put(TIMED_OUT, 2);
RANK.put(NON_VIABLE, 3);
RANK.put(MEMORY_ERROR, 1);
RANK.put(NOT_STARTED, 1);
RANK.put(STARTED, 1);
RANK.put(RUN_ERROR, 0);
RANK.put(NO_COVERAGE, 0);
}
@Override
public int compare(MutationResult o1, MutationResult o2) {
return getRanking(o1.getStatus()) - getRanking(o2.getStatus());
}
private int getRanking(DetectionStatus status) {
return RANK.get(status);
}
}