@Override public Node removeNode(final Id<Node> nodeId) { Node n = this.nodes.remove(nodeId); if (n == null) { return null; } HashSet<Link> links1 = new HashSet<>(); links1.addAll(n.getInLinks().values()); links1.addAll(n.getOutLinks().values()); for (Link l : links1) { removeLink(l.getId()); } if (this.nodeQuadTree != null) { this.nodeQuadTree.remove(n.getCoord().getX(),n.getCoord().getY(),n); } return n; }
int size = qt.size(); assertTrue(qt.remove(10.0, 10.0, "10.0, 10.0")); assertEquals(size-1, qt.size()); assertFalse(qt.remove(10.0, 10.0, "10.0, 10.0")); assertEquals(size-1, qt.size()); assertFalse(qt.remove(14.9, 14.9, "15.0, 15.0")); assertEquals(size-1, qt.size()); assertTrue(qt.remove(15.0, 15.0, "15.0, 15.0")); assertEquals(size-2, qt.size()); assertEquals("15.0, 15.0 B", qt.getClosest(15.0, 15.0)); // the other object should still be there... assertTrue(qt.remove(15.0, 15.0, "15.0, 15.0 B")); assertEquals(size-1, qt.size()); assertEquals("15.0, 15.0", qt.getClosest(15.0, 15.0)); // the other object should still be there... assertFalse(qt.remove(10.0, 10.0, "10.0, 10.0 B")); assertEquals(size-1, qt.size());
/** * Test {@link QuadTree#values()} that it returns the correct content. */ @Test public void testValues() { QuadTree<String> qt = getTestTree(); int size = qt.size(); assertEquals(6, size); // generic test valuesTester(qt.size(), qt.values()); // test that values() got updated after adding an object to the tree qt.put(80.0, 80.0, "80.0, 80.0"); assertEquals(size + 1, qt.size()); valuesTester(qt.size(), qt.values()); // test that values() got updated after removing an object to the tree assertTrue(qt.remove(80.0, 80.0, "80.0, 80.0")); assertEquals(size, qt.size()); valuesTester(qt.size(), qt.values()); // and remove one more... assertTrue(qt.remove(10.0, 10.0, "10.0, 10.0")); assertEquals(size - 1, qt.size()); valuesTester(qt.size(), qt.values()); // test the iterator Iterator<String> iter = qt.values().iterator(); iter.next(); try { iter.remove(); fail("expected UnsupportedOperationException, got none."); } catch (UnsupportedOperationException expected) {} }
/** * Tests that a once obtained values-collection is indeed a live view * on the QuadTree, so when the QuadTree changes, the view is updated * as well. */ @Test public void testValues_isView() { QuadTree<String> qt = getTestTree(); int size = qt.size(); Collection<String> values = qt.values(); valuesTester(qt.size(), values); qt.put(80.0, 80.0, "80.0, 80.0"); assertEquals(size + 1, qt.size()); valuesTester(size + 1, values); qt.put(75.0, 75.0, "75.0, 75.0"); assertEquals(size + 2, qt.size()); valuesTester(size + 2, values); assertTrue(qt.remove(80.0, 80.0, "80.0, 80.0")); assertEquals(size + 1, qt.size()); valuesTester(size + 1, values); }