109 lines
2.3 KiB
Ruby
109 lines
2.3 KiB
Ruby
RSpec.describe Mutant::Result::Subject do
|
|
let(:object) do
|
|
described_class.new(
|
|
subject: mutation_subject,
|
|
mutation_results: mutation_results,
|
|
tests: []
|
|
)
|
|
end
|
|
|
|
let(:mutation_subject) do
|
|
instance_double(
|
|
Mutant::Subject,
|
|
mutations: mutation_results.map { instance_double(Mutant::Mutation) }
|
|
)
|
|
end
|
|
|
|
shared_context 'full coverage' do
|
|
let(:mutation_results) do
|
|
[
|
|
instance_double(Mutant::Result::Mutation, success?: true)
|
|
]
|
|
end
|
|
end
|
|
|
|
shared_context 'partial coverage' do
|
|
let(:mutation_results) do
|
|
[
|
|
instance_double(Mutant::Result::Mutation, success?: false),
|
|
instance_double(Mutant::Result::Mutation, success?: true)
|
|
]
|
|
end
|
|
end
|
|
|
|
shared_context 'no coverage' do
|
|
let(:mutation_results) do
|
|
[
|
|
instance_double(Mutant::Result::Mutation, success?: false)
|
|
]
|
|
end
|
|
end
|
|
|
|
shared_context 'no results' do
|
|
let(:mutation_results) { [] }
|
|
end
|
|
|
|
describe '#coverage' do
|
|
subject { object.coverage }
|
|
|
|
{
|
|
'full coverage' => 1r,
|
|
'partial coverage' => 0.5r,
|
|
'no coverage' => 0r,
|
|
'no results' => 1r
|
|
}.each do |name, expected|
|
|
context(name) do
|
|
include_context(name)
|
|
it { should eql(expected) }
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#amount_mutations' do
|
|
subject { object.amount_mutations }
|
|
|
|
{
|
|
'full coverage' => 1,
|
|
'partial coverage' => 2,
|
|
'no coverage' => 1,
|
|
'no results' => 0
|
|
}.each do |name, expected|
|
|
context(name) do
|
|
include_context(name)
|
|
it { should be(expected) }
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#amount_mutations_alive' do
|
|
subject { object.amount_mutations_alive }
|
|
|
|
{
|
|
'full coverage' => 0,
|
|
'partial coverage' => 1,
|
|
'no coverage' => 1,
|
|
'no results' => 0
|
|
}.each do |name, expected|
|
|
context(name) do
|
|
include_context(name)
|
|
it { should be(expected) }
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#success?' do
|
|
subject { object.success? }
|
|
|
|
{
|
|
'full coverage' => true,
|
|
'partial coverage' => false,
|
|
'no coverage' => false,
|
|
'no results' => true
|
|
}.each do |name, expected|
|
|
context(name) do
|
|
include_context(name)
|
|
it { should be(expected) }
|
|
end
|
|
end
|
|
end
|
|
end
|