Class: ActiveMutator::Reporter::Terminal
- Inherits:
-
Object
- Object
- ActiveMutator::Reporter::Terminal
- Defined in:
- lib/active_mutator/reporter/terminal.rb
Constant Summary collapse
- CHARS =
{ killed: ".", survived: "S", timeout: "T", error: "E", uncovered: "U", accepted: "A" }.freeze
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(out: $stdout) ⇒ Terminal
constructor
A new instance of Terminal.
- #on_result(result) ⇒ Object
- #summary(results, invalid_count:) ⇒ Object
Constructor Details
#initialize(out: $stdout) ⇒ Terminal
Returns a new instance of Terminal.
6 7 8 |
# File 'lib/active_mutator/reporter/terminal.rb', line 6 def initialize(out: $stdout) @out = out end |
Class Method Details
.score(counts) ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/active_mutator/reporter/terminal.rb', line 26 def self.score(counts) detected = counts.fetch(:killed, 0) + counts.fetch(:timeout, 0) denominator = detected + counts.fetch(:survived, 0) return 1.0 if denominator.zero? detected.to_f / denominator end |
Instance Method Details
#on_result(result) ⇒ Object
10 11 12 |
# File 'lib/active_mutator/reporter/terminal.rb', line 10 def on_result(result) @out.print(CHARS.fetch(result.status)) end |
#summary(results, invalid_count:) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/active_mutator/reporter/terminal.rb', line 14 def summary(results, invalid_count:) counts = results.group_by(&:status).transform_values(&:size) @out.puts "", "" CHARS.each_key do |status| @out.puts "#{status}: #{counts.fetch(status, 0)}" end @out.puts "invalid (discarded): #{invalid_count}" @out.puts format("Mutation score: %.1f%%", score(counts) * 100) survivors = results.select { |r| r.status == :survived } print_survivors(survivors) unless survivors.empty? end |