Class Generators

    • Method Detail

      • cast

        public static <T> Generator<T> cast​(Generator<? extends T> generator)
        Cast a generator to a super type generator.

        This method can be used to cast a generator of type Generator<A> to a generator of type Generator<B> given that A extends B. This operator is valid as all Generator instances are covariant (are pure producers).

      • toIterable

        public static <T> Iterable<T> toIterable​(Generator<T> generator,
                                                 int numberOfRuns)
        Convert a generator into an iterable.
        Parameters:
        numberOfRuns - to execute the runner
      • strings

        public static ExtendibleGenerator<Character,​Stringstrings​(char lo,
                                                                          char hi)
        Create a new string generator which generates strings of characters ranging from lo to hi.
        Parameters:
        lo - lower boundary character
        hi - upper boundary character
      • strings

        public static ExtendibleGenerator<Character,​Stringstrings​(String allowedCharacters,
                                                                          int min,
                                                                          int max)
        Create a new string generator which generates strings of characters from the given string with a length between min and max.
      • strings

        public static ExtendibleGenerator<Character,​Stringstrings​(int min,
                                                                          int max)
        Create a new string generator which generates strings of sizes ranging from loLength to hiLength.
        Parameters:
        min - lower size boundary
        max - upper size boundary
      • letterStrings

        public static ExtendibleGenerator<Character,​StringletterStrings​(int min,
                                                                                int max)
        Create a new string generator which creates strings with sizes ranging from loLengh to hiLength of characters from a-z and A-Z.
      • substrings

        public static Generator<Stringsubstrings​(String base)
        Create a new string generator for substrings of a base string.

        base.contains(generated string) will always be true.

      • substrings

        public static Generator<Stringsubstrings​(String base,
                                                   int size)
        Create a new string generator for substrings of a base string.

        base.contains(generated string) will always be true.

        Parameters:
        size - of the generated string
      • substrings

        public static Generator<Stringsubstrings​(String base,
                                                   int minSize,
                                                   int maxSize)
        Create a new string generator for substrings of a base string.

        base.contains(generated string) will always be true.

        Parameters:
        minSize - is the minimum size of the generated string
        maxSize - is the maximum size of the generated string
      • characters

        public static Generator<Charactercharacters​(char lo,
                                                      char hi)
        Create a new character generator which generates characters ranging from lo to hi.
      • characters

        public static Generator<Charactercharacters()
        Create a new character generator.
        The characters are from the Basic Latin and Latin-1 Supplement unicode blocks.
      • integers

        public static Generator<Integerintegers​(int low)
        Create a new integer generator which creates integers that are at equal or greater than low.
      • integers

        public static Generator<Integerintegers​(int lo,
                                                  int hi)
        Create a new integer generator which creates integers ranging from lo to hi.
      • positiveIntegers

        public static Generator<IntegerpositiveIntegers​(int hi)
        Create a new integer generator which creates integers ranging from 1 to max (which must be at least 1).
      • bytes

        public static Generator<Bytebytes​(byte lo,
                                            byte hi)
        Create a new byte generator which creates byte values ranging from lo to hi.
      • longs

        public static Generator<Longlongs​(long lo,
                                            long hi)
        Create a new long generator which creates longs ranging from lo to hi.
      • positiveLongs

        public static Generator<LongpositiveLongs​(long hi)
        Create a new long generator which creates long values ranging from 1 to hi.
      • doubles

        public static Generator<Doubledoubles​(double lo,
                                                double hi)
        Create a new double generator which creates doubles ranging from lo to hi.
      • nulls

        public static <T> Generator<T> nulls()
        Create a generator for null values.
      • dates

        public static Generator<Datedates​(TimeUnit precision)
        Create a generator for date values with the given precision.
      • dates

        public static Generator<Datedates​(long low,
                                            long high)
        Create a generator for date values from low to high.
      • dates

        public static Generator<Datedates​(Long low,
                                            Long high,
                                            TimeUnit precision)
        Create a generator for date values from low to high with the given precision.
      • fixedValues

        public static <T> Generator<T> fixedValues​(T value)
        Create a generator for fixed value generator.
      • fixedValues

        @SafeVarargs
        public static <T> Generator<T> fixedValues​(T... values)
        Create a fixed value generator returning one of the values from the values array.
      • fixedValues

        public static <T> Generator<T> fixedValues​(Iterable<T> values)
        Create a fixed value generator returning one of the values from the values.
      • clonedValues

        public static <T> Generator<T> clonedValues​(T prototype)
        A cloning generator which uses object serialization to create clones of the prototype object. For each call a new copy of the prototype will be generated.
      • enumValues

        public static <T extends Enum<T>> Generator<T> enumValues​(Class<T> enumClass)
        Create a generator of enumeration values.
        Type Parameters:
        T - Type of enumerations
        Parameters:
        enumClass - class of enumeration
        Returns:
        generator of enum values
      • enumValues

        @SafeVarargs
        public static <T extends Enum<T>> Generator<T> enumValues​(Class<T> enumClass,
                                                                  T... excluded)
        Create a generator of enumeration values.
        Type Parameters:
        T - Type of enumerations
        Parameters:
        enumClass - class of enumeration
        excluded - excluded values of enumeration
        Returns:
        generator of enum values
      • enumValues

        public static <T extends Enum<T>> Generator<T> enumValues​(Class<T> enumClass,
                                                                  Iterable<T> excludedValues)
        Create a generator of enumeration values.
        Type Parameters:
        T - Type of enumerations
        Parameters:
        enumClass - class of enumeration
        excludedValues - excluded values of enumeration
        Returns:
        generator of enum values
      • frequency

        public static <T> FrequencyGenerator<T> frequency​(Generator<T> generator,
                                                          int weight)

        Create a frequency generator. The frequency of Generator usage depends on the generator weight.

        Type Parameters:
        T - type of values generated by the generators.
        Parameters:
        generator - pairs of generators and their weights used to created the values
      • vectors

        public static <T> Generator<List<T>> vectors​(Generator<T> content,
                                                     int size)
        Create a generator which will create vectors (here lists) of type T.
        Type Parameters:
        T - Type of the list values.
        Parameters:
        size - Number of element in the vector.
      • pairs

        public static <A,​B> Generator<Pair<A,​B>> pairs​(Generator<A> first,
                                                                   Generator<B> second)
        Create a generator of pairs of type A for the left value and type B for the right value.
        Type Parameters:
        A - Type of left value.
        B - Type of right value.
        Parameters:
        first - Generator for left values.
        second - Generator for right values.
      • sortedPairs

        public static <T extends Comparable<T>> Generator<Pair<T,​T>> sortedPairs​(Generator<T> content)
        Create a generator of pairs where first value <= second value.
        Type Parameters:
        T - Type of the pair values.
        Parameters:
        content - Generator for content of the pair values.
      • triples

        public static <A,​B,​C> Generator<Triple<A,​B,​C>> triples​(Generator<A> first,
                                                                                       Generator<B> second,
                                                                                       Generator<C> third)
        Create a generator of triples of the types A, B and C for first, second and third value.
        Type Parameters:
        A - Type of first value.
        B - Type of second value.
        C - Type of third value.
        Parameters:
        first - Generator for first values.
        second - Generator for second values.
        third - Generator for third values.
      • nullsAnd

        @SafeVarargs
        public static <T> Generator<T> nullsAnd​(T... values)
        Create a generator returning a combination of a null values and the given values.
        Type Parameters:
        T - Type of the values generated.
      • sortedTriple

        public static <T extends Comparable<T>> Generator<Triple<T,​T,​T>> sortedTriple​(Generator<T> content)
        Create a generator of triples where first value <= second value <= third value.
        Type Parameters:
        T - Type of the triple values.
        Parameters:
        content - Generator for content of the triple values.
      • nullsAnd

        public static <T> Generator<T> nullsAnd​(Generator<T> generator)
        Create a generator as a combination of a null value generator and generator of type T.
        Type Parameters:
        T - Type of the values generated.
      • nullsAnd

        public static <T> Generator<T> nullsAnd​(Generator<T> generator,
                                                int weight)
        Create a generator as a combination of a null value generator and generator of type T.
        Type Parameters:
        T - Type of the values generated.
        Parameters:
        weight - weight of the provided generator
      • sets

        public static <T> Generator<Set<T>> sets​(Generator<? extends T> content)
        Create a generator of sets with values from the content generator.
        Type Parameters:
        T - type of set elements generated
        Parameters:
        content - generator providing the content of sets generated
      • sets

        public static <T> Generator<Set<T>> sets​(Generator<? extends T> content,
                                                 Generator<Integer> size)
        Create a generator of sets with values from the content generator.
        Type Parameters:
        T - type of set elements generated
        Parameters:
        content - generator providing the content of sets generated
        size - size of the sets generated
      • sets

        public static <T> Generator<Set<T>> sets​(Generator<? extends T> content,
                                                 int low,
                                                 int high)
        Create a generator of sets with values from the content generator. Length is between high and low.
        Type Parameters:
        T - type of set elements generated
        Parameters:
        content - generator providing the content of sets generated
        low - minimal size
        high - max size
      • nonEmptySets

        public static <T> Generator<Set<T>> nonEmptySets​(Generator<? extends T> content)
        Create a generator of sets that are not empty.
        Type Parameters:
        T - type of set elements generated
        Parameters:
        content - generator providing the content of sets generated
      • sets

        public static <T> Generator<Set<T>> sets​(Iterable<T> superset)
        Create a generator of subsets from a given set.
        Type Parameters:
        T - type of set elements generated
        Parameters:
        superset - of the generated set
      • sets

        public static <T> Generator<Set<T>> sets​(Iterable<T> superset,
                                                 Generator<Integer> size)
        Create a generator of subsets from a given set.
        Type Parameters:
        T - type of set elements generated
        Parameters:
        superset - of the generated set
        size - of the generated set
      • duplicates

        @SafeVarargs
        public static <T> Generator<List<T>> duplicates​(T... input)
        Create a generator that produces lists of duplicates.
        Returns:
        a list derived from the input values. At least one input value is more than once in the resulting list.
      • duplicates

        public static <T> Generator<List<T>> duplicates​(Iterable<T> input)
        Create a generator that produces lists of duplicates.
        Returns:
        a list derived from the input values. At least one input value is more than once in the resulting list.
      • iterators

        public static <T> Generator<Iterator<T>> iterators​(Generator<? extends T> content)
        Create a generator of iterators.

        Values of the elements will be taken from the content generator.

        Type Parameters:
        T - type of iterator elements generated
        Parameters:
        content - generator providing the content of iterators generated
      • nonEmptyIterators

        public static <T> Generator<Iterator<T>> nonEmptyIterators​(Generator<T> content)
        Create a generator of iterators.

        Values of the elements will be taken from the content generator. The generated iterator will have at least one element.

        Type Parameters:
        T - type of iterator elements generated
        Parameters:
        content - generator providing the content of iterators generated
      • iterators

        public static <T> Generator<Iterator<T>> iterators​(Generator<? extends T> content,
                                                           Generator<Integer> size)
        Create a generator of iterators.

        Values of the elements will be taken from the content generator. The length of the iterators will be determined with the size generator.

        Type Parameters:
        T - type of iterator elements generated
        Parameters:
        content - generator providing the content of iterators generated
        size - used to determine the number of elements of the iterator
      • lists

        public static <T> Generator<List<T>> lists​(Generator<? extends T> content)
        Create a generator of lists with values from the content generator. Length values of lists generated will be created with Distribution.UNIFORM.
        Type Parameters:
        T - type of list elements generated
        Parameters:
        content - generator providing the content of lists generated
      • nonEmptyLists

        public static <T> Generator<List<T>> nonEmptyLists​(Generator<? extends T> content)
        Create a generator of non-empty lists with values from the content generator. Length values of lists generated will be created with Distribution.UNIFORM.
        Type Parameters:
        T - type of list elements generated
        Parameters:
        content - generator providing the content of lists generated
      • lists

        public static <T> Generator<List<T>> lists​(Generator<? extends T> content,
                                                   Generator<Integer> size)
        Create a generator of lists with values from the content generator. Length values of lists generated will be created with size generator.
        Type Parameters:
        T - type of list elements generated
        Parameters:
        content - generator providing the content of lists generated
        size - integer used to determine the list size
      • lists

        public static <T> Generator<List<T>> lists​(Generator<? extends T> content,
                                                   int low,
                                                   int high)
        Create a generator of lists with values from the content generator. Length is between high and low.
        Type Parameters:
        T - type of list elements generated
        Parameters:
        content - generator providing the content of lists generated
        low - minimal size
        high - max size
      • lists

        public static <T> Generator<List<T>> lists​(Generator<? extends T> content,
                                                   int low)
        Create a generator of lists with values from the content generator. Length is at least low.
        Type Parameters:
        T - type of list elements generated
        Parameters:
        content - generator providing the content of lists generated
        low - minimal size. If low is larger than DEFAULT_COLLECTION_MAX_SIZE then it is the upper size bound as well.
      • sortedLists

        public static <T extends Comparable<T>> Generator<List<T>> sortedLists​(Generator<T> content)
        Create a generator of sorted lists with values from the content generator.
        Type Parameters:
        T - type of list elements generated
        Parameters:
        content - generator providing the content of lists generated
      • sortedLists

        public static <T extends Comparable<T>> Generator<List<T>> sortedLists​(Generator<T> content,
                                                                               int low,
                                                                               int high)
        Create a generator of sorted lists with values from the content generator. Length is between high and low.
        Type Parameters:
        T - type of list elements generated
        Parameters:
        content - generator providing the content of lists generated
        low - minimal size
        high - max size
      • sortedLists

        public static <T extends Comparable<T>> Generator<List<T>> sortedLists​(Generator<T> content,
                                                                               Generator<Integer> size)
        Create a generator of sorted lists with values from the content generator. Length is between high and low.
        Type Parameters:
        T - type of list elements generated
        Parameters:
        content - generator providing the content of lists generated
        size - integer used to determine the list size
      • arrays

        public static <T> Generator<T[]> arrays​(Generator<? extends T> content,
                                                Class<T> type)
        Create a generator of arrays with values from the content generator. Length values of array generated will be created with Distribution.UNIFORM.
        Type Parameters:
        T - type of arrays elements generated
        Parameters:
        content - generator providing the content of arrays generated
        type - type of arrays generated
      • nonEmptyArrays

        public static <T> Generator<T[]> nonEmptyArrays​(Generator<? extends T> content,
                                                        Class<T> type)
        Create a generator of arrays that are not empty.
        Type Parameters:
        T - type of arrays elements generated
        Parameters:
        content - generator providing the content of arrays generated
        type - type of arrays generated
      • arrays

        public static <T> Generator<T[]> arrays​(Generator<? extends T> content,
                                                Generator<Integer> size,
                                                Class<T> type)
        Create a generator of arrays with values from the content generator. Length values of arrays generated will be created with size generator.
        Type Parameters:
        T - type of arrays elements generated
        Parameters:
        content - generator providing the content of arrays generated
        size - integer used to determine the array size
        type - type of arrays generated
      • byteArrays

        public static Generator<byte[]> byteArrays​(Generator<Integer> size)
        Create a generator of byte arrays. Length values of arrays generated will be created with size generator.
        Parameters:
        size - integer used to determine the array size
      • byteArrays

        public static Generator<byte[]> byteArrays​(Generator<Byte> content,
                                                   Generator<Integer> size)
        Create a generator of byte arrays. Length values of arrays generated will be created with size generator.
        Parameters:
        size - integer used to determine the array size
        content - generator for the byte array content
      • intArrays

        public static Generator<int[]> intArrays()
        Create a generator of integer arrays.
      • intArrays

        public static Generator<int[]> intArrays​(Generator<Integer> size)
        Create a generator of integer arrays. Length values of arrays generated will be created with size generator.
        Parameters:
        size - integer used to determine the array size
      • intArrays

        public static Generator<int[]> intArrays​(Generator<Integer> content,
                                                 Generator<Integer> size)
        Create a generator of integer arrays. Length values of arrays generated will be created with size generator.
        Parameters:
        size - integer used to determine the array size
        content - generator for the integer array content
      • maps

        public static <K,​V> Generator<Map<K,​V>> maps​(Generator<K> keys,
                                                                 Generator<V> values)
        Create a generator of maps.

        This is a generator for simple maps where the values are not related to the keys.

        Parameters:
        keys - Generator for the keys of the map
        values - Generator for the values of the map
      • maps

        public static <K,​V> Generator<Map<K,​V>> maps​(Generator<K> keys,
                                                                 Generator<V> values,
                                                                 Generator<Integer> size)
        Create a generator of maps.

        This is a generator for simple maps where the values are not related to the keys.

        Parameters:
        keys - Generator for the keys of the map
        values - Generator for the values of the map
        size - integer used to determine the size of the generated map
      • maps

        public static <K,​V> Generator<Map<K,​V>> maps​(Map<K,​V> supermap)
        Create a generator of maps from a given map.

        The entry set of the generated maps are subsets of the given map's entry set.

        Parameters:
        supermap - of the generated maps
      • maps

        public static <K,​V> Generator<Map<K,​V>> maps​(Map<K,​V> supermap,
                                                                 Generator<Integer> sizes)
        Create a generator of maps from a given map.

        The entry set of the generated maps are subsets of the given map's entry set.

        Parameters:
        supermap - of the generated maps
        sizes - of the generated maps
      • ensureValues

        public static <T> StatefulGenerator<T> ensureValues​(Iterable<T> ensuredValues)
        Create a deterministic generator which guarantees that all values from the ensuredValues collection will be returned if enough calls to Generator.next() are issued (i.e. ensuredValues.size() <= # of runs). The order of values is undefined.
        Type Parameters:
        T - type of values return by the generator
      • ensureValues

        @SafeVarargs
        public static <T> StatefulGenerator<T> ensureValues​(T... content)
        Create a deterministic generator which guarantees that all values from the ensuredValues array will be returned if enough calls to Generator.next() are issued (i.e. ensuredValues.size() <= # of runs). The order of values is undefined.
        Type Parameters:
        T - type of values return by the generator
      • ensureValues

        public static <T> StatefulGenerator<T> ensureValues​(Iterable<T> ensuredValues,
                                                            Generator<T> otherValues)

        Create a deterministic generator which guarantees that all values from the ensuredValues collection will be returned if enough calls to Generator.next() are issued (i.e. ensuredValues.size() <= # of runs). The order of values is undefined.

        If all values of ensuredValues are generated calls to Generator.next() will return values from the otherValues generator.

        Type Parameters:
        T - type of values return by the generator
      • ensureValues

        public static <T> StatefulGenerator<T> ensureValues​(Iterable<T> ensuredValues,
                                                            int window,
                                                            Generator<T> otherValues)

        Create a generator which guarantees that all values from the ensuredValues will be returned in a defined window when enough calls to Generator.next() are issued.

        The order of values is undefined. All other values in the window and after the window are taken from the generator otherValues.

        Type Parameters:
        T - type of values return by the generator
        Parameters:
        window - After window number of calls to Generator.next() it is guaranteed that all ensured values were returned.
      • uniqueValues

        public static <T> StatefulGenerator<T> uniqueValues​(Generator<T> generator,
                                                            int tries)

        Create a generator that ensures unique values.

        The actual values are created with an arbitrary generator.

        Note: unique generator depends on valid implementation of equals and hashCode method of the content type generated.

        Type Parameters:
        T - type of values return by the generator
        Parameters:
        generator - used to create the raw values. This generator can create duplicate values
        tries - Number of tries to create a new unique value. After this number of tries is exceeded the generation aborts with a GeneratorException.
        Returns:
        unique generator instance
      • uniqueValues

        public static <T> StatefulGenerator<T> uniqueValues​(Generator<T> generator,
                                                            Comparator<? super T> comparator,
                                                            int tries)

        Create a generator that ensures unique values.

        The actual values are created with an arbitrary generator.

        Unique generator depends on the Comparator implementation to decide if two instances are the same (i.e. when the comparator returns 0 for Comparator.compare(Object, Object)).

        Type Parameters:
        T - type of values returned by the generator
        Parameters:
        generator - used to create the raw values. This generator can create duplicate values
        comparator - that decides if two values are of the same equivalence class.
        tries - Number of tries to create a new unique value. After this number of tries is exceeded the generation aborts with a GeneratorException.
        Returns:
        unique generator instance
      • uniqueValues

        public static <T> StatefulGenerator<T> uniqueValues​(Generator<T> generator,
                                                            Comparator<? super T> comparator)

        Create a generator that ensures unique values.

        The actual values are created with an arbitrary generator.

        Unique generator depends on the Comparator implementation to decide if two instances are the same (i.e. when the comparator returns 0 for Comparator.compare(Object, Object)).

        Type Parameters:
        T - type of values returned by the generator
        Parameters:
        generator - used to create the raw values. This generator can create duplicate values
        comparator - that decides if two values are of the same equivalence class.
        Returns:
        unique generator instance
      • uniqueValues

        public static <T> StatefulGenerator<T> uniqueValues​(Generator<T> generator)

        Create a generator that ensures unique values

        The actual values are created with an arbitrary generator.

        Note: unique generator depends on valid implementation of equals and hashCode method of the content type generated.

        Type Parameters:
        T - type of values return by the generator
        Parameters:
        generator - used to create the raw values. This generator can create duplicate values
        Returns:
        unique generator instance
      • excludeValues

        public static <T> Generator<T> excludeValues​(Generator<T> generator,
                                                     T excluded)
        Create a generator that omits a given value.
        Parameters:
        generator - used to create the raw values.
        excluded - value. This value will not be returned.
      • excludeValues

        @SafeVarargs
        public static <T> Generator<T> excludeValues​(Generator<T> generator,
                                                     T... excluded)
        Create a generator that omits a given set of values.
        Parameters:
        generator - used to create the raw values.
        excluded - values. These values will not be returned.
      • excludeValues

        @SafeVarargs
        public static <T> Generator<T> excludeValues​(Iterable<T> values,
                                                     T... excluded)
        Create a generator that omits a given set of values.
        Parameters:
        values - of generator
        excluded - values. These values will not be returned.
      • excludeValues

        public static <T> Generator<T> excludeValues​(Iterable<T> values,
                                                     Iterable<T> excluded)
        Create a generator that omits a given set of values.
        Parameters:
        values - of generator
        excluded - values. These values will not be returned.
      • excludeValues

        public static <T> Generator<T> excludeValues​(Generator<T> generator,
                                                     Iterable<T> excluded)
        Create a generator that omits a given set of values.
        Parameters:
        generator - used to create the raw values.
        excluded - values. These values will not be returned.
      • strictlyOrdered

        public static <T extends Comparable<T>> Generator<List<T>> strictlyOrdered​(Generator<T> input)
        A generator for a lists. The values in the lists are strictly increasing.

        For every element x in the list: x(n) < x(n+1).

        Parameters:
        input - values generator
      • strictlyOrdered

        public static <T extends Comparable<T>> Generator<List<T>> strictlyOrdered​(Generator<T> input,
                                                                                   int low,
                                                                                   int high)
        A generator for a lists. The values in the lists are strictly increasing.

        For every element x in the list: x(n) < x(n+1).

        Parameters:
        input - values generator
        low - minimum size of the lists
        high - maximum size of the lists
      • strictlyOrdered

        public static <T> Generator<List<T>> strictlyOrdered​(Generator<T> input,
                                                             Comparator<T> comparator)
        A generator for a lists. The values in the lists are strictly increasing.

        For every element x in the list: x(n) < x(n+1).

        This Generator can be used to generate a list of strictly decreasing values: Generators.strictlyOrdered(ts, Collections.<T> reverseOrder());

        Parameters:
        input - values generator
        comparator - that orders the values
      • strictlyOrdered

        public static <T> Generator<List<T>> strictlyOrdered​(Generator<T> input,
                                                             Comparator<T> comparator,
                                                             Generator<Integer> size)
        A generator for a lists. The values in the lists are strictly increasing.

        For every element x in the list: x(n) < x(n+1).

        Parameters:
        input - values generator
        comparator - that orders the values
        size - of the resulting lists