Class: Properb::Generators::IntegerGenerator
- Inherits:
-
Properb::Generator
- Object
- Properb::Generator
- Properb::Generators::IntegerGenerator
- Defined in:
- lib/properb/generators/integer_generator.rb
Instance Method Summary collapse
- #generate_value(random, _size) ⇒ Object
-
#initialize(range = 0) ⇒ IntegerGenerator
constructor
A new instance of IntegerGenerator.
- #shrink(value, min) ⇒ Object
Methods inherited from Properb::Generator
#map, #or, #reject, #select, #sized, #to_properb_generator
Constructor Details
#initialize(range = 0) ⇒ IntegerGenerator
Returns a new instance of IntegerGenerator.
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 # termination Enumerator.new do |out| out << ShrinkTree.new(midpoint, shrink(midpoint, min)) shrink(value, midpoint).each { out << _1 } end end |