@Test public void testFilter_NoCommonModes() { final Fixture f = new Fixture(); TransportModeNetworkFilter filter = new TransportModeNetworkFilter(f.scenario.getNetwork()); Network subNetwork = ScenarioUtils.createScenario(ConfigUtils.createConfig()).getNetwork(); filter.filter(subNetwork, createHashSet(TransportMode.pt, "motorbike")); Assert.assertEquals("wrong number of nodes.", 0, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 0, subNetwork.getLinks().size()); }
@Test public void testFilter_AdditionalModes() { final Fixture f = new Fixture(); TransportModeNetworkFilter filter = new TransportModeNetworkFilter(f.scenario.getNetwork()); Network subNetwork = ScenarioUtils.createScenario(ConfigUtils.createConfig()).getNetwork(); filter.filter(subNetwork, createHashSet(TransportMode.walk, TransportMode.pt, "motorbike")); Assert.assertEquals("wrong number of nodes.", 5, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 4, subNetwork.getLinks().size()); Assert.assertTrue(subNetwork.getLinks().containsKey(f.linkIds[13])); Assert.assertTrue(subNetwork.getLinks().containsKey(f.linkIds[14])); Assert.assertTrue(subNetwork.getLinks().containsKey(f.linkIds[15])); Assert.assertTrue(subNetwork.getLinks().containsKey(f.linkIds[16])); Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[1])); Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[4])); Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[7])); Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[10])); Assert.assertTrue(subNetwork.getNodes().containsKey(f.nodeIds[13])); Assert.assertEquals(f.modesW, subNetwork.getLinks().get(f.linkIds[13]).getAllowedModes()); Assert.assertEquals(f.modesW, subNetwork.getLinks().get(f.linkIds[14]).getAllowedModes()); Assert.assertEquals(f.modesW, subNetwork.getLinks().get(f.linkIds[15]).getAllowedModes()); Assert.assertEquals(f.modesW, subNetwork.getLinks().get(f.linkIds[16]).getAllowedModes()); Assert.assertEquals(1, subNetwork.getNodes().get(f.nodeIds[4]).getInLinks().size()); Assert.assertNotNull(subNetwork.getNodes().get(f.nodeIds[4]).getInLinks().get(f.linkIds[13])); Assert.assertEquals(1, subNetwork.getNodes().get(f.nodeIds[4]).getOutLinks().size()); Assert.assertNotNull(subNetwork.getNodes().get(f.nodeIds[4]).getOutLinks().get(f.linkIds[14])); }
filter.filter(subNetwork, createHashSet(TransportMode.car)); Assert.assertEquals("wrong number of nodes.", 13, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 14, subNetwork.getLinks().size()); filter.filter(subNetwork, createHashSet(TransportMode.bike)); Assert.assertEquals("wrong number of nodes.", 9, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 8, subNetwork.getLinks().size()); filter.filter(subNetwork, createHashSet(TransportMode.walk)); Assert.assertEquals("wrong number of nodes.", 5, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 4, subNetwork.getLinks().size());
/** * Tests the algorithm for the case the network contains direct loops, i.e. * links with the same from and to node. * * <code>Issue #178</code> - http://sourceforge.net/apps/trac/matsim/ticket/178 * * The problem seems only to happen when the loop link is (accidentally / randomly) * chosen as start link for the algorithm, as otherwise the node already exists. * Thus cannot extend existing Fixture to test this, but have to create test * scenario from scratch. */ @Test public void testFilter_SingleMode_loop() { Scenario scenario = ScenarioUtils.createScenario(ConfigUtils.createConfig()); final Network network = scenario.getNetwork(); final NetworkFactory factory = network.getFactory(); Node node1 = factory.createNode(Id.create(1, Node.class), new Coord((double) 0, (double) 0)); network.addNode(node1); Link link1 = factory.createLink(Id.create(1, Link.class), node1, node1); link1.setAllowedModes(createHashSet(TransportMode.car)); network.addLink(link1); TransportModeNetworkFilter filter = new TransportModeNetworkFilter(network); Network subNetwork = ScenarioUtils.createScenario(ConfigUtils.createConfig()).getNetwork(); filter.filter(subNetwork, createHashSet(TransportMode.car)); Assert.assertEquals("wrong number of nodes.", 1, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 1, subNetwork.getLinks().size()); Assert.assertTrue(subNetwork.getLinks().containsKey(Id.create(1, Link.class))); }
filter.filter(subNetwork, createHashSet(TransportMode.car, TransportMode.bike)); Assert.assertEquals("wrong number of nodes.", 13, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 15, subNetwork.getLinks().size()); filter.filter(subNetwork, createHashSet(TransportMode.bike, TransportMode.walk)); Assert.assertEquals("wrong number of nodes.", 9, subNetwork.getNodes().size()); Assert.assertEquals("wrong number of links", 10, subNetwork.getLinks().size());