Class: Properb::Generators::IntegerGenerator
Instance Method Summary
collapse
#map, #or, #reject, #select, #sized, #to_properb_generator
Constructor Details
4
5
6
|
# File 'lib/properb/generators/integer_generator.rb', line 4
def initialize(range = 0..)
@range = range
end
|
Instance Method Details
#generate_value(random, _size) ⇒ Object
8
9
10
11
12
13
14
15
16
17
|
# File 'lib/properb/generators/integer_generator.rb', line 8
def generate_value(random, _size)
value = random.random_number(@range)
ShrinkTree.new(
value,
Enumerator.new do |out|
out << ShrinkTree.new(@range.min, [])
shrink(value, @range.min).each { out << _1 }
end
)
end
|
#shrink(value, min) ⇒ Object
19
20
21
22
23
24
25
26
27
|
# File 'lib/properb/generators/integer_generator.rb', line 19
def shrink(value, min)
midpoint = ((value + min) / 2).floor
return [] if midpoint == min
Enumerator.new do |out|
out << ShrinkTree.new(midpoint, shrink(midpoint, min))
shrink(value, midpoint).each { out << _1 }
end
end
|