![JAR search and dependency download from the Maven repository](/logo.png)
autofixture.publicinterface.DefaultInlineGeneratorsFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of autofixturegenerator Show documentation
Show all versions of autofixturegenerator Show documentation
An attempt to reimplement core features of a popular .NET anonymous value generator - AutoFixture - in
Java
The newest version!
package autofixture.publicinterface;
import autofixture.implementationdetails.InstanceCursor;
import autofixture.interfaces.InlineConstrainedGenerator;
import autofixture.interfaces.InlineGeneratorsFactory;
import autofixture.interfaces.InlineInstanceGenerator;
import autofixture.publicinterface.constraints.OtherThanConstraint;
import autofixture.publicinterface.inline.AbsolutePathGenerator;
import autofixture.publicinterface.inline.CharacterGenerator;
import autofixture.publicinterface.inline.ExplodingInstanceGenerator;
import autofixture.publicinterface.inline.FromGenerator;
import autofixture.publicinterface.inline.GenerationConstrainedByValueRejection;
import autofixture.publicinterface.inline.PortNumberGenerator;
import autofixture.publicinterface.inline.RelativePathGenerator;
import autofixture.publicinterface.inline.strings.AlphaStringGenerator;
import autofixture.publicinterface.inline.strings.IdentifierStringGenerator;
import autofixture.publicinterface.inline.strings.LowercaseStringGenerator;
import autofixture.publicinterface.inline.strings.StringContainingSubstringGenerator;
import autofixture.publicinterface.inline.strings.StringNotContainingSubstringsGenerator;
import autofixture.publicinterface.inline.strings.StringOfLengthGenerator;
import autofixture.publicinterface.inline.strings.UppercaseStringGenerator;
import com.google.common.collect.Lists;
import com.google.common.reflect.TypeToken;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
/**
* Created by astral on 28.03.15.
*/
public class DefaultInlineGeneratorsFactory implements InlineGeneratorsFactory {
private static final int MANY = 3;
private static final String ALL_LETTERS = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
private static final InlineInstanceGenerator ALPHA_CHAR_GENERATOR = new CharacterGenerator(
ALL_LETTERS);
private static final String ALL_DIGITS = "1029384756";
private static final InlineInstanceGenerator DIGIT_CHAR_GENERATOR = new CharacterGenerator(
ALL_DIGITS);
private static final InlineInstanceGenerator PORT_NUMBER_GENERATOR = new PortNumberGenerator();
private final LowercaseStringGenerator lowercaseStringGenerator = new LowercaseStringGenerator(MANY, this);
private final UppercaseStringGenerator uppercaseStringGenerator = new UppercaseStringGenerator(MANY, this);
private final AbsolutePathGenerator absolutePathGenerator = new AbsolutePathGenerator(this);
private static final HashMap INDICES_BY_CLASS = new HashMap<>();
private final InlineInstanceGenerator relativePathGenerator = new RelativePathGenerator(this);
@Override
public StringContainingSubstringGenerator stringContaining(final String str) {
return new StringContainingSubstringGenerator(str);
}
@Override
public AlphaStringGenerator alphaString(final int length) {
return new AlphaStringGenerator(ALPHA_CHAR_GENERATOR,
length);
}
@Override
public InlineInstanceGenerator uppercaseString() {
return uppercaseStringGenerator;
}
@Override
public InlineInstanceGenerator lowercaseString() {
return lowercaseStringGenerator;
}
@Override
public InlineInstanceGenerator uppercaseString(final int length) {
return new UppercaseStringGenerator(length, this);
}
@Override
public InlineInstanceGenerator lowercaseString(final int length) {
return new LowercaseStringGenerator(length, this);
}
@Override
public IdentifierStringGenerator identifierString() {
return new IdentifierStringGenerator(
ALPHA_CHAR_GENERATOR, DIGIT_CHAR_GENERATOR, Any.string().length());
}
@Override
public InlineInstanceGenerator digitChar() {
return DIGIT_CHAR_GENERATOR;
}
@Override
public StringNotContainingSubstringsGenerator stringNotContaining(final String... excludedSubstrings) {
return new StringNotContainingSubstringsGenerator(
excludedSubstrings);
}
@Override
public InlineInstanceGenerator alphaChar() {
return ALPHA_CHAR_GENERATOR;
}
@Override
public InlineInstanceGenerator stringOfLength(final int charactersCount) {
return new StringOfLengthGenerator(charactersCount);
}
@Override
public ExplodingInstanceGenerator exploding(final TypeToken instance) {
return new ExplodingInstanceGenerator<>(instance);
}
@Override
public InlineConstrainedGenerator otherThan(final T... omittedValues) {
return new GenerationConstrainedByValueRejection<>(new OtherThanConstraint<>(omittedValues));
}
@Override
public InlineConstrainedGenerator without(final T... omittedValues) {
return new GenerationConstrainedByValueRejection<>(new OtherThanConstraint<>(omittedValues));
}
@Override
public InlineInstanceGenerator portNumber() {
return PORT_NUMBER_GENERATOR;
}
@Override
public InlineInstanceGenerator seededString(String seed) {
return fixture -> seed + fixture.create(String.class);
}
@Override
public AlphaStringGenerator alphaString() {
return new AlphaStringGenerator(ALPHA_CHAR_GENERATOR,
Any.string().length());
}
@Override
public InlineInstanceGenerator from(T[] possibleValues) {
final InstanceCursor cursor = InstanceCursor.from(
INDICES_BY_CLASS,
possibleValues[0].getClass(),
possibleValues.length);
return new FromGenerator<>(cursor, possibleValues);
}
@Override
public InlineInstanceGenerator absolutePath() {
return absolutePathGenerator;
}
@Override
public InlineInstanceGenerator rootPath() {
InlineInstanceGenerator pathInlineInstanceGenerator = f -> Lists.newArrayList(FileSystems.getDefault().getRootDirectories())
.stream()
.findFirst().orElse(Paths.get("C:\\"));
return pathInlineInstanceGenerator;
}
@Override
public InlineInstanceGenerator relativePath() {
return relativePathGenerator;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy