module Gen::Test

Constants

LOWER_BOUND
UPPER_BOUND
VERSION

Public Class Methods

included(base) click to toggle source
# File lib/gen/test.rb, line 9
def self.included(base)
  base.include(Gen)
end

Public Instance Methods

for_all(*generators, &block) click to toggle source
# File lib/gen/test.rb, line 13
def for_all(*generators, &block)
  for_n([LOWER_BOUND, UPPER_BOUND], *generators, &block)
end
for_any(*generators, &block) click to toggle source
# File lib/gen/test.rb, line 17
def for_any(*generators, &block)
  for_n(1, *generators, &block)
end
Also aliased as: for_one
for_each(*collections) { |*map { |g| generate}| ... } click to toggle source
# File lib/gen/test.rb, line 33
def for_each(*collections)
  unless collections.empty?
    size = collections.first.size
    raise "All collections must be the same size" unless collections.all? { |c| c.size == size }
    zipped = collections.first.zip(*collections.drop(1))
    if block_given?
      zipped.each do |generators|
        yield(*generators.map { |g| Gen.generate(g) })
      end
    else
      raise 'A block is expected with a property definition'
    end
  end
end
for_n(n, *generators) { |*map(&method(:generate))| ... } click to toggle source
# File lib/gen/test.rb, line 22
def for_n(n, *generators)
  if block_given?
    n = Faker::Number.between(n.first, n.last) if n.respond_to?(:first) and n.respond_to?(:last)
    n.times do
      yield(*generators.map(&Gen.method(:generate)))
    end
  else
    raise 'A block is expected with a property definition'
  end
end
for_one(*generators, &block)
Alias for: for_any