Class: Fitting::Statistics::Template

Inherits:
Object
  • Object
show all
Defined in:
lib/fitting/statistics/template.rb

Instance Method Summary collapse

Constructor Details

#initialize(tested_requests, config, depth = 'valid') ⇒ Template

Returns a new instance of Template.



14
15
16
17
18
# File 'lib/fitting/statistics/template.rb', line 14

def initialize(tested_requests, config, depth = 'valid')
  @tested_requests = tested_requests
  @config = config
  @depth = depth
end

Instance Method Details

#black_measurementObject



62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/fitting/statistics/template.rb', line 62

def black_measurement
  @black_measurement ||=
    if @depth == 'valid'
      Fitting::Statistics::Measurement.new(black_unit)
    elsif @depth == 'cover'
      Fitting::Statistics::MeasurementCover.new(black_unit)
    elsif @depth == 'cover_enum'
      Fitting::Statistics::MeasurementCoverEnum.new(black_unit)
    elsif @depth == 'cover_one_of'
      Fitting::Statistics::MeasurementCoverOneOf.new(black_unit)
    end
end

#black_statisticsObject



45
46
47
# File 'lib/fitting/statistics/template.rb', line 45

def black_statistics
  @black_statistics ||= Fitting::Statistics::Analysis.new(black_measurement, @depth)
end

#black_unitObject



81
82
83
84
85
# File 'lib/fitting/statistics/template.rb', line 81

def black_unit
  @black_unit_requests ||= documented_requests_black.inject([]) do |res, documented_request|
    res.push(Fitting::Records::Unit::Request.new(documented_request, @tested_requests))
  end
end

#documentedObject



97
98
99
100
101
# File 'lib/fitting/statistics/template.rb', line 97

def documented
  @documented_requests ||= @config.tomogram.to_a.inject([]) do |res, tomogram_request|
    res.push(Fitting::Records::Documented::Request.new(tomogram_request, white_list.to_a))
  end
end

#documented_requests_blackObject



91
92
93
94
95
# File 'lib/fitting/statistics/template.rb', line 91

def documented_requests_black
  @documented_requests_black ||= documented.find_all do |request|
    !request.white
  end
end

#documented_requests_whiteObject



87
88
89
# File 'lib/fitting/statistics/template.rb', line 87

def documented_requests_white
  @documented_requests_white ||= documented.find_all(&:white)
end

#not_coveredObject



37
38
39
# File 'lib/fitting/statistics/template.rb', line 37

def not_covered
  Fitting::Statistics::NotCoveredResponses.new(white_measurement).to_s
end

#saveObject



20
21
22
23
# File 'lib/fitting/statistics/template.rb', line 20

def save
  File.open(@config.stats_path, 'w') { |file| file.write(stats) }
  File.open(@config.not_covered_path, 'w') { |file| file.write(not_covered) }
end

#statsObject



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/fitting/statistics/template.rb', line 25

def stats
  if @config.white_list.present? || @config.resource_white_list.present? || @config.include_resources.present?
    [
      ['[Black list]', black_statistics].join("\n"),
      ['[White list]', white_statistics].join("\n"),
      ''
    ].join("\n\n")
  else
    [white_statistics, "\n\n"].join
  end
end

#white_listObject



103
104
105
106
107
108
109
110
111
112
# File 'lib/fitting/statistics/template.rb', line 103

def white_list
  @white_list ||= Fitting::Storage::WhiteList.new(
    @config.prefix,
    @config.white_list,
    @config.resource_white_list,
    @config.include_resources,
    @config.include_actions,
    @config.tomogram.to_resources
  )
end

#white_measurementObject



49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/fitting/statistics/template.rb', line 49

def white_measurement
  @white_measurement ||=
    if @depth == 'valid'
      Fitting::Statistics::Measurement.new(white_unit)
    elsif @depth == 'cover'
      Fitting::Statistics::MeasurementCover.new(white_unit)
    elsif @depth == 'cover_enum'
      Fitting::Statistics::MeasurementCoverEnum.new(white_unit)
    elsif @depth == 'cover_one_of'
      Fitting::Statistics::MeasurementCoverOneOf.new(white_unit)
    end
end

#white_statisticsObject



41
42
43
# File 'lib/fitting/statistics/template.rb', line 41

def white_statistics
  @white_statistics ||= Fitting::Statistics::Analysis.new(white_measurement, @depth)
end

#white_unitObject



75
76
77
78
79
# File 'lib/fitting/statistics/template.rb', line 75

def white_unit
  @white_unit_requests ||= documented_requests_white.inject([]) do |res, documented_request|
    res.push(Fitting::Records::Unit::Request.new(documented_request, @tested_requests))
  end
end