diff --git a/test/spec/ol/geom/circle.test.js b/test/spec/ol/geom/circle.test.js index bb5fc9a8b9..c844108640 100644 --- a/test/spec/ol/geom/circle.test.js +++ b/test/spec/ol/geom/circle.test.js @@ -205,24 +205,67 @@ describe('ol.geom.Circle', function() { describe('#intersectsExtent', function() { - it('return false for non matching extent', function() { - expect(circle.intersectsExtent([0.9, 0.9, 10, 10])).to.be(false); + it('returns false for non-intersecting extents (wide outside own bbox)', + function() { + var wideOutsideLeftTop = [-3, 2, -2, 3]; + var wideOutsideRightTop = [2, 2, 3, 3]; + var wideOutsideRightBottom = [2, -3, 3, -2]; + var wideOutsideLeftBottom = [-3, -3, -2, -2]; + expect(circle.intersectsExtent(wideOutsideLeftTop)).to.be(false); + expect(circle.intersectsExtent(wideOutsideRightTop)).to.be(false); + expect(circle.intersectsExtent(wideOutsideRightBottom)).to.be(false); + expect(circle.intersectsExtent(wideOutsideLeftBottom)).to.be(false); + } + ); + + it('returns false for non-intersecting extents (inside own bbox)', + function() { + var nearOutsideLeftTop = [-1, 0.9, -0.9, 1]; + var nearOutsideRightTop = [0.9, 0.9, 1, 1]; + var nearOutsideRightBottom = [0.9, -1, 1, -0.9]; + var nearOutsideLeftBottom = [-1, -1, -0.9, -0.9]; + expect(circle.intersectsExtent(nearOutsideLeftTop)).to.be(false); + expect(circle.intersectsExtent(nearOutsideRightTop)).to.be(false); + expect(circle.intersectsExtent(nearOutsideRightBottom)).to.be(false); + expect(circle.intersectsExtent(nearOutsideLeftBottom)).to.be(false); + } + ); + + it('returns true for extents that intersect clearly', function() { + var intersectingLeftTop = [-1.5, 0.5, -0.5, 1.5]; + var intersectingRightTop = [0.5, 0.5, 1.5, 1.5]; + var intersectingRightBottom = [0.5, -1.5, 1.5, -0.5]; + var intersectingLeftBottom = [-1.5, -1.5, -0.5, -0.5]; + expect(circle.intersectsExtent(intersectingLeftTop)).to.be(true); + expect(circle.intersectsExtent(intersectingRightTop)).to.be(true); + expect(circle.intersectsExtent(intersectingRightBottom)).to.be(true); + expect(circle.intersectsExtent(intersectingLeftBottom)).to.be(true); }); - it('return true for extent within circle', function() { - expect(circle.intersectsExtent([0.5, 0.5, 0.5, 0.5])).to.be(true); + it('returns true for extents that touch the circumference', function() { + var touchCircumferenceLeft = [-2, 0, -1, 1]; + var touchCircumferenceTop = [0, 1, 1, 2]; + var touchCircumferenceRight = [1, -1, 2, 0]; + var touchCircumferenceBottom = [-1, -2, 0, -1]; + expect(circle.intersectsExtent(touchCircumferenceLeft)).to.be(true); + expect(circle.intersectsExtent(touchCircumferenceTop)).to.be(true); + expect(circle.intersectsExtent(touchCircumferenceRight)).to.be(true); + expect(circle.intersectsExtent(touchCircumferenceBottom)).to.be(true); }); - it('return true for extent overlapping circle', function() { - expect(circle.intersectsExtent([0.5, 0.5, 10, 10])).to.be(true); + it('returns true for a contained extent', function() { + var containedExtent = [-0.5, -0.5, 0.5, 0.5]; + expect(circle.intersectsExtent(containedExtent)).to.be(true); }); - it('return true for non-overlapping but intersecting extent', function() { - expect(circle.intersectsExtent([0, 1, 1, 2])).to.be(true); + it('returns true for a covering extent', function() { + var bigCoveringExtent = [-5, -5, 5, 5]; + expect(circle.intersectsExtent(bigCoveringExtent)).to.be(true); }); it('returns true for the geom\'s own extent', function() { - expect(circle.intersectsExtent(circle.getExtent())).to.be(true); + var circleExtent = circle.getExtent(); + expect(circle.intersectsExtent(circleExtent)).to.be(true); }); });