package org.pitest.coverage; import static org.pitest.mutationtest.LocationMother.aLocation; import java.util.Collection; import java.util.Collections; import org.pitest.classinfo.ClassName; import org.pitest.mutationtest.engine.Location; import org.pitest.quickbuilder.Builder; import org.pitest.quickbuilder.Generator; import org.pitest.quickbuilder.SequenceBuilder; import org.pitest.quickbuilder.builders.QB; import org.pitest.testapi.Description; public class CoverageMother { public interface BlockLocationBuilder extends SequenceBuilder<BlockLocation> { BlockLocationBuilder withLocation(Builder<Location> location); BlockLocationBuilder withLocation(Location location); BlockLocationBuilder withBlock(int block); Location _Location(); int _Block(); } public interface CoverageResultBuilder extends SequenceBuilder<CoverageResult> { CoverageResultBuilder withTestUnitDescription(Description d); CoverageResultBuilder withExecutionTime(int time); CoverageResultBuilder withVisitedBlocks(Collection<BlockLocation> blocks); CoverageResultBuilder withGreenSuite(boolean green); Description _TestUnitDescription(); int _ExecutionTime(); Collection<BlockLocation> _VisitedBlocks(); boolean _GreenSuite(); } public static BlockLocationBuilder aBlockLocation() { return QB.builder(BlockLocationBuilder.class, blockLocationSeed()) .withBlock(1).withLocation(aLocation()); } public static CoverageResultBuilder aCoverageResult() { final ClassName fooTest = ClassName.fromString("FooTest"); return QB .builder(CoverageResultBuilder.class, CoverageResultSeed()) .withTestUnitDescription( new Description("fooTest", fooTest.asJavaName())) .withExecutionTime(1).withGreenSuite(true) .withVisitedBlocks(Collections.<BlockLocation> emptyList()); } private static Generator<BlockLocationBuilder, BlockLocation> blockLocationSeed() { return new Generator<BlockLocationBuilder, BlockLocation>() { @Override public BlockLocation generate(BlockLocationBuilder b) { return BlockLocation.blockLocation(b._Location(), b._Block()); } }; } private static Generator<CoverageResultBuilder, CoverageResult> CoverageResultSeed() { return new Generator<CoverageResultBuilder, CoverageResult>() { @Override public CoverageResult generate(CoverageResultBuilder b) { return new CoverageResult(b._TestUnitDescription(), b._ExecutionTime(), b._GreenSuite(), b._VisitedBlocks()); } }; } }