Sha256: c9158e624a645251ec6c9e73066069f4c4c41e21bd2815286816b168a9d3dec2

Contents?: true

Size: 1.09 KB

Versions: 8

Compression:

Stored size: 1.09 KB

Contents

module Mutest
  class Mutator
    class Node
      # Mutator for case nodes
      class Case < self
        handle(:case)

        children :condition

        private

        # Emit mutations
        #
        # @return [undefined]
        def dispatch
          emit_singletons
          emit_condition_mutations if condition
          emit_when_mutations
          emit_else_mutations
        end

        # Emit when mutations
        #
        # @return [undefined]
        def emit_when_mutations
          indices = children.each_index.drop(1).take(children.length - 2)
          one = indices.one?
          indices.each do |index|
            mutate_child(index)
            delete_child(index) unless one
          end
        end

        # Emit else mutations
        #
        # @return [undefined]
        def emit_else_mutations
          else_branch = children.last
          else_index = children.length - 1
          return unless else_branch
          mutate_child(else_index)
          emit_child_update(else_index, nil)
        end
      end # Case
    end # Node
  end # Mutator
end # Mutest

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
mutest-0.0.9 lib/mutest/mutator/node/case.rb
mutest-0.0.8 lib/mutest/mutator/node/case.rb
mutest-0.0.7 lib/mutest/mutator/node/case.rb
mutest-0.0.6 lib/mutest/mutator/node/case.rb
mutest-0.0.5 lib/mutest/mutator/node/case.rb
mutest-0.0.4 lib/mutest/mutator/node/case.rb
mutest-0.0.3 lib/mutest/mutator/node/case.rb
mutest-0.0.2 lib/mutest/mutator/node/case.rb