Sha256: 270d64de0af352f23fa6698a1e957ccec1e930b099918513704327165b7abacf

Contents?: true

Size: 1.35 KB

Versions: 7

Compression:

Stored size: 1.35 KB

Contents

module Mutant
  class Runner
    # Subject specific runner
    class Subject < self
      include Concord::Public.new(:config, :subject)

      register Mutant::Subject

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

      # Return mutation runners
      #
      # @return [Enumerable<Runner::Mutation>]
      #
      # @api private
      #
      attr_reader :mutations

      # Return failed mutations
      #
      # @return [Enumerable<Mutation>]
      #
      # @api private
      #
      def failed_mutations
        mutations.reject(&:success?)
      end
      memoize :failed_mutations

      # Test if subject was processed successful
      #
      # @return [true]
      #   if successful
      #
      # @return [false]
      #   otherwise
      #
      # @api private
      #
      def success?
        failed_mutations.empty?
      end

    private

      # Perform operation
      #
      # @return [undefined]
      #
      # @api private
      #
      def run
        subject = self.subject
        report(subject)
        @mutations = dispatch(subject.mutations)
        report(self)
      end

    end # Subject
  end # Runner
end # Mutant

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
mutant-0.3.0.beta21 lib/mutant/runner/subject.rb
mutant-0.3.0.beta20 lib/mutant/runner/subject.rb
mutant-0.3.0.beta19 lib/mutant/runner/subject.rb
mutant-0.3.0.beta18 lib/mutant/runner/subject.rb
mutant-0.3.0.beta17 lib/mutant/runner/subject.rb
mutant-0.3.0.beta16 lib/mutant/runner/subject.rb
mutant-0.3.0.beta15 lib/mutant/runner/subject.rb