Sha256: d512491d16b1637b334264c20b0478cee96bc8cc992c6cad88db0152dca6f5a2

Contents?: true

Size: 1.15 KB

Versions: 16

Compression:

Stored size: 1.15 KB

Contents

# encoding: UTF-8

shared_examples_for 'a mutator' do
  subject { object.each(node, &yields.method(:<<)) }

  let(:yields) { []              }
  let(:object) { described_class }

  unless instance_methods.include?(:node)
    let(:node) { parse(source) }
  end

  it_should_behave_like 'a command method'

  context 'with no block' do
    subject { object.each(node) }

    it { should be_instance_of(to_enum.class) }

    def coerce(input)
      case input
      when String
        Parser::CurrentRuby.parse(input)
      when Parser::AST::Node
        input
      else
        raise
      end
    end

    def normalize(node)
      Unparser::Preprocessor.run(node)
    end

    let(:expected_mutations) do
      mutations.map(&method(:coerce)).map(&method(:normalize))
    end

    it 'generates the expected mutations' do
      generated_mutations = subject.map(&method(:normalize))

      verifier = MutationVerifier.new(node, expected_mutations, generated_mutations)

      unless verifier.success?
        fail verifier.error_report
      end
    end
  end
end

shared_examples_for 'a noop mutator' do
  let(:mutations) { [] }

  it_should_behave_like 'a mutator'
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
mutant-0.5.26 spec/shared/mutator_behavior.rb
mutant-0.5.25 spec/shared/mutator_behavior.rb
mutant-0.5.24 spec/shared/mutator_behavior.rb
mutant-0.5.23 spec/shared/mutator_behavior.rb
mutant-0.5.22 spec/shared/mutator_behavior.rb
mutant-0.5.21 spec/shared/mutator_behavior.rb
mutant-0.5.20 spec/shared/mutator_behavior.rb
mutant-0.5.19 spec/shared/mutator_behavior.rb
mutant-0.5.18 spec/shared/mutator_behavior.rb
mutant-0.5.17 spec/shared/mutator_behavior.rb
mutant-0.5.16 spec/shared/mutator_behavior.rb
mutant-0.5.15 spec/shared/mutator_behavior.rb
mutant-0.5.14 spec/shared/mutator_behavior.rb
mutant-0.5.13 spec/shared/mutator_behavior.rb
mutant-0.5.12 spec/shared/mutator_behavior.rb
mutant-0.5.11 spec/shared/mutator_behavior.rb