Sha256: 9b0e32216f3dd6d002e6a0e7c3dd0e55c132c280552df040703bd52a62dde76c

Contents?: true

Size: 1.39 KB

Versions: 1

Compression:

Stored size: 1.39 KB

Contents

module JSONSchemer
  module Fuzz
    class Keyword
      class Maximum
        class << self
          def invalid_params(attributes)
            maximum_value = attributes["maximum"]
            raise "No maximum keyword given: #{attributes}" unless maximum_value

            generated_params = []
            unit_value = (attributes.key?("type") && attributes["type"] == "integer") ? 1 : 0.1

            if attributes["exclusiveMaximum"]
              generated_params.push(maximum_value)
            else
              generated_params.push(maximum_value + unit_value)
            end

            generated_params
          end

          def valid_param(attributes)
            maximum_value = attributes["maximum"]
            raise "No maximum keyword given: #{attributes}" unless maximum_value

            unit_value = (attributes.key?("type") && attributes["type"] == "integer") ? 1 : 0.1
            maximum_value -= unit_value if attributes["exclusiveMaximum"]

            if minimum_value = attributes["minimum"]
              minimum_value += unit_value if attributes["exclusiveMinimum"]
              if attributes["exclusiveMaximum"]
                Random.rand(minimum_value...maximum_value)
              else
                Random.rand(minimum_value..maximum_value)
              end
            else
              maximum_value
            end
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
json_schemer-fuzz-1.0.0 lib/json_schemer/fuzz/keyword/maximum.rb