Sha256: 6bb8cc71acf677bed9aee1d23da5352bcd23d2485e00610fd88120bac5cb23fb

Contents?: true

Size: 1.7 KB

Versions: 5

Compression:

Stored size: 1.7 KB

Contents

# encoding: utf-8

require 'spec_helper'

describe Mutant::Mutator::Node::NamedValue::Access, 'mutations' do

  context 'global variable' do
    let(:source) { '$a = nil; $a' }

    let(:mutations) do
      mutants = []
      mutants << '$a = nil; nil'
      mutants << '$a = nil'
      mutants << '$a'
      mutants << '$a__mutant__ = nil; $a'
      mutants << 'nil; $a'
    end

    it_should_behave_like 'a mutator'
  end

  context 'class variable' do
    let(:source) { '@@a = nil; @@a' }

    let(:mutations) do
      mutants = []
      mutants << '@@a = nil; nil'
      mutants << '@@a = nil'
      mutants << '@@a'
      mutants << '@@a__mutant__ = nil; @@a'
      mutants << 'nil; @@a'
    end
  end

  context 'instance variable' do
    let(:source) { '@a = nil; @a' }

    let(:mutations) do
      mutants = []
      mutants << '@a = nil; nil'
      mutants << '@a = nil'
      mutants << '@a'
      mutants << '@a__mutant__ = nil; @a'
      mutants << 'nil; @a'
    end

    it_should_behave_like 'a mutator'
  end

  context 'local variable' do
    let(:source) { 'a = nil; a' }

    let(:mutations) do
      mutants = []
      mutants << 'a = nil; nil'
      mutants << 'a = nil'
      # TODO: fix invalid AST
      #   These ASTs are not valid and should NOT be emitted
      #   Mutations of lvarasgn need to be special cased to avoid this.
      mutants << s(:begin, s(:lvasgn, :a__mutant__, s(:nil)), s(:lvar, :a))
      mutants << s(:begin, s(:nil), s(:lvar, :a))
      mutants << s(:lvar, :a)
    end

    it_should_behave_like 'a mutator'
  end

  context 'self' do
    let(:source) { 'self' }

    let(:mutations) do
      mutants = []
      mutants << 'nil'
    end

    it_should_behave_like 'a mutator'
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
mutant-0.5.17 spec/unit/mutant/mutator/node/named_value/access_spec.rb
mutant-0.5.16 spec/unit/mutant/mutator/node/named_value/access_spec.rb
mutant-0.5.15 spec/unit/mutant/mutator/node/named_value/access_spec.rb
mutant-0.5.14 spec/unit/mutant/mutator/node/named_value/access_spec.rb
mutant-0.5.13 spec/unit/mutant/mutator/node/named_value/access_spec.rb