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
Class Method Summary collapse
-
.success?(test_result) ⇒ Boolean
private
Test if mutation is killed by test reports.
Instance Method Summary collapse
-
#code ⇒ String
private
Return mutation code.
-
#identification ⇒ String
private
Return identification.
-
#insert ⇒ self
private
Insert mutated node.
-
#original_source ⇒ String
private
Return original source.
-
#source ⇒ String
private
Return source.
Class Method Details
.success?(test_result) ⇒ 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 reports
61 62 63 |
# File 'lib/mutant/mutation.rb', line 61 def self.success?(test_result) self::TEST_PASS_SUCCESS.equal?(test_result.passed) end |
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
27 28 29 |
# File 'lib/mutant/mutation.rb', line 27 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
16 17 18 |
# File 'lib/mutant/mutation.rb', line 16 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.
75 76 77 78 79 80 |
# File 'lib/mutant/mutation.rb', line 75 def insert subject.public? subject.prepare Loader::Eval.call(root, subject) self 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
49 50 51 |
# File 'lib/mutant/mutation.rb', line 49 def original_source subject.source 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
38 39 40 |
# File 'lib/mutant/mutation.rb', line 38 def source Unparser.unparse(node) end |