class Jfuzz::NumberGenerator

Public Class Methods

type() click to toggle source
# File lib/jfuzz/generators/number_generator.rb, line 12
def self.type
  "number"
end

Public Instance Methods

generate() click to toggle source
# File lib/jfuzz/generators/number_generator.rb, line 8
def generate
  random_number
end

Private Instance Methods

exclusive_maximum?() click to toggle source
# File lib/jfuzz/generators/number_generator.rb, line 59
def exclusive_maximum?
  property.fetch("exclusiveMaximum", false)
end
exclusive_minimum?() click to toggle source
# File lib/jfuzz/generators/number_generator.rb, line 63
def exclusive_minimum?
  property.fetch("exclusiveMinimum", false)
end
generate_multiple(min, max) click to toggle source
# File lib/jfuzz/generators/number_generator.rb, line 29
def generate_multiple(min, max)
  factor = property.fetch("multipleOf").to_f

  min /= factor
  max /= factor
  rand(min..max).to_i * factor
end
maximum() click to toggle source
# File lib/jfuzz/generators/number_generator.rb, line 42
def maximum
  return property.fetch("maximum").to_f if maximum?
  Jfuzz.max_integer.to_f
end
maximum?() click to toggle source
# File lib/jfuzz/generators/number_generator.rb, line 55
def maximum?
  property.key?("maximum")
end
minimum() click to toggle source
# File lib/jfuzz/generators/number_generator.rb, line 37
def minimum
  return property.fetch("minimum").to_f if minimum?
  Jfuzz.min_integer.to_f
end
minimum?() click to toggle source
# File lib/jfuzz/generators/number_generator.rb, line 51
def minimum?
  property.key?("minimum")
end
multiple_of?() click to toggle source
# File lib/jfuzz/generators/number_generator.rb, line 47
def multiple_of?
  property.key?("multipleOf")
end
random_number() click to toggle source
# File lib/jfuzz/generators/number_generator.rb, line 18
def random_number
  min = minimum
  max = maximum
  min + 0.1 if exclusive_minimum?
  max - 0.1 if exclusive_maximum?

  return generate_multiple(min, max) if multiple_of?

  rand(min..max)
end