package org.pitest.mutationtest.tooling; import org.pitest.coverage.CoverageGenerator; import org.pitest.mutationtest.HistoryStore; import org.pitest.mutationtest.MutationEngineFactory; import org.pitest.mutationtest.MutationResultListenerFactory; import org.pitest.mutationtest.verify.BuildVerifier; import org.pitest.mutationtest.verify.DefaultBuildVerifier; import org.pitest.util.ResultOutputStrategy; public class MutationStrategies { private final HistoryStore history; private final CoverageGenerator coverage; private final MutationResultListenerFactory listenerFactory; private final BuildVerifier buildVerifier; private final MutationEngineFactory factory; private final ResultOutputStrategy output; public MutationStrategies(final MutationEngineFactory factory, final HistoryStore history, final CoverageGenerator coverage, final MutationResultListenerFactory listenerFactory, final ResultOutputStrategy output) { this(factory, history, coverage, listenerFactory, output, new DefaultBuildVerifier()); } private MutationStrategies(final MutationEngineFactory factory, final HistoryStore history, final CoverageGenerator coverage, final MutationResultListenerFactory listenerFactory, final ResultOutputStrategy output, final BuildVerifier buildVerifier) { this.history = history; this.coverage = coverage; this.listenerFactory = listenerFactory; this.buildVerifier = buildVerifier; this.factory = factory; this.output = output; } public HistoryStore history() { return this.history; } public CoverageGenerator coverage() { return this.coverage; } public MutationResultListenerFactory listenerFactory() { return this.listenerFactory; } public BuildVerifier buildVerifier() { return this.buildVerifier; } public MutationEngineFactory factory() { return this.factory; } public ResultOutputStrategy output() { return this.output; } public MutationStrategies with(final MutationEngineFactory factory) { return new MutationStrategies(factory, this.history, this.coverage, this.listenerFactory, this.output, this.buildVerifier); } public MutationStrategies with(final BuildVerifier verifier) { return new MutationStrategies(this.factory, this.history, this.coverage, this.listenerFactory, this.output, verifier); } }