Sha256: bfd1ac0ed8b904ae46006e08cb3146259ebec4ebeb7426c3fe859b74ccf07e70

Contents?: true

Size: 1.33 KB

Versions: 6

Compression:

Stored size: 1.33 KB

Contents

module Mutant

  # Abstract base class for killing strategies
  class Strategy 
    include AbstractType, Adamantium::Flat, Equalizer.new

    # Return config
    #
    # @return [Config]
    #
    # @api private
    #
    attr_reader :config

    # Initialize object
    #
    # @param [Config] config
    #
    # @return [undefined
    #
    # @api private
    #
    def initialize(config)
      @config = config
    end

    # Return output stream
    #
    # @return [IO]
    #
    # @api private
    #
    def output_stream
      config.reporter.output_stream
    end

    # Return error stream
    #
    # @return [IO]
    #
    # @api private
    #
    def error_stream
      config.reporter.error_stream
    end

    # Kill mutation
    #
    # @param [Mutation] mutation
    #
    # @return [Killer]
    #
    # @api private
    #
    def kill(mutation)
      killer.new(self, mutation)
    end

    # Return killer
    #
    # @return [Class:Killer]
    #
    # @api private
    #
    def killer
      self.class::KILLER
    end

    # Static strategies
    class Static < self
      include Equalizer.new

      # Always fail to kill strategy
      class Fail < self
        KILLER = Killer::Static::Fail
      end

      # Always succeed to kill strategy
      class Success < self
        KILLER = Killer::Static::Success
      end

    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
mutant-0.2.20 lib/mutant/strategy.rb
mutant-0.2.17 lib/mutant/strategy.rb
mutant-0.2.16 lib/mutant/strategy.rb
mutant-0.2.15 lib/mutant/strategy.rb
mutant-0.2.14 lib/mutant/strategy.rb
mutant-0.2.13 lib/mutant/strategy.rb