com.github.dakusui.jcunit.generators.TupleGenerator Maven / Gradle / Ivy
package com.github.dakusui.jcunit.generators;
/**
*/
import com.github.dakusui.jcunit.constraint.ConstraintManager;
import com.github.dakusui.jcunit.core.*;
import com.github.dakusui.jcunit.core.factor.Factors;
import com.github.dakusui.jcunit.core.tuples.Tuple;
/**
* Implementations of this interface must guarantee that a public constructor without
* any parameters exists.
*/
public interface TupleGenerator extends
JCUnitConfigurablePlugin,
Iterable {
public Factors getFactors();
public void setFactors(Factors factors);
public ConstraintManager getConstraintManager();
public void setConstraintManager(ConstraintManager constraintManager);
public Class> getTargetClass();
public void setTargetClass(Class> klazz);
/**
* Returns a tuple which represents a test case identified by {@code testId}
*/
public Tuple get(long testId);
/**
* Returns next valid id.
*/
public long nextId(long testId);
/**
* Returns the first valid id.
*/
public long firstId();
/**
* Returns total number of test cases generated by the implementations of this interface.
*/
public long size();
public static class Builder {
private Class extends TupleGenerator> tupleGeneratorClass;
private Factors factors;
private ConstraintManager constraintManager;
private Param[] parameters;
private Class> targetClass;
public Builder() {
}
public Builder(TupleGenerator.Builder base) {
this.tupleGeneratorClass = base.tupleGeneratorClass;
this.factors = base.factors;
this.constraintManager = base.getConstraintManager();
this.parameters = base.parameters;
}
public Builder setTupleGeneratorClass(
Class extends TupleGenerator> tupleGeneratorClass) {
this.tupleGeneratorClass = tupleGeneratorClass;
return this;
}
public Builder setFactors(Factors factors) {
this.factors = factors;
return this;
}
public Builder setConstraintManager(ConstraintManager constraintManager) {
this.constraintManager = constraintManager;
return this;
}
public Builder setParameters(Param[] parameters) {
this.parameters = parameters;
return this;
}
public Builder setTargetClass(Class> targetClass) {
this.targetClass = targetClass;
return this;
}
public TupleGenerator build() {
Checks.checknotnull(this.constraintManager);
Checks.checknotnull(this.tupleGeneratorClass);
Checks.checknotnull(this.factors);
Checks.checknotnull(this.constraintManager);
TupleGenerator ret = Utils.createNewInstanceUsingNoParameterConstructor(
this.tupleGeneratorClass);
ret.setFactors(this.factors);
ret.setConstraintManager(this.constraintManager);
ret.setTargetClass(this.targetClass);
ret.init(this.parameters);
return ret;
}
public ConstraintManager getConstraintManager() {
return constraintManager;
}
public Factors getFactors() {
return factors;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy