@Override public Link removeLink(final Id<Link> linkId) { Link l = this.links.remove(linkId); if (l == null) { return null; } l.getFromNode().removeOutLink(l.getId()) ; l.getToNode().removeInLink(l.getId()) ; if (this.linkQuadTree != null) { this.linkQuadTree.remove(l); } return l; }
/** * Test for MATSIM-687: links not stored in top-node are not removed */ @Test public void testRemove_inSubNode() { Scenario s = ScenarioUtils.createScenario(ConfigUtils.createConfig()); LinkQuadTree qt = new LinkQuadTree(0, 0, 1000, 1000); Link lInTop1 = createLink(s, 400, 400, 600, 600); Link lInChildSW1 = createLink(s, 0, 0, 400, 400); qt.put(lInTop1); qt.put(lInChildSW1); Assert.assertEquals(lInChildSW1, qt.getNearest(100, 80)); qt.remove(lInChildSW1); Assert.assertEquals(lInTop1, qt.getNearest(100, 80)); }
@Test public void testRemove() { Scenario s = ScenarioUtils.createScenario(ConfigUtils.createConfig()); LinkQuadTree qt = new LinkQuadTree(0, 0, 1000, 1000); Link l13 = createLink(s, 0, 1000, 400, 400); Link l23 = createLink(s, 1000, 1000, 400, 400); Link l53 = createLink(s, 0, 0, 400, 400); Link l63 = createLink(s, 1000, 0, 400, 400); qt.put(l13); qt.put(l23); qt.put(l53); qt.put(l63); Assert.assertEquals(l13, qt.getNearest(100, 800)); qt.remove(l13); Assert.assertEquals(l23, qt.getNearest(100, 800)); }