Class BigDecimalGenerator

All Implemented Interfaces:
Gen<BigDecimal>, Shrink<BigDecimal>

public class BigDecimalGenerator extends DecimalGenerator<BigDecimal>

Produces values of type BigDecimal.

With no additional configuration, the generated values are chosen from a range with a magnitude decided by GenerationStatus.size().

  • Field Details

  • Constructor Details

    • BigDecimalGenerator

      public BigDecimalGenerator()
  • Method Details

    • configure

      public void configure(InRange range)

      Tells this generator to produce values within a specified minimum (inclusive) and/or maximum (exclusive), with uniform distribution.

      If an endpoint of the range is not specified, its value takes on a magnitude influenced by GenerationStatus.size().

      Parameters:
      range - annotation that gives the range's constraints
    • configure

      public void configure(Precision configuration)

      Tells this generator to produce values that have a specified scale.

      With no precision constraint and no min/max constraint, the scale of the generated values is unspecified.

      Otherwise, the scale of the generated values is set as max(0, precision.scale, range.min.scale, range.max.scale).

      Parameters:
      configuration - annotation that gives the desired scale of the generated values
    • generate

      public BigDecimal generate(SourceOfRandomness random, GenerationStatus status)
      Description copied from interface: Gen
      Generates a value, possibly influenced by a source of randomness and metadata about the generation.
      Parameters:
      random - source of randomness to be used when generating the value
      status - an object that can be used to influence the generated value. For example, generating lists can use the size method to generate lists with a given number of elements.
      Returns:
      the generated value
    • decideScale

      private int decideScale()
    • widen

      protected Function<BigDecimal,BigDecimal> widen()
      Specified by:
      widen in class DecimalGenerator<BigDecimal>
      Returns:
      a function converting a value of the base type into a BigDecimal
    • narrow

      protected Function<BigDecimal,BigDecimal> narrow()
      Specified by:
      narrow in class DecimalGenerator<BigDecimal>
      Returns:
      a function converting a BigDecimal into the equivalent value in the base type
    • inRange

      protected Predicate<BigDecimal> inRange()
      Specified by:
      inRange in class DecimalGenerator<BigDecimal>
      Returns:
      a predicate checking whether its input is in the configured range
    • leastMagnitude

      protected BigDecimal leastMagnitude()
      Specified by:
      leastMagnitude in class DecimalGenerator<BigDecimal>
      Returns:
      the lowest magnitude number, respecting the configured range. The ideal shrink value is always this value (i.e. this value cannot be shrunk any further).
    • negative

      protected boolean negative(BigDecimal target)
      Specified by:
      negative in class DecimalGenerator<BigDecimal>
      Returns:
      whether the given number is negative or not
    • negate

      protected BigDecimal negate(BigDecimal target)
      Description copied from class: DecimalGenerator
      Used when shrinking negative numbers to add the positive equivalent value at the top of shrinks list.
      Specified by:
      negate in class DecimalGenerator<BigDecimal>
      Parameters:
      target - always a negative number
      Returns:
      the positive equivalent to target
    • magnitude

      public BigDecimal magnitude(Object value)
      Description copied from class: Generator

      Gives a hint to the shrinking process as to the magnitude of the given value. The shrinking process will prefer trying values of greater magnitude before values of lesser magnitude. If not overridden, this implementation returns "one".

      Note to generator writers: Do not worry about normalizing a magnitude to a positive value; the shrinking mechanism will take care of it.

      Overrides:
      magnitude in class Generator<BigDecimal>
      Parameters:
      value - the value to assess
      Returns:
      a measure of the given value's magnitude
      See Also: