class Inspec::Reporters::CLI::Control

def anonymous?

def anonymous?
  id.start_with?('(generated from ')
end

def failure_count

def failure_count
  results.select { |r| r[:status] == 'failed' }.size
end

def id

def id
  data[:id]
end

def impact

def impact
  data[:impact]
end

def impact_string

def impact_string
  if anonymous?
    nil
  elsif impact.nil?
    'unknown'
  elsif results&.find { |r| r[:status] == 'skipped' }
    'skipped'
  elsif results.nil? || results.empty? || results.all? { |r| r[:status] == 'passed' }
    'passed'
  else
    'failed'
  end
end

def impact_string_for_result(result)

def impact_string_for_result(result)
  if result[:status] == 'skipped'
    'skipped'
  elsif result[:status] == 'passed'
    'passed'
  elsif impact.nil?
    'unknown'
  else
    'failed'
  end
end

def initialize(control_hash)

def initialize(control_hash)
  @data = control_hash
end

def results

def results
  data[:results]
end

def skipped_count

def skipped_count
  results.select { |r| r[:status] == 'skipped' }.size
end

def title

def title
  data[:title]
end

def title_for_report

def title_for_report
  # if this is an anonymous control, just grab the resource title from any result entry
  return results.first[:resource_title] if anonymous?
  title_for_report = "#{id}: #{title || results.first[:resource_title]}"
  # we will not add any additional data to the title if there's only
  # zero or one test for this control.
  return title_for_report if results.nil? || results.size <= 1
  # append a failure summary if appropriate.
  title_for_report += " (#{failure_count} failed)" if failure_count > 0
  title_for_report += " (#{skipped_count} skipped)" if skipped_count > 0
  title_for_report
end