module Degenerate::Generators

Constants

GENERATORS
HTTP_STATUSES
INTEGER_MAX
INTEGER_MIN

Public Class Methods

any() click to toggle source
# File lib/degenerate/generators.rb, line 31
def self.any
  send(GENERATORS.sample)
end
array() click to toggle source
# File lib/degenerate/generators.rb, line 22
def self.array
  ->(opts={}) {
    limit = opts[:limit] || random_int
    of = Array(opts [:of] ||
               send([:integer, :string].sample).call(limit: 1000))
    array_of(limit, *of)
  }
end
http_status() click to toggle source
# File lib/degenerate/generators.rb, line 35
def self.http_status
  ->(_={}) { HTTP_STATUSES.sample }
end
integer() click to toggle source
# File lib/degenerate/generators.rb, line 10
def self.integer
  ->(opts={}) { rand((opts[:min] || INTEGER_MIN)..(opts[:max] || INTEGER_MAX)) }
end
string() click to toggle source
# File lib/degenerate/generators.rb, line 14
def self.string
  ->(opts={}) {
    chars = opts[:of] || default_chars
    limit = opts[:limit] || random_int
    random_string_of(chars, limit)
  }
end

Private Class Methods

array_of(limit, *generated) click to toggle source
# File lib/degenerate/generators.rb, line 45
def self.array_of(limit, *generated)
  [].class.new(random_int(limit)) { generated.sample }
end
default_chars() click to toggle source
# File lib/degenerate/generators.rb, line 41
def self.default_chars
  ('1'..'z').to_a
end
random_int(limit=9999) click to toggle source
# File lib/degenerate/generators.rb, line 53
def self.random_int(limit=9999)
  Degenerate::Generators.integer.call(min: 0, max: limit)
end
random_string_of(chars, limit) click to toggle source
# File lib/degenerate/generators.rb, line 49
def self.random_string_of(chars, limit)
  [].class.new(random_int(limit)) { chars.sample }.join
end