Skip to content

UniqueArrayArbitrary

Rasuvaeff\PropertyTesting\Arbitrary\UniqueArrayArbitrary

ClassPackage: property-testing-coreSourceVersion: v0.1.0-12-g86ead85

Implements: ArbitraryInterface

Type parameters:

  • TElement of mixed = mixed

Generates lists of pairwise-distinct elements (strict comparison) drawn from a delegate arbitrary, and shrinks them by length toward the empty array, then element-by-element through each element's own tree — accepting only candidates that keep the list distinct.

Generation draws a size, then draws elements, skipping duplicates. Drawing is bounded: after Arbitrary\self::MAX_ATTEMPTS_PER_ELEMENT attempts per requested element the generator settles for the distinct elements found so far — the result may be smaller than the drawn size, mirroring dictOf's key-collision behaviour. An element space too small to reach the minimum size throws GenerationExhausted rather than hand the property a too-small list.

Constructor

php
__construct(
    \ArbitraryInterface<\Arbitrary\TElement> $element,
    int $minSize = 0,
    int $maxSize = 100,
)
ParameterTypeDefaultDescription
$element\ArbitraryInterface<\Arbitrary\TElement>required
$minSizeint0
$maxSizeint100

Methods

generate()

php
generate(Random $random): Shrinkable

Produce one random value from this arbitrary's space, together with its shrink tree. Candidates must be ordered most aggressive first (typically toward a zero/empty/identity element) and every branch of the tree must be finite, so shrinking terminates.

Documentation inherited from ArbitraryInterface.