package org.pitest.mutationtest;
import org.pitest.classinfo.ClassName;
import org.pitest.mutationtest.engine.Location;
import org.pitest.mutationtest.engine.MethodName;
import org.pitest.mutationtest.engine.MutationIdentifier;
import org.pitest.quickbuilder.Builder;
import org.pitest.quickbuilder.Generator;
import org.pitest.quickbuilder.SequenceBuilder;
import org.pitest.quickbuilder.builders.QB;
public class LocationMother {
public interface MutationIdentifierBuilder extends
SequenceBuilder<MutationIdentifier> {
MutationIdentifierBuilder withLocation(Location location);
MutationIdentifierBuilder withLocation(Builder<Location> location);
MutationIdentifierBuilder withIndex(int index);
MutationIdentifierBuilder withMutator(String mutator);
Location _Location();
int _Index();
String _Mutator();
}
public interface LocationBuilder extends SequenceBuilder<Location> {
LocationBuilder withClass(ClassName clazz);
LocationBuilder withMethod(String method);
LocationBuilder withMethodDescription(String methodDesc);
ClassName _Class();
String _Method();
String _MethodDescription();
}
public static LocationBuilder aLocation(String clazz) {
return aLocation().withClass(ClassName.fromString(clazz));
}
public static LocationBuilder aLocation() {
return QB.builder(LocationBuilder.class, locationSeed())
.withClass(ClassName.fromString("clazz")).withMethod("method")
.withMethodDescription("()I");
}
private static Generator<LocationBuilder, Location> locationSeed() {
return new Generator<LocationBuilder, Location>() {
@Override
public Location generate(LocationBuilder b) {
return Location.location(b._Class(),
MethodName.fromString(b._Method()), b._MethodDescription());
}
};
}
public static MutationIdentifierBuilder aMutationId() {
return QB.builder(MutationIdentifierBuilder.class, idSeed())
.withLocation(aLocation()).withIndex(1).withMutator("mutator");
}
private static Generator<MutationIdentifierBuilder, MutationIdentifier> idSeed() {
return new Generator<MutationIdentifierBuilder, MutationIdentifier>() {
@Override
public MutationIdentifier generate(MutationIdentifierBuilder b) {
return new MutationIdentifier(b._Location(), b._Index(), b._Mutator());
}
};
}
}