/** Test of splitMidY method, of class IDBoundingBox. */
  @Test
  public void testSplitMidY() {
    for (int i = 0; i < 100; i++) {
      ID2BoundingBox box = build(i, i, i + 1, i + 1);
      ID2BoundingBox[] splitted = box.splitMidY();
      assertEquals(i, splitted[0].getLower().getX(), 0);
      assertEquals(i, splitted[0].getLower().getY(), 0);
      assertEquals(i + 1, splitted[0].getUpper().getX(), 0);
      assertEquals(i + 0.5, splitted[0].getUpper().getY(), 0);

      assertEquals(i, splitted[1].getLower().getX(), 0);
      assertEquals(i + 0.5, splitted[1].getLower().getY(), 0);
      assertEquals(i + 1, splitted[1].getUpper().getX(), 0);
      assertEquals(i + 1, splitted[1].getUpper().getY(), 0);
    }
  }
  /** Test of merge method, of class IDBoundingBox. */
  @Test
  public void testMerge() {
    for (int i = 0; i < 100; i++) {
      ArrayList<ID2BoundingBox> boxes = new ArrayList<>();

      ID2BoundingBox box = build(0, 0, i, i);
      ID2BoundingBox[] vals = box.splitMidX();
      boxes.addAll(
          Arrays.stream(vals)
              .flatMap((a) -> Arrays.stream(a.splitMidY()))
              .collect(Collectors.toList()));

      ID2BoundingBox two = build(0, 0, 0, 0);
      for (ID2BoundingBox boxt : boxes) {
        two = two.merge(boxt);
      }

      assertTrue(box.same(two));
    }
  }
 /** Test of contains method, of class IDBoundingBox. */
 @Test
 public void testContains_IDPoint() {
   ID2BoundingBox box = build(0, 0, 100, 100);
   for (int i = 0; i < 100; i++) {
     assertTrue("Point: " + build(i + 0.5, i + 0.5), box.contains(build(i + 0.5, i + 0.5)));
     assertFalse(box.contains(build(100 + i + 0.5, i)));
     assertFalse(box.contains(build(0 - i - 0.5, i)));
     assertFalse(box.contains(build(i, 100 + i + 0.5)));
     assertFalse(box.contains(build(i, 0 - i - 0.5)));
   }
 }
 /** Test of getUpper method, of class IDBoundingBox. */
 @Test
 public void testGetUpper() {
   ID2BoundingBox box = build(3, 4, 7, 8);
   assertEquals(box.getUpper(), box.getUpper());
 }