Class: Kaisoku::Evaluator::MutationSeeder
- Inherits:
-
Object
- Object
- Kaisoku::Evaluator::MutationSeeder
- Defined in:
- lib/kaisoku/evaluator/mutation_seeder.rb
Defined Under Namespace
Classes: Mutation
Constant Summary collapse
- PATTERNS =
{ 'true' => 'false', 'false' => 'true', 'nil' => 'false' }.freeze
Instance Method Summary collapse
-
#initialize(paths:, command:, limit: 10) ⇒ MutationSeeder
constructor
A new instance of MutationSeeder.
- #mutations ⇒ Object
- #mutations_for_source(file, source) ⇒ Object
- #report ⇒ Object
- #run ⇒ Object
Constructor Details
#initialize(paths:, command:, limit: 10) ⇒ MutationSeeder
Returns a new instance of MutationSeeder.
16 17 18 19 20 |
# File 'lib/kaisoku/evaluator/mutation_seeder.rb', line 16 def initialize(paths:, command:, limit: 10) @paths = Array(paths) @command = command @limit = limit.to_i end |
Instance Method Details
#mutations ⇒ Object
32 33 34 |
# File 'lib/kaisoku/evaluator/mutation_seeder.rb', line 32 def mutations ruby_files.flat_map { |file| mutations_for_file(file) } end |
#mutations_for_source(file, source) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/kaisoku/evaluator/mutation_seeder.rb', line 36 def mutations_for_source(file, source) PATTERNS.flat_map do |original, replacement| source.enum_for(:scan, /\b#{Regexp.escape(original)}\b/).map do Mutation.new(file: file, original: original, replacement: replacement, index: Regexp.last_match.begin(0)) end end end |
#report ⇒ Object
26 27 28 29 30 |
# File 'lib/kaisoku/evaluator/mutation_seeder.rb', line 26 def report results = run killed = results.count { |result| result[:killed] } "Mutation score: #{killed}/#{results.length}" end |
#run ⇒ Object
22 23 24 |
# File 'lib/kaisoku/evaluator/mutation_seeder.rb', line 22 def run mutations.first(@limit).map { |mutation| evaluate(mutation) } end |