Package de.cuioss.test.generator
Class Generators
java.lang.Object
de.cuioss.test.generator.Generators
Provides factory methods for creating
TypedGenerators for various Java types.
All generators are thread-safe and suitable for concurrent use in tests.
The generators are organized into the following categories:
- Primitive Types and their Wrappers (boolean, int, long, etc.)
- String Generators (empty, non-empty, letters only)
- Date and Time Types (Date, LocalDate, ZonedDateTime, etc.)
- Collection Types (List, Set, SortedSet)
- Common Java Types (URL, Locale, Class)
Usage examples from tests:
// Basic generators
TypedGenerator<String> generator = Generators.strings("X", 2, 2);
String value = generator.next();
// Fixed values
TypedGenerator<String> generator = Generators.fixedValues("A", "B", "C");
String value = generator.next();
// Enum values
Optional<TypedGenerator<TimeUnit>> generator = Generators.enumValuesIfAvailable(TimeUnit.class);
TypedGenerator<TimeUnit> generator = Generators.enumValues(TimeUnit.class);
// Unique values
TypedGenerator<Integer> baseGen = Generators.integers(1, 10);
TypedGenerator<Integer> uniqueGen = Generators.uniqueValues(baseGen);
Set<Integer> seen = new HashSet<>();
for (int i = 0; i < 10; i++) {
seen.add(uniqueGen.next());
}
- Since:
- 1.0
- Author:
- Oliver Wolff
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> CollectionGenerator<T> asCollectionGenerator(TypedGenerator<T> source) Factory method for creating aCollectionGeneratorgeneratingCollections from the givenTypedGenerator.static TypedGenerator<Boolean> Factory method for creating aTypedGeneratorforBoolean.static TypedGenerator<Boolean> booleans()Factory method for creating aTypedGeneratorfor boolean primitives.static TypedGenerator<Byte> Factory method for creating aTypedGeneratorforByte.static TypedGenerator<Byte> bytes()Factory method for creating aTypedGeneratorfor byte primitives.static TypedGenerator<Character> Factory method for creating aTypedGeneratorforCharacter.static TypedGenerator<Character> Factory method for creating aTypedGeneratorfor char primitives.static TypedGenerator<Class> Factory method for creating aTypedGeneratorarbitraryClassObjectsstatic TypedGenerator<Date> dates()Factory method for creating aTypedGeneratorforDate.static TypedGenerator<Double> Factory method for creating aTypedGeneratorforDouble.static TypedGenerator<Double> doubles()Factory method for creating aTypedGeneratorfor double primitives.static TypedGenerator<Double> doubles(double low, double high) Factory method for creating aTypedGeneratorforDouble.static <T extends Enum<T>>
TypedGenerator<T> enumValues(Class<T> type) Factory method for creating a generator for a given enum.static <T> Optional<TypedGenerator<T>> enumValuesIfAvailable(Class<T> type) Factory method for creating a generator for a possible given enum.static <T> TypedGenerator<T> fixedValues(Class<T> type, Iterable<T> values) Factory method for creating aTypedGeneratorfor a number of fixed values.static <T> TypedGenerator<T> fixedValues(Class<T> type, T... values) Factory method for creating aTypedGeneratorfor a number of fixed values.static <T> TypedGenerator<T> fixedValues(Iterable<T> values) Factory method for creating aTypedGeneratorfor a number of fixed values.static <T> TypedGenerator<T> fixedValues(T... values) Factory method for creating aTypedGeneratorfor a number of fixed values.static TypedGenerator<Float> Factory method for creating aTypedGeneratorforFloat.static TypedGenerator<Float> floats()Factory method for creating aTypedGeneratorfor float primitives.static TypedGenerator<Float> floats(float low, float high) Factory method for creating aTypedGeneratorforFloat.static TypedGenerator<Integer> Factory method for creating aTypedGeneratorforInteger.static TypedGenerator<Integer> integers()Factory method for creating aTypedGeneratorfor integer primitives.static TypedGenerator<Integer> integers(int low, int high) Factory method for creating aTypedGeneratorforInteger.static TypedGenerator<String> Factory method for creating aTypedGeneratorfor sensible / simple non empty letter Strings.static TypedGenerator<String> letterStrings(int minSize, int maxSize) Factory method for creating aTypedGeneratorfor letter Strings.static TypedGenerator<LocalDate> Factory method for creating aTypedGeneratorforLocalDate.static TypedGenerator<LocalDateTime> Factory method for creating aTypedGeneratorforLocalDateTime.static TypedGenerator<Locale> locales()Factory method for creating aTypedGeneratorarbitraryLocaleObjectsstatic TypedGenerator<LocalTime> Factory method for creating aTypedGeneratorforLocalTime.static TypedGenerator<Long> Factory method for creating aTypedGeneratorforLong.static TypedGenerator<Long> longs()Factory method for creating aTypedGeneratorfor long primitives.static TypedGenerator<Long> longs(long low, long high) Factory method for creating aTypedGeneratorfor Long primitives.static TypedGenerator<String> Factory method for creating aTypedGeneratorfor non-blank Strings.static TypedGenerator<String> Factory method for creating aTypedGeneratorfor non-empty Strings.static TypedGenerator<Number> numbers()Factory method for creating aTypedGeneratorforNumber.static TypedGenerator<RuntimeException> Factory method for creating aTypedGeneratorarbitraryRuntimeExceptionObjectsstatic TypedGenerator<Serializable> Factory method for creating aTypedGeneratorarbitrarySerializableObjectsstatic TypedGenerator<Short> Factory method for creating aTypedGeneratorforShort.static TypedGenerator<Short> shorts()Factory method for creating aTypedGeneratorfor short primitives.static TypedGenerator<String> strings()Factory method for creating aTypedGeneratorfor any Strings, may be null or empty.static TypedGenerator<String> strings(int minSize, int maxSize) Factory method for creating aTypedGeneratorfor Strings.static TypedGenerator<String> Factory method for creating strings with given characters and size.static TypedGenerator<Temporal> Factory method for creating aTypedGeneratorforTemporals.static TypedGenerator<Throwable> Factory method for creating aTypedGeneratorarbitraryThrowableObjectsstatic TypedGenerator<TimeZone> Factory method for creating aTypedGeneratorforTimeZone.static <T> TypedGenerator<T> uniqueValues(TypedGenerator<T> source) Factory method for creating aTypedGeneratorgenerating unique values.static TypedGenerator<URL> urls()Factory method for creating aTypedGeneratorarbitraryURLs Objectsstatic TypedGenerator<ZonedDateTime> Factory method for creating aTypedGeneratorforZonedDateTime.static TypedGenerator<ZoneId> zoneIds()Factory method for creating aTypedGeneratorforZoneId.static TypedGenerator<ZoneOffset> Factory method for creating aTypedGeneratorforZoneOffset.
-
Constructor Details
-
Generators
public Generators()
-
-
Method Details
-
enumValuesIfAvailable
Factory method for creating a generator for a possible given enum.Example from tests:
Optional<TypedGenerator<TimeUnit>> generator = Generators.enumValuesIfAvailable(TimeUnit.class); assertTrue(generator.isPresent()); assertNotNull(generator.get().next());
- Type Parameters:
T- The enum type- Parameters:
type- to be checked, must represent an enum- Returns:
- an
Optionalcontaining the correspondingTypedGeneratorif the given type is an enum,Optional.empty()otherwise - Throws:
NullPointerException- if type is null
-
enumValues
Factory method for creating a generator for a given enum.Example from tests:
TypedGenerator<TimeUnit> generator = Generators.enumValues(TimeUnit.class); TimeUnit value = generator.next(); assertNotNull(value);
- Type Parameters:
T- The enum type- Parameters:
type- to be checked, must represent an enum- Returns:
- A
TypedGeneratorfor the given enum - Throws:
IllegalArgumentException- if type is not an enumNullPointerException- if type is null
-
nonEmptyStrings
Factory method for creating aTypedGeneratorfor non-empty Strings.- Returns:
- a
TypedGeneratorfor non-empty Strings
-
nonBlankStrings
Factory method for creating aTypedGeneratorfor non-blank Strings.- Returns:
- a
TypedGeneratorfor non-blank Strings.
-
strings
Factory method for creating aTypedGeneratorfor Strings.- Parameters:
minSize- lower bound of sizemaxSize- upper bound of size- Returns:
- a
TypedGeneratorfor Strings
-
strings
Factory method for creating strings with given characters and size.Example from tests:
TypedGenerator<String> generator = Generators.strings("X", 2, 2); String result = generator.next(); assertEquals(2, result.length()); assertTrue(result.matches("^X+$"));- Parameters:
chars- to be generatedminSize- lower bound of sizemaxSize- upper bound of size- Returns:
- a
TypedGeneratorfor Strings - Throws:
IllegalArgumentException- if minSize > maxSize or either is negativeNullPointerException- if chars is null
-
strings
Factory method for creating aTypedGeneratorfor any Strings, may be null or empty.- Returns:
- a
TypedGeneratorfor Strings
-
letterStrings
Factory method for creating aTypedGeneratorfor letter Strings.- Parameters:
minSize- lower bound of sizemaxSize- upper bound of size- Returns:
- a
TypedGeneratorfor Strings
-
letterStrings
Factory method for creating aTypedGeneratorfor sensible / simple non empty letter Strings. The mininmal size is 3, the maximal size between 3 and 256 characters- Returns:
- a
TypedGeneratorfor Strings
-
fixedValues
Factory method for creating aTypedGeneratorfor a number of fixed values.Example from tests:
TypedGenerator<String> generator = Generators.fixedValues("A", "B", "C"); assertEquals("A", generator.next()); assertEquals("B", generator.next()); assertEquals("C", generator.next()); assertEquals("A", generator.next()); // Cycles back to start- Type Parameters:
T- The type of values- Parameters:
values- to be generated from.- Returns:
- a
TypedGeneratorfor the given values - Throws:
IllegalArgumentException- if values is emptyNullPointerException- if values is null
-
fixedValues
Factory method for creating aTypedGeneratorfor a number of fixed values.- Parameters:
values- to be generated from.- Returns:
- a
TypedGeneratorfor the given values
-
fixedValues
Factory method for creating aTypedGeneratorfor a number of fixed values.- Parameters:
type- of the valuevalues- to be generated from.- Returns:
- a
TypedGeneratorfor the given values
-
fixedValues
Factory method for creating aTypedGeneratorfor a number of fixed values.- Parameters:
values- to be generated from.- Returns:
- a
TypedGeneratorfor the given values
-
uniqueValues
Factory method for creating aTypedGeneratorgenerating unique values. In case this does not work it will throw anRuntimeExceptionExample from tests:
TypedGenerator<Integer> baseGen = Generators.integers(1, 10); TypedGenerator<Integer> uniqueGen = Generators.uniqueValues(baseGen); Set<Integer> seen = new HashSet<>(); for (int i = 0; i < 10; i++) { assertTrue(seen.add(uniqueGen.next())); // Each value is unique }- Type Parameters:
T- The type of values- Parameters:
source- to be generated from.- Returns:
- a
TypedGeneratorthat ensures unique values - Throws:
RuntimeException- if unique value generation is not possible (e.g., when source has limited unique values)NullPointerException- if source is null
-
asCollectionGenerator
Factory method for creating aCollectionGeneratorgeneratingCollections from the givenTypedGenerator.- Type Parameters:
T- The type of values- Parameters:
source- to be generated from.- Returns:
- a
TypedGeneratorfor the given values
-
booleans
Factory method for creating aTypedGeneratorfor boolean primitives.- Returns:
- a
TypedGeneratorfor boolean primitives
-
booleanObjects
Factory method for creating aTypedGeneratorforBoolean.- Returns:
- a
TypedGeneratorforBoolean
-
bytes
Factory method for creating aTypedGeneratorfor byte primitives.- Returns:
- a
TypedGeneratorfor byte primitives
-
byteObjects
Factory method for creating aTypedGeneratorforByte.- Returns:
- a
TypedGeneratorforByte
-
characters
Factory method for creating aTypedGeneratorfor char primitives.- Returns:
- a
TypedGeneratorfor char primitives
-
characterObjects
Factory method for creating aTypedGeneratorforCharacter.- Returns:
- a
TypedGeneratorforCharacter
-
doubles
Factory method for creating aTypedGeneratorfor double primitives.- Returns:
- a
TypedGeneratorfor double primitives
-
doubles
Factory method for creating aTypedGeneratorforDouble.- Parameters:
low- lower bound of rangehigh- upper bound of range- Returns:
- a
TypedGeneratorforDouble
-
doubleObjects
Factory method for creating aTypedGeneratorforDouble.- Returns:
- a
TypedGeneratorforDouble
-
floats
Factory method for creating aTypedGeneratorfor float primitives.- Returns:
- a
TypedGeneratorfor float primitives
-
floats
Factory method for creating aTypedGeneratorforFloat.- Parameters:
low- lower bound of rangehigh- upper bound of range- Returns:
- a
TypedGeneratorforFloat
-
floatObjects
Factory method for creating aTypedGeneratorforFloat.- Returns:
- a
TypedGeneratorforFloat
-
integers
Factory method for creating aTypedGeneratorfor integer primitives.- Returns:
- a
TypedGeneratorfor integer primitives
-
integers
Factory method for creating aTypedGeneratorforInteger.- Parameters:
low- lower bound of rangehigh- upper bound of range- Returns:
- a
TypedGeneratorforInteger
-
integerObjects
Factory method for creating aTypedGeneratorforInteger.- Returns:
- a
TypedGeneratorforInteger
-
numbers
Factory method for creating aTypedGeneratorforNumber.- Returns:
- a
TypedGeneratorforNumber
-
shorts
Factory method for creating aTypedGeneratorfor short primitives.- Returns:
- a
TypedGeneratorfor short primitives
-
shortObjects
Factory method for creating aTypedGeneratorforShort.- Returns:
- a
TypedGeneratorforShort
-
longs
Factory method for creating aTypedGeneratorfor long primitives.- Returns:
- a
TypedGeneratorfor long primitives
-
longs
Factory method for creating aTypedGeneratorfor Long primitives.- Parameters:
low- lower bound of rangehigh- upper bound of range- Returns:
- a
TypedGeneratorfor long primitives
-
longObjects
Factory method for creating aTypedGeneratorforLong.- Returns:
- a
TypedGeneratorforLong
-
dates
Factory method for creating aTypedGeneratorforDate.- Returns:
- a
TypedGeneratorforDate
-
localDates
Factory method for creating aTypedGeneratorforLocalDate.- Returns:
- a
TypedGeneratorforLocalDate
-
localTimes
Factory method for creating aTypedGeneratorforLocalTime.- Returns:
- a
TypedGeneratorforLocalTime
-
localDateTimes
Factory method for creating aTypedGeneratorforLocalDateTime.- Returns:
- a
TypedGeneratorforLocalDateTime
-
zonedDateTimes
Factory method for creating aTypedGeneratorforZonedDateTime.- Returns:
- a
TypedGeneratorforZonedDateTime
-
timeZones
Factory method for creating aTypedGeneratorforTimeZone.- Returns:
- a
TypedGeneratorforTimeZone
-
zoneIds
Factory method for creating aTypedGeneratorforZoneId.- Returns:
- a
TypedGeneratorforZoneId
-
zoneOffsets
Factory method for creating aTypedGeneratorforZoneOffset.- Returns:
- a
TypedGeneratorforZoneOffset
-
temporals
Factory method for creating aTypedGeneratorforTemporals.- Returns:
- a
TypedGeneratorforTemporals
-
classTypes
Factory method for creating aTypedGeneratorarbitraryClassObjects- Returns:
- a
TypedGeneratorfor the given values
-
locales
Factory method for creating aTypedGeneratorarbitraryLocaleObjects- Returns:
- a
TypedGeneratorfor allLocales
-
serializables
Factory method for creating aTypedGeneratorarbitrarySerializableObjects- Returns:
- a
TypedGeneratorfor allSerializables
-
runtimeExceptions
Factory method for creating aTypedGeneratorarbitraryRuntimeExceptionObjects- Returns:
- a
TypedGeneratorfor allRuntimeExceptions
-
throwables
Factory method for creating aTypedGeneratorarbitraryThrowableObjects- Returns:
- a
TypedGeneratorfor allThrowables
-
urls
Factory method for creating aTypedGeneratorarbitraryURLs Objects- Returns:
- a
TypedGeneratorfor allURLs
-