require 'minitest/autorun'
require 'geometry/circle'

describe Geometry::Circle do
    Circle = Geometry::Circle

    describe "when constructed with center and radius arguments" do
	let(:circle) { Circle.new [1,2], 3 }

	it "must create a Circle" do
	    circle.must_be_instance_of(Circle)
	end
	
	it "must have a center point accessor" do
	    circle.center.must_equal Point[1,2]
	end
	
	it "must have a radius accessor" do
	    circle.radius.must_equal 3
	end
    end

    describe "when constructed with named center and radius arguments" do
	let(:circle) { Circle.new :center => [1,2], :radius => 3 }
	
	it "must create a Circle" do
	    circle.must_be_instance_of(Circle)
	end
	
	it "must have a center point accessor" do
	    circle.center.must_equal Point[1,2]
	end
	
	it "must have a radius accessor" do
	    circle.radius.must_equal 3
	end
    end

    describe "when constructed with a center and diameter" do
	let(:circle) { Circle.new [1,2], :diameter => 4 }

	it "must be a CenterDiameterCircle" do
	    circle.must_be_instance_of(Geometry::CenterDiameterCircle)
	    circle.must_be_kind_of(Circle)
	end

	it "must have a center" do
	    circle.center.must_equal Point[1,2]
	end

	it "must have a diameter" do
	    circle.diameter.must_equal 4
	end

	it "must calculate the correct radius" do
	    circle.radius.must_equal 2
	end
    end
end