Class: JSONSchemer::Fuzz::PrimitiveType::Number

Inherits:
Object
  • Object
show all
Defined in:
lib/json_schemer/fuzz/primitive_type/number.rb

Class Method Summary collapse

Class Method Details

.invalid_params(attributes) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/json_schemer/fuzz/primitive_type/number.rb', line 6

def invalid_params(attributes)
  generated_params = []
  if type = attributes["type"]
    valid_types = [type].flatten
    generated_params = ["0.1", "10", "hoge"] unless valid_types.include?("string")
    JSONSchemer::Fuzz::PrimitiveType.invalid_params_by_type(attributes).each do |invalid_param|
      generated_params << invalid_param
    end
  end

  attributes.each do |keyword, attribute|
    if klass = keyword_to_class_map[keyword]
      klass.invalid_params(attributes).each do |invalid_param|
        generated_params << invalid_param
      end
    end
  end

  generated_params
end

.keyword_to_class_mapObject



39
40
41
42
43
44
45
# File 'lib/json_schemer/fuzz/primitive_type/number.rb', line 39

def keyword_to_class_map
  {
    "minimum" => JSONSchemer::Fuzz::Keyword::Minimum,
    "maximum" => JSONSchemer::Fuzz::Keyword::Maximum,
    "multipleOf" => JSONSchemer::Fuzz::Keyword::MultipleOf,
  }
end

.valid_param(attributes = {}) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/json_schemer/fuzz/primitive_type/number.rb', line 27

def valid_param(attributes = {})
  valid_params = []

  attributes.each do |keyword, attribute|
    if klass = keyword_to_class_map[keyword]
      valid_params << klass.valid_param(attributes).to_f
    end
  end

  valid_params.empty? ? rand : valid_params.sample
end