Sha256: 99bc6aa4a79f9e7a280cb436fe39901c8a4216eb64a48ea38802dd6fa640eac0

Contents?: true

Size: 1.6 KB

Versions: 11

Compression:

Stored size: 1.6 KB

Contents

# encoding: utf-8

module Mutant
  # Abstract base class for mutant killers
  class Killer
    include Adamantium::Flat, AbstractType
    include Equalizer.new(:strategy, :mutation, :killed?)

    # Return strategy
    #
    # @return [Strategy]
    #
    # @api private
    #
    attr_reader :strategy

    # Return mutation to kill
    #
    # @return [Mutation]
    #
    # @api private
    #
    attr_reader :mutation

    # Initialize killer object
    #
    # @param [Strategy] strategy
    # @param [Mutation] mutation
    #
    # @return [undefined]
    #
    # @api private
    #
    def initialize(strategy, mutation)
      @strategy, @mutation = strategy, mutation
      @killed = run
    end

    # Test for kill failure
    #
    # @return [true]
    #   when killer succeeded
    #
    # @return [false]
    #   otherwise
    #
    # @api private
    #
    def success?
      mutation.success?(self)
    end
    memoize :success?

    # Test if mutant was killed
    #
    # @return [true]
    #   if mutant was killed
    #
    # @return [false]
    #   otherwise
    #
    # @api private
    #
    def killed?
      @killed
    end

    # Return mutated source
    #
    # @return [String]
    #
    # @api private
    #
    def mutation_source
      mutation.source
    end

  private

    # Return subject
    #
    # @return [Subject]
    #
    # @api private
    #
    def subject
      mutation.subject
    end

    # Run killer
    #
    # @return [true]
    #   when mutant was killed
    #
    # @return [false]
    #   otherwise
    #
    # @api private
    #
    abstract_method :run

  end # Killer
end # Mutant

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
mutant-0.3.6 lib/mutant/killer.rb
mutant-0.3.5 lib/mutant/killer.rb
mutant-0.3.4 lib/mutant/killer.rb
mutant-0.3.3 lib/mutant/killer.rb
mutant-0.3.2 lib/mutant/killer.rb
mutant-0.3.1 lib/mutant/killer.rb
mutant-0.3.0 lib/mutant/killer.rb
mutant-0.3.0.rc5 lib/mutant/killer.rb
mutant-0.3.0.rc4 lib/mutant/killer.rb
mutant-0.3.0.rc3 lib/mutant/killer.rb
mutant-0.3.0.rc2 lib/mutant/killer.rb