free_mutant/spec/unit/mutant/mutator/node/case_spec.rb
Markus Schirp 9edb375ef3 Use more modern spec layout
* This specs still have spec per method granularity
* But one file specs multiple methods
* Compatible with mutant spec selector
* Deduplicates boilerplate unit setup
2013-12-29 23:29:58 +01:00

325 lines
5.5 KiB
Ruby

# encoding: utf-8
require 'spec_helper'
describe Mutant::Mutator::Node::Case do
let(:random_string) { 'random' }
before do
Mutant::Random.stub(hex_string: random_string)
end
context 'with multiple when branches' do
let(:source) do
<<-RUBY
case :condition
when :foo
:foo
when :bar, :baz
:barbaz
else
:else
end
RUBY
end
let(:mutations) do
mutations = []
# Presence of branches
mutations << <<-RUBY
case :condition
when :bar, :baz
:barbaz
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:foo
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:foo
when :bar, :baz
:barbaz
end
RUBY
# Mutations of condition
mutations << <<-RUBY
case nil
when :foo
:foo
when :bar, :baz
:barbaz
else
:else
end
RUBY
mutations << <<-RUBY
case :srandom
when :foo
:foo
when :bar, :baz
:barbaz
else
:else
end
RUBY
# Mutations of branch bodies
mutations << <<-RUBY
case :condition
when :foo
nil
when :bar, :baz
:barbaz
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:srandom
when :bar, :baz
:barbaz
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:foo
when :bar, :baz
:srandom
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:foo
when :bar, :baz
nil
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:foo
when :bar, :baz
:barbaz
else
:srandom
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:foo
when :bar, :baz
:barbaz
else
nil
end
RUBY
# Mutations of when conditions
mutations << <<-RUBY
case :condition
when :srandom
:foo
when :bar, :baz
:barbaz
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when nil
:foo
when :bar, :baz
:barbaz
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:foo
when :srandom, :baz
:barbaz
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:foo
when nil, :baz
:barbaz
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:foo
when :bar, nil
:barbaz
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:foo
when :bar, :srandom
:barbaz
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:foo
when :baz
:barbaz
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:foo
when :bar
:barbaz
else
:else
end
RUBY
mutations << 'nil'
end
it_should_behave_like 'a mutator'
end
context 'with one when branch' do
let(:source) do
<<-RUBY
case :condition
when :foo
:foo
else
:else
end
RUBY
end
let(:mutations) do
mutations = []
# Presence of branches
mutations << <<-RUBY
case :condition
when :foo
:foo
end
RUBY
# Mutations of condition
mutations << <<-RUBY
case nil
when :foo
:foo
else
:else
end
RUBY
mutations << <<-RUBY
case :srandom
when :foo
:foo
else
:else
end
RUBY
# Mutations of branch bodies
mutations << <<-RUBY
case :condition
when :foo
nil
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:srandom
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:foo
else
:srandom
end
RUBY
mutations << <<-RUBY
case :condition
when :foo
:foo
else
nil
end
RUBY
# Mutations of when conditions
mutations << <<-RUBY
case :condition
when :srandom
:foo
else
:else
end
RUBY
mutations << <<-RUBY
case :condition
when nil
:foo
else
:else
end
RUBY
mutations << 'nil'
end
it_should_behave_like 'a mutator'
end
end