private void testRemove(final int ncount) {
final Set<Node> nodes = new HashSet<>(createPointNodes(nodeRange(ncount)));
QuadTreeBuilder initialTreeBuilder = createQuadTree(maxBounds, nodes);
initialTreeBuilder.clusteringStrategy();
final RevTree tree = initialTreeBuilder.build();
final Set<Node> removedNodes;
QuadTreeBuilder builder = QuadTreeBuilder.create(objectStore, objectStore, tree, maxBounds);
{
Set<Node> treeNodes = RevObjectTestSupport.getTreeNodes(tree, objectStore);
assertEquals(nodes, treeNodes);
List<Node> list = new ArrayList<>(treeNodes);
Collections.shuffle(list);
int removeCount = ncount / 10;
removedNodes = ImmutableSet.copyOf(list.subList(0, removeCount));
for (Node node : removedNodes) {
boolean removed = builder.remove(node);
assertTrue("Not removed: " + node, removed);
}
assertFalse(removedNodes.isEmpty());
}
final RevTree result = builder.build();
Set<Node> resultNodes = getNodes(result);
SetView<Node> difference = Sets.difference(nodes, resultNodes);
assertEquals(removedNodes.size(), difference.size());
assertEquals(removedNodes, difference);
}