Interface Generators

All Known Implementing Classes:
GeneratorRepository

public interface Generators
An access point for available generators.
  • Method Summary

    Modifier and Type
    Method
    Description
    <T> Generator<T>
    constructor(Class<T> type, Class<?>... argumentTypes)
    Gives a generator that can produce an instance of the type described by a constructor of a given type that accepts the given types of arguments.
    field(Class<?> type, String fieldName)
    Gives a generator that can produce an instance of the type described by the field with the given name and containing type.
    field(Field field)
    Gives a generator that can produce instances of the type of the given reflected field.
    <T> Generator<T>
    fieldsOf(Class<T> type)
    Gives a generator that can produce an instance of the given type by reflecting the class's fields on up its class hierarchy and generating random values for them.
    <T extends Generator<?>>
    T
    make(Class<T> genType, Generator<?>... componentGenerators)
    Makes a new generator of the given type, provides it with access to other available generators, configures it with any configuration annotations present on the generator type, and supplies it any component generators it needs.
    <T> Generator<T>
    oneOf(Generator<? extends T> first, Generator<? extends T>... rest)
    Gives a generator that can produce instances of one of a given set of related types on every generation.
    <T> Generator<T>
    oneOf(Class<? extends T> first, Class<? extends T>... rest)
    Gives a generator that can produce instances of one of a given set of related types on every generation.
    parameter(Parameter parameter)
    Gives a generator that can produce instances of the type of the given reflected method parameter.
    <T> Generator<T>
    type(Class<T> type, Class<?>... componentTypes)
    Gives a generator that can produce values of the given type, parameterized by the given "component" types.
    Makes a generator access point just like the receiver, but which uses the given source of randomness for making random choices.
  • Method Details

    • oneOf

      <T> Generator<T> oneOf(Class<? extends T> first, Class<? extends T>... rest)

      Gives a generator that can produce instances of one of a given set of related types on every generation.

      On each generation, one of the available generators that can produce one of the named types will be chosen with (approximately) equal probability.

      Type Parameters:
      T - type of objects produced by the resulting generator
      Parameters:
      first - first type of generated value
      rest - other (related) types of generated values
      Returns:
      generator that can produce values of the given types
    • oneOf

      <T> Generator<T> oneOf(Generator<? extends T> first, Generator<? extends T>... rest)

      Gives a generator that can produce instances of one of a given set of related types on every generation.

      On each generation, one of the given generators will be called upon with (approximately) equal probability.

      Type Parameters:
      T - type of objects produced by the resulting generator
      Parameters:
      first - first generator
      rest - other generators
      Returns:
      generator that can produce values using the given generators
    • field

      Generator<?> field(Class<?> type, String fieldName)

      Gives a generator that can produce an instance of the type described by the field with the given name and containing type.

      If the field is marked with an annotation that influences the generation of a given kind of value, that annotation will be applied to the resulting generator's values.

      Parameters:
      type - containing type for a field
      fieldName - name of a field
      Returns:
      generator that can produce values of the field's type
    • constructor

      <T> Generator<T> constructor(Class<T> type, Class<?>... argumentTypes)

      Gives a generator that can produce an instance of the type described by a constructor of a given type that accepts the given types of arguments. It will generate values for the parameters of the given constructor, and then invoke the constructor.

      If the constructor's parameters are marked with annotations that influence the generation of a given kind of value, those annotations will be applied to the generators that will produce values to be used as arguments to the constructor.

      Type Parameters:
      T - type of objects produced by the resulting generator
      Parameters:
      type - containing type for a constructor
      argumentTypes - types of arguments to the constructor
      Returns:
      generator that can produce values using the constructor
    • fieldsOf

      <T> Generator<T> fieldsOf(Class<T> type)

      Gives a generator that can produce an instance of the given type by reflecting the class's fields on up its class hierarchy and generating random values for them.

      The given type must have an accessible zero-arg constructor.

      If a field of the given type is marked with an annotation that influences the generation of a given kind of value, that annotation will be applied to the generation of values for that field.

      Type Parameters:
      T - type of objects produced by the resulting generator
      Parameters:
      type - a type
      Returns:
      generator that can produce values of that type
    • type

      <T> Generator<T> type(Class<T> type, Class<?>... componentTypes)

      Gives a generator that can produce values of the given type, parameterized by the given "component" types.

      Type Parameters:
      T - type of objects produced by the resulting generator
      Parameters:
      type - a type
      componentTypes - types for the "components" of the type, if any
      Returns:
      generator that can produce values of that type
      See Also:
    • parameter

      Generator<?> parameter(Parameter parameter)

      Gives a generator that can produce instances of the type of the given reflected method parameter.

      If the parameter is marked with an annotation that influences the generation of its value, that annotation will be applied to the generation of values for that parameter's type.

      Parameters:
      parameter - a reflected method parameter
      Returns:
      generator that can produce values of the parameter's type
    • field

      Generator<?> field(Field field)

      Gives a generator that can produce instances of the type of the given reflected field.

      If the field is marked with an annotation that influences the generation of its value, that annotation will be applied to the generation of values for that field's type.

      Parameters:
      field - a reflected field
      Returns:
      generator that can produce values of the field's type
    • make

      <T extends Generator<?>> T make(Class<T> genType, Generator<?>... componentGenerators)

      Makes a new generator of the given type, provides it with access to other available generators, configures it with any configuration annotations present on the generator type, and supplies it any component generators it needs.

      Type Parameters:
      T - type of objects produced by the resulting generator
      Parameters:
      genType - type of generator to create
      componentGenerators - any generators for components of the type
      Returns:
      a generator for producing values
      See Also:
    • withRandom

      Generators withRandom(SourceOfRandomness random)

      Makes a generator access point just like the receiver, but which uses the given source of randomness for making random choices.

      Intended for use by junit-quickcheck.

      Parameters:
      random - a source of randomness
      Returns:
      a generator access point that has the source of randomness available to it