class Fitting::Records::Unit::JsonSchema

Attributes

json_schema[R]

Public Class Methods

new(json_schema, tested_bodies) click to toggle source
# File lib/fitting/records/unit/json_schema.rb, line 13
def initialize(json_schema, tested_bodies)
  @json_schema = json_schema
  @tested_bodies = tested_bodies
end

Public Instance Methods

bodies() click to toggle source
# File lib/fitting/records/unit/json_schema.rb, line 18
def bodies
  @bodies ||= @tested_bodies.inject([]) do |res, tested_body|
    begin
      next res unless JSON::Validator.validate(@json_schema, tested_body)
      res.push(tested_body)
    rescue JSON::Schema::UriError
      res.push(tested_body)
    end
  end
end
combinations() click to toggle source
# File lib/fitting/records/unit/json_schema.rb, line 29
def combinations
  return @combinations if @combinations
  @combinations = []
  cover_json_schema = Fitting::Cover::JSONSchema.new(@json_schema)
  cover_json_schema.combi.map do |comb|
    @combinations.push(Fitting::Records::Unit::Combination.new(
      comb,
      bodies
    ))
  end
  @combinations
end
combinations_with_enum() click to toggle source
# File lib/fitting/records/unit/json_schema.rb, line 42
def combinations_with_enum
  return @combinations_with_enum if @combinations_with_enum
  @combinations_with_enum = []
  qwe = Fitting::Cover::JSONSchema.new(@json_schema).combi + Fitting::Cover::JSONSchemaEnum.new(@json_schema).combi
  qwe.map do |comb|
    @combinations_with_enum.push(Fitting::Records::Unit::Combination.new(
      comb,
      bodies
    ))
  end
  @combinations_with_enum
end
combinations_with_one_of() click to toggle source
# File lib/fitting/records/unit/json_schema.rb, line 55
def combinations_with_one_of
  return @combinations_with_one_of if @combinations_with_one_of
  @combinations_with_one_of = []
  qwe = Fitting::Cover::JSONSchema.new(@json_schema).combi + Fitting::Cover::JSONSchemaEnum.new(@json_schema).combi + Fitting::Cover::JSONSchemaOneOf.new(@json_schema).combi
  qwe.map do |comb|
    @combinations_with_one_of.push(Fitting::Records::Unit::Combination.new(
      comb,
      bodies
    ))
  end
  @combinations_with_one_of
end
cover() click to toggle source
# File lib/fitting/records/unit/json_schema.rb, line 68
def cover
  @cover ||= if bodies == []
               0
             else
               count = 0
               combinations.map do |combination|
                 count += 1 unless combination.valid_bodies == []
               end
               (count + 1) * 100 / (combinations.size + 1)
             end
end
cover_enum() click to toggle source
# File lib/fitting/records/unit/json_schema.rb, line 80
def cover_enum
  @cover_enum ||= if bodies == []
    0
  else
    count = 0
    combinations_with_enum.map do |combination|
      count += 1 unless combination.valid_bodies == []
    end
    (count + 1) * 100 / (combinations_with_enum.size + 1)
  end
end
cover_one_of() click to toggle source
# File lib/fitting/records/unit/json_schema.rb, line 92
def cover_one_of
  @cover_one_of ||= if bodies == []
    0
  else
    count = 0
    combinations_with_one_of.map do |combination|
      count += 1 unless combination.valid_bodies == []
    end
    (count + 1) * 100 / (combinations_with_one_of.size + 1)
  end
end