Class: Pbt::Arbitrary::TupleArbitrary
- Defined in:
- lib/pbt/arbitrary/tuple_arbitrary.rb
Overview
Generates a tuple of arbitrary values.
Instance Method Summary collapse
- #generate(rng) ⇒ Object
-
#initialize(*arbs) ⇒ TupleArbitrary
constructor
A new instance of TupleArbitrary.
- #shrink(current) ⇒ Object
Methods inherited from Arbitrary
Constructor Details
#initialize(*arbs) ⇒ TupleArbitrary
Returns a new instance of TupleArbitrary.
8 9 10 |
# File 'lib/pbt/arbitrary/tuple_arbitrary.rb', line 8 def initialize(*arbs) @arbs = arbs end |
Instance Method Details
#generate(rng) ⇒ Object
13 14 15 |
# File 'lib/pbt/arbitrary/tuple_arbitrary.rb', line 13 def generate(rng) @arbs.map { |arb| arb.generate(rng) } end |
#shrink(current) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/pbt/arbitrary/tuple_arbitrary.rb', line 18 def shrink(current) # This is not the most comprehensive but allows a reasonable number of entries in the shrink. Enumerator.new do |y| @arbs.each_with_index do |arb, idx| arb.shrink(current[idx]).each do |v| next_values = current.dup next_values[idx] = v y << next_values end end end end |