@Test public void testGetDistance_fromOutsideExtent() { QuadTree<String> qt = getTestTree(); assertContains(new String[] {"100.0, 0.0"}, qt.getDisk(160.0, 0, 60.1)); // E assertContains(new String[] {"15.0, 15.0", "15.0, 15.0 B"}, qt.getDisk(15.0, 160, 145.1)); // N assertContains(new String[] {"-15.0, 0.0"}, qt.getDisk(-60.0, 0, 45.1)); // W assertContains(new String[] {"100.0, 0.0"}, qt.getDisk(100.0, -60, 60.1)); // S }
@Test public void testGetDistance_EntryOnDividingBorder() { QuadTree<String> qt = new QuadTree<>(0, 0, 40, 60); qt.put(10.0, 10.0, "10.0, 10.0"); qt.put(20.0, 20.0, "20.0, 20.0"); // on vertical border qt.put(20.0, 30.0, "20.0, 30.0"); // exactly on center qt.put(30.0, 30.0, "30.0, 30.0"); // on horizontal border qt.put(12.0, 15.0, "12.0, 15.0"); qt.put(10.0, 25.0, "10.0, 25.0"); assertContains(new String[] {"10.0, 10.0"}, qt.getDisk(10.0, 7.0, 3.0)); assertContains(new String[] {"10.0, 10.0"}, qt.getDisk(10.0, 12.0, 2.0)); assertContains(new String[] {"10.0, 10.0"}, qt.getDisk(7.0, 10.0, 3.0)); assertContains(new String[] {"10.0, 10.0"}, qt.getDisk(13.0, 10.0, 3.0)); assertContains(new String[] {"20.0, 20.0"}, qt.getDisk(20.0, 23.0, 3.0)); assertContains(new String[] {"20.0, 30.0"}, qt.getDisk(20.0, 27.0, 3.0)); assertContains(new String[] {"30.0, 30.0"}, qt.getDisk(27.0, 30.0, 3.0)); assertContains(new String[] {"12.0, 15.0"}, qt.getDisk(15.0, 15.0, 3.0)); assertContains(new String[] {"10.0, 25.0"}, qt.getDisk(10.0, 28.0, 3.0)); }
@Test public void testGetDistance_EntryOnOutsideBorder() { QuadTree<String> qt = new QuadTree<>(0.0, 0.0, 40.0, 60.0); // the 4 corners qt.put(0.0, 0.0, "SW"); qt.put(40.0, 0.0, "SE"); qt.put(0.0, 60.0, "NW"); qt.put(40.0, 60.0, "NE"); // the 4 sides qt.put(10.0, 60.0, "N"); qt.put(40.0, 10.0, "E"); qt.put(10.0, 0.0, "S"); qt.put(0.0, 10.0, "W"); assertContains(new String[] {"SW"}, qt.getDisk(3.0, 0.0, 3.0)); assertContains(new String[] {"SE"}, qt.getDisk(40.0, 3.0, 3.0)); assertContains(new String[] {"NW"}, qt.getDisk(3.0, 60.0, 3.0)); assertContains(new String[] {"NE"}, qt.getDisk(40.0, 57.0, 3.0)); assertContains(new String[] {"N"}, qt.getDisk(7.0, 60.0, 3.0)); assertContains(new String[] {"E"}, qt.getDisk(40.0, 13.0, 3.0)); assertContains(new String[] {"S"}, qt.getDisk(13.0, 0.0, 3.0)); assertContains(new String[] {"W"}, qt.getDisk(3.0, 10.0, 3.0)); }