Class: Henitai::MutantGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/henitai/mutant_generator.rb

Overview

Traverses a subject’s AST and asks operators to build mutants.

Defined Under Namespace

Classes: SubjectVisitor

Instance Method Summary collapse

Instance Method Details

#generate(subjects, operators, config: nil) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/henitai/mutant_generator.rb', line 9

def generate(subjects, operators, config: nil)
  normalized_operators = normalize_operators(operators)
  arid_node_filter = AridNodeFilter.new
  syntax_validator = SyntaxValidator.new
  sampling_strategy = SamplingStrategy.new

  mutants = Array(subjects).flat_map do |subject|
    generate_for_subject(
      subject,
      normalized_operators,
      config:,
      arid_node_filter:,
      syntax_validator:
    )
  end

  sample_mutants(mutants, config:, sampling_strategy:)
end