class Forall::Input
Public Class Methods
build(value = nil, &block)
click to toggle source
@param value [Proc | Enumerable]
# File lib/forall/input.rb, line 7 def build(value = nil, &block) if Input === value value elsif Enumerable === value # This includes Range All.new(value) elsif Proc === value Some.new(value) elsif block_given? Some.new(block) else raise TypeError, "argument must be a Proc or Enumerable" end end
exhaustive(value = nil, &block)
click to toggle source
@param value [Enumerable]
# File lib/forall/input.rb, line 23 def exhaustive(value = nil, &block) if Enumerable === value All.new(value) else raise TypeError, "argument must be Enumerable" end end
sampled(value = nil, &block)
click to toggle source
@param value [Proc | Array | Enumerator | … | Enumerable]
# File lib/forall/input.rb, line 32 def sampled(value = nil, &block) if block_given? Some.new(block) elsif Proc === value Some.new(value) elsif Range === value or value.respond_to?(:sample) Some.new(lambda{|rnd| rnd.sample(value) }) elsif value.respond_to?(:to_a) array = value.to_a Some.new(lambda{|rnd| rnd.sample(array) }) else raise TypeError, "argument must be a Proc or respond_to?(:sample) or respond_to?(:to_a)" end end
Public Instance Methods
shrink(value = nil, &block)
click to toggle source
# File lib/forall/input.rb, line 48 def shrink(value = nil, &block) if block_given? @shrink = block self else @shrink end end