Sha256: b1ac1ef282c8d82c342d75858d6b301ca4e7e6ec5252c9e908c54f49e406c6a8

Contents?: true

Size: 1.43 KB

Versions: 21

Compression:

Stored size: 1.43 KB

Contents

module Mutant
  class Mutator
    class Node

      # Mutator for when nodes
      class When < self

        handle(:when)

      private

        # Emit mutations
        #
        # @return [undefined]
        #
        # @api private
        #
        def dispatch
          if body
            mutate_body
          else
            emit_child_update(body_index, N_RAISE)
          end
          mutate_conditions
        end

        # Emit condition mutations
        #
        # @return [undefined]
        #
        # @api private
        #
        def mutate_conditions
          conditions = children.length - 1
          children[0..-2].each_index do |index|
            delete_child(index) if conditions > 1
            mutate_child(index)
          end
        end

        # Emit body mutations
        #
        # @return [undefined]
        #
        # @api private
        #
        def mutate_body
          mutate_child(body_index)
        end

        # Return body node
        #
        # @return [Parser::AST::Node]
        #   if body is present
        #
        # @return [nil]
        #   otherwise
        #
        # @api private
        #
        def body
          children[body_index]
        end

        # Return body index
        #
        # @return [Fixnum]
        #
        # @api private
        #
        def body_index
          children.length - 1
        end

      end # When
    end # Node
  end # Mutator
end # Mutant

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
mutant-0.8.0 lib/mutant/mutator/node/when.rb
mutant-0.7.9 lib/mutant/mutator/node/when.rb
mutant-0.7.8 lib/mutant/mutator/node/when.rb
mutant-0.7.7 lib/mutant/mutator/node/when.rb
mutant-0.7.6 lib/mutant/mutator/node/when.rb
mutant-0.7.5 lib/mutant/mutator/node/when.rb
mutant-0.7.4 lib/mutant/mutator/node/when.rb
mutant-0.7.3 lib/mutant/mutator/node/when.rb
mutant-0.7.2 lib/mutant/mutator/node/when.rb
mutant-0.7.1 lib/mutant/mutator/node/when.rb
mutant-0.6.7 lib/mutant/mutator/node/when.rb
mutant-0.6.6 lib/mutant/mutator/node/when.rb
mutant-0.6.5 lib/mutant/mutator/node/when.rb
mutant-0.6.4 lib/mutant/mutator/node/when.rb
mutant-0.6.3 lib/mutant/mutator/node/when.rb
mutant-0.6.2 lib/mutant/mutator/node/when.rb
mutant-0.6.0 lib/mutant/mutator/node/when.rb
mutant-0.5.26 lib/mutant/mutator/node/when.rb
mutant-0.5.25 lib/mutant/mutator/node/when.rb
mutant-0.5.24 lib/mutant/mutator/node/when.rb