Sha256: 3d144f0dc07e24832983d9915533b53eb49cde91fa621463db57809c1ced6d08

Contents?: true

Size: 1.72 KB

Versions: 10

Compression:

Stored size: 1.72 KB

Contents

class MutationVerifier
  include Adamantium::Flat, Concord.new(:original_node, :expected, :generated)

  # Test if mutation was verified successfully
  #
  # @return [Boolean]
  #
  # @api private
  #
  def success?
    unparser.success? && missing.empty? && unexpected.empty?
  end

  # Return error report
  #
  # @return [String]
  #
  # @api private
  #
  def error_report
    unless unparser.success?
      return unparser.report
    end
    mutation_report
  end

private

  # Return unexpected mutations
  #
  # @return [Array<Parser::AST::Node>]
  #
  # @api private
  #
  def unexpected
    generated - expected
  end
  memoize :unexpected

  # Return mutation report
  #
  # @return [String]
  #
  # @api private
  #
  def mutation_report
    message = ['Original-AST:', original_node.inspect, 'Original-Source:', Unparser.unparse(original_node)]
    if missing.any?
      message << 'Missing mutations:'
      message << missing.map(&method(:format_mutation)).join("\n-----\n")
    end
    if unexpected.any?
      message << 'Unexpected mutations:'
      message << unexpected.map(&method(:format_mutation)).join("\n-----\n")
    end
    message.join("\n======\n")
  end

  # Format mutation
  #
  # @return [String]
  #
  # @api private
  #
  def format_mutation(node)
    [
      node.inspect,
      Unparser.unparse(node)
    ].join("\n")
  end

  # Return missing mutations
  #
  # @return [Array<Parser::AST::Node>]
  #
  # @api private
  #
  def missing
    expected - generated
  end
  memoize :missing

  # Return unparser verifier
  #
  # @return [Unparser::CLI::Source]
  #
  # @api private
  #
  def unparser
    Unparser::CLI::Source::Node.new(Unparser::Preprocessor.run(original_node))
  end
  memoize :unparser

end # MutationVerifier

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
mutant-0.7.3 spec/support/mutation_verifier.rb
mutant-0.7.2 spec/support/mutation_verifier.rb
mutant-0.7.1 spec/support/mutation_verifier.rb
mutant-0.6.7 spec/support/mutation_verifier.rb
mutant-0.6.6 spec/support/mutation_verifier.rb
mutant-0.6.5 spec/support/mutation_verifier.rb
mutant-0.6.4 spec/support/mutation_verifier.rb
mutant-0.6.3 spec/support/mutation_verifier.rb
mutant-0.6.2 spec/support/mutation_verifier.rb
mutant-0.6.0 spec/support/mutation_verifier.rb