Class: Mutant::Mutation
- Inherits:
-
Object
- Object
- Mutant::Mutation
- Includes:
- AbstractType, Adamantium::Flat
- Defined in:
- lib/mutant/mutation.rb
Overview
Represent a mutated node with its subject
Defined Under Namespace
Constant Summary collapse
- CODE_DELIMITER =
"\0".freeze
- CODE_RANGE =
(0..4).freeze
Instance Method Summary collapse
-
#code ⇒ String
private
Return mutation code.
-
#identification ⇒ String
private
Return identification.
-
#insert ⇒ self
private
Insert mutated node.
-
#killed_by?(test_report) ⇒ Boolean
private
Test if mutation is killed by test report.
-
#original_source ⇒ String
private
Return original source.
-
#root ⇒ Parser::AST::Node
private
Return mutated root node.
-
#source ⇒ String
private
Return source.
Instance Method Details
#code ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Return mutation code
54 55 56 |
# File 'lib/mutant/mutation.rb', line 54 def code sha1[CODE_RANGE] end |
#identification ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Return identification
43 44 45 |
# File 'lib/mutant/mutation.rb', line 43 def identification "#{self.class::SYMBOL}:#{subject.identification}:#{code}" end |
#insert ⇒ self
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Insert mutated node
FIXME: Cache subject visibility in a better way! Ideally dont mutate it
implicitly. Also subject.public? should NOT be a public interface it
is a detail of method mutations.
31 32 33 34 35 |
# File 'lib/mutant/mutation.rb', line 31 def insert subject.public? Loader::Eval.call(root, subject) self end |
#killed_by?(test_report) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Test if mutation is killed by test report
88 89 90 |
# File 'lib/mutant/mutation.rb', line 88 def killed_by?(test_report) self.class::SHOULD_PASS.equal?(test_report.passed) end |
#original_source ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Return original source
76 77 78 |
# File 'lib/mutant/mutation.rb', line 76 def original_source subject.source end |
#root ⇒ Parser::AST::Node
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Return mutated root node
16 17 18 |
# File 'lib/mutant/mutation.rb', line 16 def root subject.root(node) end |
#source ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Return source
65 66 67 |
# File 'lib/mutant/mutation.rb', line 65 def source Unparser.unparse(node) end |