@Test
public void testOverlaps() {

    LOG.info("testOverlaps");
    final GeoRectangle a1 = new GeoRectangle(new GeoPoint(1.0, 1.0), new GeoPoint(1.0, 1.0));
    final GeoRectangle a2 = new GeoRectangle(new GeoPoint(0.0, 0.0), new GeoPoint(2.0, 2.0));
    final GeoRectangle a3 = new GeoRectangle(new GeoPoint(0.0, 0.0), new GeoPoint(0.5, 0.5));
    final GeoRectangle a4 = new GeoRectangle(new GeoPoint(1.0, 1.0), new GeoPoint(1.5, 1.5));
    final GeoRectangle a5 = new GeoRectangle(new GeoPoint(1.0, 1.0), new GeoPoint(2.5, 2.5));
    Assert.assertTrue(a1.overlaps(a1));
    Assert.assertTrue(a1.overlaps(a2));
    Assert.assertFalse(a1.overlaps(a3));
    Assert.assertTrue(a4.overlaps(a2));
    Assert.assertTrue(a5.overlaps(a2));
    final GeoRectangle b1 = new GeoRectangle(new GeoPoint(0.0, 160.0), new GeoPoint(2.0, -160.0));
    final GeoRectangle b2 = new GeoRectangle(new GeoPoint(0.0, 161.0), new GeoPoint(2.0, -160.0));
    final GeoRectangle b3 = new GeoRectangle(new GeoPoint(0.0, 161.0), new GeoPoint(2.0, 162.0));
    final GeoRectangle b4 = new GeoRectangle(new GeoPoint(0.0, 159.0), new GeoPoint(2.0, -159.0));
    final GeoRectangle b5 = new GeoRectangle(new GeoPoint(0.0, -159.0), new GeoPoint(2.0, 159.0));
    final GeoRectangle b6 = new GeoRectangle(new GeoPoint(0.0, -161.0), new GeoPoint(2.0, -159.0));
    Assert.assertTrue(b1.overlaps(b2));
    Assert.assertTrue(b1.overlaps(b3));
    Assert.assertTrue(b1.overlaps(b4));
    Assert.assertFalse(b1.overlaps(b5));
    Assert.assertTrue(b1.overlaps(b6));
    Assert.assertFalse(a5.overlaps(b1));
}