Class: Pbt::Arbitrary::ChooseArbitrary

Inherits:
Arbitrary
  • Object
show all
Defined in:
lib/pbt/arbitrary/choose_arbitrary.rb

Overview

Generates a random value from a range.

Instance Method Summary collapse

Methods inherited from Arbitrary

#filter, #map

Constructor Details

#initialize(range) ⇒ ChooseArbitrary

Returns a new instance of ChooseArbitrary.

Parameters:

  • range (Range<Integer>)


8
9
10
# File 'lib/pbt/arbitrary/choose_arbitrary.rb', line 8

def initialize(range)
  @range = range
end

Instance Method Details

#generate(rng) ⇒ Object

See Also:



13
14
15
# File 'lib/pbt/arbitrary/choose_arbitrary.rb', line 13

def generate(rng)
  rng.rand(@range)
end

#shrink(current) ⇒ Object

See Also:



18
19
20
21
22
# File 'lib/pbt/arbitrary/choose_arbitrary.rb', line 18

def shrink(current)
  # Range is ordered from min to max, so we can just shrink towards min.
  min, max = [@range.begin, @range.end].sort
  IntegerArbitrary.new(min, max).shrink(current, target: min)
end