test/geometry/point.rb in geometry-6.4 vs test/geometry/point.rb in geometry-6.5

- old
+ new

@@ -1,9 +1,10 @@ require 'minitest/autorun' require 'geometry/point' describe Geometry::Point do + PointIso = Geometry::PointIso PointOne = Geometry::PointOne PointZero = Geometry::PointZero describe "class methods" do it 'must generate a PointOne' do @@ -112,11 +113,28 @@ it "must duplicate" do Point[1,2].dup.must_be_instance_of(Point) Point[1,2].dup.must_equal Point[1,2] end - describe 'minmax' do + it 'must pop' do + Point[1,2,3,4].pop.must_equal Point[4] + Point[1,2,3,4].pop(2).must_equal Point[3,4] + end + + it 'must push' do + Point[1,2].push(3,4).must_equal Point[1,2,3,4] + end + + it 'must shift' do + Point[1,2,3,4].shift.must_equal Point[1] + end + + it 'must unshift' do + Point[2,3,4].unshift(1).must_equal Point[1,2,3,4] + end + + describe 'minimum' do it 'must have a minimum' do Point[1,2].min.must_equal 1 end it 'must minimum with another Point' do @@ -130,10 +148,24 @@ it 'must minimum with a multiple arguments' do Point[1,3].min(4,2).must_equal Point[1,2] end + it 'must minimum with a PointIso' do + Point[-5,-5,5].min(PointIso.new(-5/2)).must_equal Point[-5,-5,-5/2] + end + + it 'must minimum with a PointOne' do + Point[-5,-5,5].min(Point.one).must_equal Point[-5,-5,1] + end + + it 'must minimum with a PointZero' do + Point[-5,-5,5].min(Point.zero).must_equal Point[-5,-5,0] + end + end + + describe 'maximum' do it 'must have a maximum' do Point[1,2].max.must_equal 2 end it 'must maximum with another Point' do @@ -147,10 +179,24 @@ it 'must maximum with multiple arguments' do Point[1,3].max(4,2).must_equal Point[4,3] end + it 'must maximum with a PointIso' do + Point[-5,-5,5].max(PointIso.new(-5/2)).must_equal Point[-5/2, -5/2, 5] + end + + it 'must maximum with a PointOne' do + Point[-5,-5,5].max(Point.one).must_equal Point[1, 1, 5] + end + + it 'must maximum with a PointZero' do + Point[-5,-5,5].max(Point.zero).must_equal Point[0, 0, 5] + end + end + + describe 'minmax' do it 'must have a minmax' do Point[1,2].minmax.must_equal [1,2] end it 'must minmax with another Point' do @@ -159,11 +205,23 @@ it 'must minmax with an Array' do Point[1,3].minmax([4,2]).must_equal [Point[1,2], Point[4,3]] end - it 'must maximum with multiple arguments' do + it 'must minmax with multiple arguments' do Point[1,3].minmax(4,2).must_equal [Point[1,2], Point[4,3]] + end + + it 'must minmax with a PointIso' do + Point[-5,-5,5].minmax(PointIso.new(-5/2)).must_equal [Point[-5,-5,-5/2], Point[-5/2, -5/2, 5]] + end + + it 'must minmax with a PointOne' do + Point[-5,-5,5].minmax(Point.one).must_equal [Point[-5,-5,1], Point[1, 1, 5]] + end + + it 'must minmax with a PointZero' do + Point[-5,-5,5].minmax(Point.zero).must_equal [Point[-5,-5,0], Point[0, 0, 5]] end end describe "arithmetic" do let(:left) { Point[1,2] }