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



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

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

#efficiencyObject



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

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



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

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



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

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

#killtimeObject



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

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

#mutations_per_secondObject



91
92
93
94
95
# File 'lib/evilution/result/summary.rb', line 91

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



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

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

#peak_memory_mbObject



97
98
99
100
101
102
103
104
105
106
107
# File 'lib/evilution/result/summary.rb', line 97

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



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

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

  killed.to_f / denominator
end

#success?(min_score: 1.0) ⇒ Boolean

Returns:

  • (Boolean)


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

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



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

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