require 'minitest/autorun' require 'geometry/annulus' describe Geometry::Annulus do it 'must complain when constructed with only a center' do -> { Geometry::Annulus.new center:Point[1,2] }.must_raise ArgumentError end it 'must also be known as a Ring' do Geometry::Ring.new(Point[1,2], inner_radius:5, radius:10).must_be_instance_of Geometry::Annulus end describe 'when constructed with a named center' do subject { Geometry::Annulus.new center:Point[1,2], inner_radius:5, radius:10 } it 'must have a center' do subject.center.must_equal Point[1,2] end end describe 'when constructed with a center, inner_radius and radius' do subject { Geometry::Annulus.new Point[1,2], inner_radius:5, radius:10 } it 'must have a center' do subject.center.must_equal Point[1,2] end it 'must have an inner diameter' do subject.inner_diameter.must_equal 10 end it 'must have an inner radius' do subject.inner_radius.must_equal 5 end it 'must have an outer diameter' do subject.outer_diameter.must_equal 20 end it 'must have a radius' do subject.radius.must_equal 10 subject.outer_radius.must_equal 10 end end describe 'when constructed with a center, inner_diameter and diameter' do subject { Geometry::Annulus.new Point[1,2], inner_diameter:5, diameter:10 } it 'must have a center' do subject.center.must_equal Point[1,2] end it 'must have an inner diameter' do subject.inner_diameter.must_equal 5 end it 'must have an inner radius' do subject.inner_radius.must_equal 2.5 end it 'must have an outer diameter' do subject.outer_diameter.must_equal 10 end it 'must have a radius' do subject.radius.must_equal 5 end end end