/** * Executes executor on all objects inside the rectangle (minX,minY):(maxX,maxY) * * @param minX The minimum left-right location, longitude * @param minY The minimum up-down location, latitude * @param maxX The maximum left-right location, longitude * @param maxY The maximum up-down location, latitude * @param executor is executed on the fitting objects * @return the count of objects found within the rectangle. */ public int execute(final double minX, final double minY, final double maxX, final double maxY, final Executor<T> executor) { return execute(new Rect(minX, minY, maxX, maxY), executor); }
/** * Test {@link QuadTree#execute(double, double, double, double, QuadTree.Executor)}. */ @Test public void testExecute() { QuadTree<String> qt = getTestTree(); TestExecutor executor = new TestExecutor(); int count = qt.execute(0.0, 0.0, 20.1, 20.1, executor); assertEquals(4, count); assertEquals(4, executor.objects.size()); executor = new TestExecutor(); count = qt.execute(0.0, 0.0, 20.0, 20.0, executor); assertEquals(3, count); assertEquals(3, executor.objects.size()); executor = new TestExecutor(); count = qt.execute(0.0, 0.0, 19.9, 19.9, executor); assertEquals(3, count); assertEquals(3, executor.objects.size()); executor = new TestExecutor(); count = qt.execute(null, executor); assertEquals(qt.size(), count); assertEquals(qt.size(), executor.objects.size()); }