
* This specs still have spec per method granularity * But one file specs multiple methods * Compatible with mutant spec selector * Deduplicates boilerplate unit setup
325 lines
5.5 KiB
Ruby
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
|