package org.pitest.mutationtest;
import java.util.ArrayList;
import java.util.Collection;
import org.pitest.classinfo.ClassName;
/**
* Details of mutation results from a single class.
*
* A single instance will only ever contain mutations relating to a single
* class. The mutations for a class may however be spread across multiple
* instances.
*/
public class ClassMutationResults {
private final Collection<MutationResult> mutations = new ArrayList<MutationResult>();
public ClassMutationResults(final Collection<MutationResult> mutations) {
this.mutations.addAll(mutations);
}
public String getFileName() {
return this.mutations.iterator().next().getDetails().getFilename();
}
public Collection<MutationResult> getMutations() {
return this.mutations;
}
public ClassName getMutatedClass() {
return this.mutations.iterator().next().getDetails().getClassName();
}
public String getPackageName() {
final ClassName name = getMutatedClass();
final int lastDot = name.asJavaName().lastIndexOf('.');
return lastDot > 0 ? name.asJavaName().substring(0, lastDot) : "default";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = (prime * result)
+ ((this.mutations == null) ? 0 : this.mutations.hashCode());
return result;
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final ClassMutationResults other = (ClassMutationResults) obj;
if (this.mutations == null) {
if (other.mutations != null) {
return false;
}
} else if (!this.mutations.equals(other.mutations)) {
return false;
}
return true;
}
@Override
public String toString() {
return "ClassMutationResults [mutations=" + this.mutations + "]";
}
}