free_mutant/spec/unit/mutant/mutator/emit_safe_spec.rb
Markus Schirp 3e1f9c408f Cleanup and dedup mutation generation
* Mutator and Generator where merged.
* A single pass over all duplications was made.
* It is clear a specific handles?(node) code for finding mutators
  is needed. Like virtus does for attributes, should also cache.
* Does not pass on 1.9 mode currently as blocks are unexpectly parsed
  differend when it comes to a series of literal booleans.
2012-07-31 04:00:05 +02:00

52 lines
1 KiB
Ruby

require 'spec_helper'
describe Mutant::Mutator,'#emit_safe' do
subject { object.send(:emit_safe,node) }
class Block
attr_reader :arguments
def called?
defined?(@arguments)
end
def call(*arguments)
@arguments = arguments
end
end
let(:object) { class_under_test.new(wrapped_node,block) }
let(:block) { Block.new }
let(:wrapped_node) { '"foo"'.to_ast }
let(:class_under_test) do
Class.new(described_class) do
def dispatch
#noop
end
end
end
context 'with node that is not equal to wrapped node' do
let(:node) { '"bar"'.to_ast }
it 'should call block' do
subject
block.should be_called
end
it 'should call block with node' do
subject
block.arguments.should eql([node])
end
end
context 'with node that is equal to wrapped node' do
let(:node) { '"foo"'.to_ast }
it 'should call block' do
subject
block.should_not be_called
end
end
end