Class: Evilution::Result::Summary

Inherits:
Object
  • Object
show all
Defined in:
lib/evilution/result/summary.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(results:, duration: 0.0, truncated: false, skipped: 0, disabled_mutations: []) ⇒ Summary

Returns a new instance of Summary.



9
10
11
12
13
14
15
16
# File 'lib/evilution/result/summary.rb', line 9

def initialize(results:, duration: 0.0, truncated: false, skipped: 0, disabled_mutations: [])
  @results = results
  @duration = duration
  @truncated = truncated
  @skipped = skipped
  @disabled_mutations = disabled_mutations
  freeze
end

Instance Attribute Details

#disabled_mutationsObject (readonly)

Returns the value of attribute disabled_mutations.



7
8
9
# File 'lib/evilution/result/summary.rb', line 7

def disabled_mutations
  @disabled_mutations
end

#durationObject (readonly)

Returns the value of attribute duration.



7
8
9
# File 'lib/evilution/result/summary.rb', line 7

def duration
  @duration
end

#resultsObject (readonly)

Returns the value of attribute results.



7
8
9
# File 'lib/evilution/result/summary.rb', line 7

def results
  @results
end

#skippedObject (readonly)

Returns the value of attribute skipped.



7
8
9
# File 'lib/evilution/result/summary.rb', line 7

def skipped
  @skipped
end

Instance Method Details

#coverage_gapsObject



85
86
87
# File 'lib/evilution/result/summary.rb', line 85

def coverage_gaps
  Evilution::Result::CoverageGapGrouper.new.call(survived_results)
end

#efficiencyObject



93
94
95
96
97
# File 'lib/evilution/result/summary.rb', line 93

def efficiency
  return 0.0 if duration.zero?

  killtime / duration
end

#equivalentObject



46
47
48
# File 'lib/evilution/result/summary.rb', line 46

def equivalent
  results.count(&:equivalent?)
end

#equivalent_resultsObject



77
78
79
# File 'lib/evilution/result/summary.rb', line 77

def equivalent_results
  results.select(&:equivalent?)
end

#errorsObject



38
39
40
# File 'lib/evilution/result/summary.rb', line 38

def errors
  results.count(&:error?)
end

#killedObject



26
27
28
# File 'lib/evilution/result/summary.rb', line 26

def killed
  results.count(&:killed?)
end

#killed_resultsObject



69
70
71
# File 'lib/evilution/result/summary.rb', line 69

def killed_results
  results.select(&:killed?)
end

#killtimeObject



89
90
91
# File 'lib/evilution/result/summary.rb', line 89

def killtime
  results.sum(0.0, &:duration)
end

#mutations_per_secondObject



99
100
101
102
103
# File 'lib/evilution/result/summary.rb', line 99

def mutations_per_second
  return 0.0 if duration.zero?

  total.to_f / duration
end

#neutralObject



42
43
44
# File 'lib/evilution/result/summary.rb', line 42

def neutral
  results.count(&:neutral?)
end

#neutral_resultsObject



73
74
75
# File 'lib/evilution/result/summary.rb', line 73

def neutral_results
  results.select(&:neutral?)
end

#peak_memory_mbObject



105
106
107
108
109
110
111
112
113
114
115
# File 'lib/evilution/result/summary.rb', line 105

def peak_memory_mb
  max_rss = nil
  results.each do |result|
    kb = result.child_rss_kb
    next unless kb

    max_rss = kb if max_rss.nil? || kb > max_rss
  end

  max_rss && (max_rss / 1024.0)
end

#scoreObject



54
55
56
57
58
59
# File 'lib/evilution/result/summary.rb', line 54

def score
  denominator = total - errors - neutral - equivalent - unresolved
  return 0.0 if denominator.zero?

  killed.to_f / denominator
end

#success?(min_score: 1.0) ⇒ Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/evilution/result/summary.rb', line 61

def success?(min_score: 1.0)
  score >= min_score
end

#survivedObject



30
31
32
# File 'lib/evilution/result/summary.rb', line 30

def survived
  results.count(&:survived?)
end

#survived_resultsObject



65
66
67
# File 'lib/evilution/result/summary.rb', line 65

def survived_results
  results.select(&:survived?)
end

#timed_outObject



34
35
36
# File 'lib/evilution/result/summary.rb', line 34

def timed_out
  results.count(&:timeout?)
end

#totalObject



22
23
24
# File 'lib/evilution/result/summary.rb', line 22

def total
  results.length
end

#truncated?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/evilution/result/summary.rb', line 18

def truncated?
  @truncated
end

#unresolvedObject



50
51
52
# File 'lib/evilution/result/summary.rb', line 50

def unresolved
  results.count(&:unresolved?)
end

#unresolved_resultsObject



81
82
83
# File 'lib/evilution/result/summary.rb', line 81

def unresolved_results
  results.select(&:unresolved?)
end