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