### Question:
Circle implements Shape { @Override public boolean intersects(Shape o) { if (o instanceof Circle) { return intersects((Circle) o); } else if (o instanceof BBox) { return intersects((BBox) o); } return o.intersects(this); } Circle(double lat, double lon, double radiusInMeter);  Circle(double lat, double lon, double radiusInMeter, DistanceCalc calc); double getLat(); double getLon(); @Override boolean contains(double lat1, double lon1); @Override BBox getBounds(); @Override GHPoint getCenter(); @Override boolean intersects(Shape o); @Override boolean intersects(PointList pointList); @Override boolean contains(Shape o); boolean intersects(BBox b); boolean intersects(Circle c); boolean contains(BBox b); boolean contains(Circle c); @Override double calculateArea(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void testIntersectCircleCircle() { assertTrue(new Circle(0, 0, 80000).intersects(new Circle(1, 1, 80000))); assertFalse(new Circle(0, 0, 75000).intersects(new Circle(1, 1, 80000))); }
@Test public void testIntersectCircleBBox() { assertTrue(new Circle(10, 10, 120000).intersects(new BBox(9, 11, 8, 9))); assertTrue(new BBox(9, 11, 8, 9).intersects(new Circle(10, 10, 120000))); assertFalse(new Circle(10, 10, 110000).intersects(new BBox(9, 11, 8, 9))); assertFalse(new BBox(9, 11, 8, 9).intersects(new Circle(10, 10, 110000))); }
@Test public void testIntersectPointList() { Circle circle = new Circle(1.5, 0.3, Helper.DIST_EARTH.calcDist(0, 0, 0, 0.7)); PointList pointList = new PointList(); pointList.add(5, 5); pointList.add(5, 0); assertFalse(circle.intersects(pointList)); pointList.add(-5, 0); assertTrue(circle.intersects(pointList)); pointList = new PointList(); pointList.add(5, 1); pointList.add(-1, 0); assertTrue(circle.intersects(pointList)); pointList = new PointList(); pointList.add(5, 0); pointList.add(-1, 3); assertFalse(circle.intersects(pointList)); pointList = new PointList(); pointList.add(5, 0); pointList.add(2, 0); assertTrue(circle.intersects(pointList)); pointList = new PointList(); pointList.add(1.5, -2); pointList.add(1.5, 2); assertTrue(circle.intersects(pointList)); }