Class: Mutant::Env Private
- Inherits:
-
Object
- Object
- Mutant::Env
- Includes:
- Unparser::Adamantium
- Defined in:
- lib/mutant/env.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Abstract base class for mutant environments
Constant Summary collapse
- SEMANTICS_MESSAGE =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
"Fix your lib to follow normal ruby semantics!\n" \ '{Module,Class}#name should return resolvable constant name as String or nil'
Class Method Summary collapse
-
.empty(world, config) ⇒ Env
private
Construct minimal empty env.
Instance Method Summary collapse
-
#amount_mutations ⇒ Integer
private
Amount of mutations.
-
#amount_selected_tests ⇒ Integer
private
Amount of selected tests.
-
#amount_subjects ⇒ Integer
private
Amount of selected subjects.
-
#amount_total_tests ⇒ Integer
private
Amount of tests reachable by integration.
-
#cover_index(mutation_index) ⇒ Result::MutationIndex
private
Cover mutation with specific index.
-
#selected_tests ⇒ Set<Test>
private
Selected tests.
-
#selections ⇒ Object
private
The test selections.
-
#test_subject_ratio ⇒ Rational
private
Ratio between selected tests and subjects.
-
#warn(message) ⇒ self
private
Emit warning.
Class Method Details
.empty(world, config) ⇒ Env
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.
Construct minimal empty env
rubocop:disable Metrics/MethodLength
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/mutant/env.rb', line 29 def self.empty(world, config) new( config: config, integration: Integration::Null.new( expression_parser: config.expression_parser, world: world ), matchable_scopes: EMPTY_ARRAY, mutations: EMPTY_ARRAY, parser: Parser.new, selector: Selector::Null.new, subjects: EMPTY_ARRAY, world: world ) end |
Instance Method Details
#amount_mutations ⇒ Integer
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.
Amount of mutations
96 97 98 |
# File 'lib/mutant/env.rb', line 96 def amount_mutations mutations.length end |
#amount_selected_tests ⇒ Integer
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.
Amount of selected tests
120 121 122 |
# File 'lib/mutant/env.rb', line 120 def amount_selected_tests selected_tests.length end |
#amount_subjects ⇒ Integer
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.
Amount of selected subjects
112 113 114 |
# File 'lib/mutant/env.rb', line 112 def amount_subjects subjects.length end |
#amount_total_tests ⇒ Integer
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.
Amount of tests reachable by integration
104 105 106 |
# File 'lib/mutant/env.rb', line 104 def amount_total_tests integration.all_tests.length end |
#cover_index(mutation_index) ⇒ Result::MutationIndex
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.
Cover mutation with specific index
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/mutant/env.rb', line 51 def cover_index(mutation_index) mutation = mutations.fetch(mutation_index) start = timer.now tests = selections.fetch(mutation.subject) Result::MutationIndex.new( isolation_result: run_mutation_tests(mutation, tests), mutation_index: mutation_index, runtime: timer.now - start ) end |
#selected_tests ⇒ Set<Test>
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.
Selected tests
88 89 90 |
# File 'lib/mutant/env.rb', line 88 def selected_tests selections.values.flatten.to_set end |
#selections ⇒ Object
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.
The test selections
68 69 70 71 72 |
# File 'lib/mutant/env.rb', line 68 def selections subjects.map do |subject| [subject, selector.call(subject)] end.to_h end |
#test_subject_ratio ⇒ Rational
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.
Ratio between selected tests and subjects
128 129 130 131 132 |
# File 'lib/mutant/env.rb', line 128 def test_subject_ratio return Rational(0) if amount_subjects.zero? Rational(amount_selected_tests, amount_subjects) end |
#warn(message) ⇒ 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.
Emit warning
80 81 82 83 |
# File 'lib/mutant/env.rb', line 80 def warn() config.reporter.warn() self end |