Class: Coverfield::Source::Class
- Inherits:
-
Object
- Object
- Coverfield::Source::Class
- Defined in:
- lib/coverfield/source/class.rb
Overview
Represents a class within a source file
Instance Attribute Summary collapse
-
#coverage ⇒ Object
readonly
Returns the value of attribute coverage.
-
#hints ⇒ Object
readonly
Returns the value of attribute hints.
-
#methods ⇒ Object
readonly
Returns the value of attribute methods.
-
#module_name ⇒ Object
readonly
Returns the value of attribute module_name.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#node ⇒ Object
readonly
Returns the value of attribute node.
-
#source_file ⇒ Object
readonly
Returns the value of attribute source_file.
Instance Method Summary collapse
-
#calculate_coverage ⇒ Object
Calculates the coverage of that class based on the relevant methods and sets the @coverage and the @hints fields.
-
#full_qualified_name ⇒ Object
Returns the full qualified name like Coverfield::Source::Class.
-
#initialize(class_name, module_name, node, source_file) ⇒ Class
constructor
Constructor.
-
#method_count ⇒ Object
Returns the total amount of methods within the class.
-
#relevant_method_count ⇒ Object
Returns the amount of methods, which should be covered by tests.
Constructor Details
#initialize(class_name, module_name, node, source_file) ⇒ Class
Constructor
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/coverfield/source/class.rb', line 8 public def initialize(class_name, module_name, node, source_file) @name = class_name @module_name = module_name @node = node @methods = [] @source_file = source_file @coverage = 0 @hints = [] find_methods end |
Instance Attribute Details
#coverage ⇒ Object (readonly)
Returns the value of attribute coverage.
5 6 7 |
# File 'lib/coverfield/source/class.rb', line 5 def coverage @coverage end |
#hints ⇒ Object (readonly)
Returns the value of attribute hints.
5 6 7 |
# File 'lib/coverfield/source/class.rb', line 5 def hints @hints end |
#methods ⇒ Object (readonly)
Returns the value of attribute methods.
5 6 7 |
# File 'lib/coverfield/source/class.rb', line 5 def methods @methods end |
#module_name ⇒ Object (readonly)
Returns the value of attribute module_name.
5 6 7 |
# File 'lib/coverfield/source/class.rb', line 5 def module_name @module_name end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
5 6 7 |
# File 'lib/coverfield/source/class.rb', line 5 def name @name end |
#node ⇒ Object (readonly)
Returns the value of attribute node.
5 6 7 |
# File 'lib/coverfield/source/class.rb', line 5 def node @node end |
#source_file ⇒ Object (readonly)
Returns the value of attribute source_file.
5 6 7 |
# File 'lib/coverfield/source/class.rb', line 5 def source_file @source_file end |
Instance Method Details
#calculate_coverage ⇒ Object
Calculates the coverage of that class based on the relevant methods and sets the @coverage and the @hints fields
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/coverfield/source/class.rb', line 43 public def calculate_coverage @coverage = 0 @hints = [] test_file = source_file.test_file methods.each do |method| # Is the method covered? if test_file.cover?(full_qualified_name, method.name) @coverage += 1 else # Should it be covered? if method.nocov? @coverage += 1 else # If it should be covered, but isn't, create a hint method_name = "#{name}.#{method.name}".red @hints << "Missing test for #{method_name}" end end end end |
#full_qualified_name ⇒ Object
Returns the full qualified name like Coverfield::Source::Class
21 22 23 24 25 |
# File 'lib/coverfield/source/class.rb', line 21 public def full_qualified_name name = @name name = "#{@module_name}::#{name}" unless @module_name.empty? name end |
#method_count ⇒ Object
Returns the total amount of methods within the class
36 37 38 |
# File 'lib/coverfield/source/class.rb', line 36 public def method_count @methods.size end |
#relevant_method_count ⇒ Object
Returns the amount of methods, which should be covered by tests
29 30 31 32 |
# File 'lib/coverfield/source/class.rb', line 29 public def relevant_method_count relevant_methods = @methods.select { |m| !m.nocov?} relevant_methods.size end |