test/geometry/circle.rb in geometry-4 vs test/geometry/circle.rb in geometry-5

- old
+ new

@@ -1,23 +1,59 @@ require 'minitest/autorun' require 'geometry/circle' -def Circle(*args) - Geometry::Circle.new(*args) -end - describe Geometry::Circle do - it "must create a Circle object from a Point and a radius" do - circle = Circle [1,2], 3 - assert_kind_of(Geometry::Circle, circle) + 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 - it "must have a center point accessor" do - circle = Circle [1,2], 3 - assert_equal(circle.center, [1,2]) + 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 - it "must have a radius accessor" do - circle = Circle [1,2], 3 - assert_equal(3, circle.radius) + 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