free_mutant/spec/unit/mutant/mutator/emit_new_spec.rb
2013-07-29 00:25:15 +02:00

57 lines
1.2 KiB
Ruby

require 'spec_helper'
describe Mutant::Mutator, '#emit_new' do
subject { object.send(:emit_new) { generated } }
class Block
attr_reader :arguments
def called?
defined?(@arguments)
end
def call(*arguments)
@arguments = arguments
end
end
let(:object) { class_under_test.new(input, parent, block) }
let(:block) { Block.new }
let(:input) { :input }
let(:parent) { :parent }
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 do
subject
end.to raise_error(
RuntimeError,
'New AST could not be generated after 3 attempts'
)
end
end
end