class Prolly::RandVar

Public Class Methods

new(pspace, *rand_vars) click to toggle source
# File lib/prolly/rand_var.rb, line 15
def initialize(pspace, *rand_vars)
  @pspace = pspace

  @uspec_rv, @spec_rv = parse(rand_vars)

  @uspec_gv = []
  @spec_gv = {}
end

Public Instance Methods

count() click to toggle source
# File lib/prolly/rand_var.rb, line 55
def count
  if !@spec_rv.empty?
    if @uspec_gv.empty? and @spec_gv.empty?
      @pspace.count(@spec_rv)
    else
      @pspace.count(@spec_rv.merge(@spec_gv))
    end
  else
    @pspace.count(@uspec_rv)
  end
end
given(*rand_vars) click to toggle source
# File lib/prolly/rand_var.rb, line 49
def given(*rand_vars)
  @uspec_gv, @spec_gv = parse(rand_vars)

  return self
end
parse(rand_vars) click to toggle source

parses rand_var arguments

random variable are passed in as arguments to a method. It can take the format of:

:size

{ size: :large, color: :green }

:size, { color: :green, texture: :rough }
# File lib/prolly/rand_var.rb, line 34
def parse(rand_vars)
  if rand_vars.kind_of?(Hash)
    specified_rvs = rand_vars
    unspecified_rvs = []
  elsif rand_vars.kind_of?(Array)
    specified_rvs, unspecified_rvs = rand_vars.partition { |e| e.kind_of?(Hash) }
    specified_rvs = specified_rvs.inject({}) { |t, e| t.merge(e) }
  else # if it's a symbol
    specified_rvs = []
    unspecified_rvs = [rand_vars]
  end

  return unspecified_rvs, specified_rvs
end