free_mutant/spec/unit/mutant/mutator/emit_new_spec.rb
2012-12-06 21:30:28 +01:00

51 lines
1.1 KiB
Ruby

require 'spec_helper'
describe Mutant::Mutator, '#emit_new' do
subject { object.send(:emit_new) { generated } }
class Block
def arguments; @arguments; end
def called?
defined?(@arguments)
end
def call(*arguments)
@arguments = arguments
end
end
let(:object) { class_under_test.new(input, block) }
let(:block) { Block.new }
let(:input) { :input }
let(:class_under_test) do
Class.new(described_class) do
def dispatch
#noop
end
end
end
context 'when new object generated' do
let(:generated) { :generated }
it 'should call block' do
subject
block.should be_called
end
it 'should call block with generated object' do
subject
block.arguments.should eql([generated])
end
end
context 'when new AST could not be generated' do
let(:generated) { input }
it 'should raise error' do
expect { subject }.to raise_error(RuntimeError, 'New AST could not be generated after 3 attempts')
end
end
end