free_mutant/spec/unit/mutant/mutator/node/rescue_spec.rb
2014-05-23 18:56:18 +00:00

63 lines
1.8 KiB
Ruby

# encoding: utf-8
require 'spec_helper'
describe Mutant::Mutator::Node::Generic, 'rescue' do
context 'multiple exception selectors and assignment' do
let(:source) { 'begin; rescue ExceptionA, ExceptionB => error; true; end' }
let(:mutations) do
mutations = []
mutations << 'nil'
mutations << 'begin; rescue ExceptionA, ExceptionB; true; end'
mutations << 'begin; rescue ExceptionA, ExceptionB => error; false; end'
mutations << 'begin; rescue ExceptionA, ExceptionB => error; nil; end'
mutations << 'begin; rescue ExceptionA => error; true; end'
mutations << 'begin; rescue ExceptionB => error; true; end'
end
it_should_behave_like 'a mutator'
end
context 'single exception selector and assignment' do
let(:source) { 'begin; rescue SomeException => error; true; end' }
let(:mutations) do
mutations = []
mutations << 'nil'
mutations << 'begin; rescue SomeException; true; end'
mutations << 'begin; rescue SomeException => error; false; end'
mutations << 'begin; rescue SomeException => error; nil; end'
end
it_should_behave_like 'a mutator'
end
context 'no exection selector and assignment' do
let(:source) { 'begin; rescue => error; true end' }
let(:mutations) do
mutations = []
mutations << 'nil'
mutations << 'begin; rescue => error; false; end'
mutations << 'begin; rescue => error; nil; end'
mutations << 'begin; rescue; true; end'
end
it_should_behave_like 'a mutator'
end
context 'no exection selector and no assignment' do
let(:source) { 'begin; rescue; true end' }
let(:mutations) do
mutations = []
mutations << 'nil'
mutations << 'begin; rescue; false; end'
mutations << 'begin; rescue; nil; end'
end
it_should_behave_like 'a mutator'
end
end