lib/coco/cover/coverage_stat.rb in coco-0.10.0 vs lib/coco/cover/coverage_stat.rb in coco-0.11.0

- old
+ new

@@ -1,33 +1,40 @@ # -*- encoding: utf-8 -*- module Coco - # Give statistics about an array of lines hit. + # Public: Give statistics about an array of lines hit. # # An "array of lines hit" is an array of integers, possibly nil. # Such array is obtain from Coverage.result. # # Each integer represent the state of a source line: - # * nil: source line will never be reached (like comments) - # * 0: source line could be reached, but was not - # * 1 and above: number of time the source line has been reached - class CoverageStat - - def CoverageStat.remove_nil_from hits - hits.select {|elem| not elem.nil?} - end - - def CoverageStat.number_of_covered_lines hits - hits.select {|elem| elem > 0}.size - end - - def CoverageStat.coverage_percent hits - hits = CoverageStat.remove_nil_from hits + # * nil: source line will never be reached (like comments). + # * 0: source line could be reached, but was not. + # * 1 and above: number of time the source line has been reached. + module CoverageStat + extend self + + # Public: Compute the percentage of code coverage for a file. + # The file is represented by an array of hits. + # + # hits - Array of Integer. + # + # Returns a Integer (rounded) percentage. + def coverage_percent(hits) + hits = hits.compact return 0 if hits.empty? one_percent = 100.0 / hits.size - (CoverageStat.number_of_covered_lines(hits) * one_percent).to_i + (number_of_covered_lines(hits) * one_percent).to_i end - + + # Compute the total of covered lines in a hits array. + # + # hits - Array of Integer. + # + # Returns Integer. + def number_of_covered_lines(hits) + hits.select {|hit| hit > 0 }.size + end + end - end