@Override public Iterable<Edge> edges() { return Iterables.translate(this.edgeIdentifierToAtlasIndex, identifier -> edge(identifier)); }
@Test public void testThreeWaySubAtlas() { // In this test, fix couldn't be applied and edges from first atlas will be used final Atlas subAtlas1 = this.setup.threeWaySubAtlas1(); final Atlas subAtlas2 = this.setup.threeWaySubAtlas2(); final MultiAtlas multiAtlas = new MultiAtlas(subAtlas1, subAtlas2); // Verify these edges exist Assert.assertNotNull(multiAtlas.edge(123456789120001L)); Assert.assertNotNull(multiAtlas.edge(123456789120002L)); Assert.assertNotNull(multiAtlas.edge(123456789120004L)); Assert.assertNotNull(multiAtlas.edge(123456789120005L)); // Verify this edge does NOT exist Assert.assertNull(multiAtlas.edge(123456789120003L)); }
@Test public void connectivityTest() { this.multi.forEach(atlasItem -> logger.trace(atlasItem.toString())); // Out edges of CC2: 987 Assert.assertEquals(1, this.multi.edge(6).end().outEdges().size()); Assert.assertEquals(987, this.multi.edge(6).end().outEdges().iterator().next().getIdentifier()); Assert.assertEquals(2, this.multi.edge(-9).end().outEdges().size()); Assert.assertEquals(2, this.multi.edge(-9).end().inEdges().size()); Assert.assertEquals(2, this.multi.edge(987).start().inEdges().size()); }
@Test public void testOneWaySubAtlasWithInconsistentRoads() { final Atlas subAtlas1 = this.setup.oneWaySubAtlas1From1To3WithInconsistentRoads(); final Atlas subAtlas2 = this.setup.oneWaySubAtlas2From1To3WithInconsistentRoads(); final MultiAtlas multiAtlas = new MultiAtlas(subAtlas1, subAtlas2); // Verify edges are NOT gone even though they were forming an inconsistent road Assert.assertNotNull(multiAtlas.edge(123456789120000L)); Assert.assertNotNull(multiAtlas.edge(123456789120001L)); Assert.assertNotNull(multiAtlas.edge(123456789120002L)); // Verify fixed edges verifyEdge(multiAtlas.edge(223456789120001L), MultiAtlasBorderFixerTestRule.POINT_5_LOCATION, MultiAtlasBorderFixerTestRule.POINT_6_LOCATION); verifyEdge(multiAtlas.edge(223456789120002L), MultiAtlasBorderFixerTestRule.POINT_6_LOCATION, MultiAtlasBorderFixerTestRule.POINT_7_LOCATION); }
for (final Long subEdgeIdentifier : subResult) final Edge multiEdge = multiAtlas().edge(subEdgeIdentifier); if (multiEdge == null)
@Test public void testTwoWaySubAtlasWithThreeNodes() { final Atlas subAtlas1 = this.setup.twoWaySubAtlas1From1To3(); final Atlas subAtlas2 = this.setup.twoWaySubAtlas2From1To3(); final MultiAtlas multiAtlas = new MultiAtlas(subAtlas1, subAtlas2); // Verify first edge verifyEdge(multiAtlas.edge(123456789120001L), MultiAtlasBorderFixerTestRule.POINT_1_LOCATION, MultiAtlasBorderFixerTestRule.POINT_2_LOCATION); // Verify first reverse edge verifyEdge(multiAtlas.edge(-123456789120001L), MultiAtlasBorderFixerTestRule.POINT_2_LOCATION, MultiAtlasBorderFixerTestRule.POINT_1_LOCATION); // Verify second edge verifyEdge(multiAtlas.edge(123456789120002L), MultiAtlasBorderFixerTestRule.POINT_2_LOCATION, MultiAtlasBorderFixerTestRule.POINT_3_LOCATION); // Verify second edge verifyEdge(multiAtlas.edge(-123456789120002L), MultiAtlasBorderFixerTestRule.POINT_3_LOCATION, MultiAtlasBorderFixerTestRule.POINT_2_LOCATION); } }
@Test public void testThreeWayWithLoopSubAtlas() { final Atlas subAtlas1 = this.setup.threeWayWithLoopSubAtlas1(); final Atlas subAtlas2 = this.setup.threeWayWithLoopSubAtlas2(); final MultiAtlas multiAtlas = new MultiAtlas(subAtlas1, subAtlas2); // Verify first edge verifyEdge(multiAtlas.edge(123456789120001L), MultiAtlasBorderFixerTestRule.POINT_1_LOCATION, MultiAtlasBorderFixerTestRule.POINT_2_LOCATION); // Verify second edge verifyEdge(multiAtlas.edge(123456789120002L), MultiAtlasBorderFixerTestRule.POINT_2_LOCATION, MultiAtlasBorderFixerTestRule.POINT_3_LOCATION); // Verify third edge verifyEdge(multiAtlas.edge(123456789120003L), MultiAtlasBorderFixerTestRule.POINT_3_LOCATION, MultiAtlasBorderFixerTestRule.POINT_4_LOCATION); // Verify fourth edge verifyEdge(multiAtlas.edge(123456789120004L), MultiAtlasBorderFixerTestRule.POINT_4_LOCATION, MultiAtlasBorderFixerTestRule.POINT_3_LOCATION); // Verify fifth edge verifyEdge(multiAtlas.edge(123456789120005L), MultiAtlasBorderFixerTestRule.POINT_3_LOCATION, MultiAtlasBorderFixerTestRule.POINT_5_LOCATION); }
@Test public void testOneWayWithDuplicateNode() { final Atlas subAtlas1 = this.setup.oneWayWithDuplicateNodeSubAtlas1(); final Atlas subAtlas2 = this.setup.oneWayWithDuplicateNodeSubAtlas2(); final MultiAtlas multiAtlas = new MultiAtlas(subAtlas1, subAtlas2); // Verify first edge verifyEdge(multiAtlas.edge(123456789120001L), MultiAtlasBorderFixerTestRule.POINT_1_LOCATION, MultiAtlasBorderFixerTestRule.POINT_2_LOCATION); // Verify second edge verifyEdge(multiAtlas.edge(123456789120002L), MultiAtlasBorderFixerTestRule.POINT_2_LOCATION, MultiAtlasBorderFixerTestRule.POINT_3_LOCATION, MultiAtlasBorderFixerTestRule.POINT_3_LOCATION, MultiAtlasBorderFixerTestRule.POINT_4_LOCATION); // Verify third edge verifyEdge(multiAtlas.edge(123456789120003L), MultiAtlasBorderFixerTestRule.POINT_4_LOCATION, MultiAtlasBorderFixerTestRule.POINT_5_LOCATION); }
verifyEdge(multiAtlas.edge(123456789120001L), MultiAtlasBorderFixerTestRule.POINT_1_LOCATION, MultiAtlasBorderFixerTestRule.POINT_2_LOCATION); verifyEdge(multiAtlas.edge(123456789120002L), MultiAtlasBorderFixerTestRule.POINT_2_LOCATION, MultiAtlasBorderFixerTestRule.POINT_3_LOCATION); Assert.assertTrue(multiAtlas.edge(123456789120001L).getTags().containsKey(key)); Assert.assertEquals(multiAtlas.edge(123456789120001L).getTags().get(key), value); Assert.assertTrue(multiAtlas.edge(123456789120002L).getTags().containsKey(key)); Assert.assertEquals(multiAtlas.edge(123456789120002L).getTags().get(key), value); }); Assert.assertTrue(multiAtlas.edge(123456789120001L).getTags().containsKey(key)); Assert.assertEquals(multiAtlas.edge(123456789120001L).getTags().get(key), value); Assert.assertTrue(multiAtlas.edge(123456789120002L).getTags().containsKey(key)); Assert.assertEquals(multiAtlas.edge(123456789120002L).getTags().get(key), value); }); Assert.assertTrue(multiAtlas.edge(123456789120001L).getTags().containsKey(key)); Assert.assertEquals(multiAtlas.edge(123456789120001L).getTags().get(key), value); Assert.assertTrue(multiAtlas.edge(123456789120002L).getTags().containsKey(key)); Assert.assertEquals(multiAtlas.edge(123456789120002L).getTags().get(key), value); });
@Test public void oneWaySubAtlas1From1To4WithInnerLocations() { final Atlas subAtlas1 = this.setup.oneWaySubAtlas1From1To4WithInnerLocations(); final Atlas subAtlas2 = this.setup.oneWaySubAtlas2From1To4WithInnerLocations(); final MultiAtlas multiAtlas = new MultiAtlas(subAtlas1, subAtlas2); // Verify first edge verifyEdge(multiAtlas.edge(123456789120001L), MultiAtlasBorderFixerTestRule.POINT_1_LOCATION, MultiAtlasBorderFixerTestRule.POINT_2_LOCATION, MultiAtlasBorderFixerTestRule.POINT_3_LOCATION, MultiAtlasBorderFixerTestRule.POINT_4_LOCATION); // Verify second edge verifyEdge(multiAtlas.edge(123456789120002L), MultiAtlasBorderFixerTestRule.POINT_4_LOCATION, MultiAtlasBorderFixerTestRule.POINT_5_LOCATION); }
verifyEdge(multiAtlas.edge(123456789120001L), MultiAtlasBorderFixerTestRule.POINT_1_LOCATION, MultiAtlasBorderFixerTestRule.POINT_2_LOCATION); verifyEdge(multiAtlas.edge(123456789120002L), MultiAtlasBorderFixerTestRule.POINT_2_LOCATION, MultiAtlasBorderFixerTestRule.POINT_3_LOCATION); verifyEdge(multiAtlas.edge(123456789120003L), MultiAtlasBorderFixerTestRule.POINT_3_LOCATION, MultiAtlasBorderFixerTestRule.POINT_4_LOCATION); multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_1_ID_LONG).inEdges().isEmpty()); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_1_ID_LONG).outEdges() .contains(multiAtlas.edge(123456789120001L))); .contains(multiAtlas.edge(123456789120001L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_2_ID_LONG).outEdges() .contains(multiAtlas.edge(123456789120002L))); .contains(multiAtlas.edge(123456789120002L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_3_ID_LONG).outEdges() .contains(multiAtlas.edge(123456789120003L))); .contains(multiAtlas.edge(123456789120003L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_4_ID_LONG).outEdges() .isEmpty());
@Test public void testOneWaySubAtlasWithInconsistentRoadsAndARelation() { final Atlas subAtlas1 = this.setup.oneWaySubAtlas1WithInconsistentRoadsAndARelation(); final Atlas subAtlas2 = this.setup.oneWaySubAtlas2WithInconsistentRoadsAndARelation(); final MultiAtlas multiAtlas = new MultiAtlas(subAtlas1, subAtlas2); // Verify edges are NOT gone even though they were forming an inconsistent road Assert.assertNotNull(multiAtlas.edge(123456789120000L)); Assert.assertNotNull(multiAtlas.edge(123456789120001L)); Assert.assertNotNull(multiAtlas.edge(123456789120002L)); // Verify that relation has members Assert.assertEquals(multiAtlas.relation(987654321L).members().size(), 2); Assert.assertEquals(multiAtlas.relation(887654321L).members().size(), 1); // Verify fixed edges verifyEdge(multiAtlas.edge(223456789120001L), MultiAtlasBorderFixerTestRule.POINT_5_LOCATION, MultiAtlasBorderFixerTestRule.POINT_6_LOCATION); verifyEdge(multiAtlas.edge(223456789120002L), MultiAtlasBorderFixerTestRule.POINT_6_LOCATION, MultiAtlasBorderFixerTestRule.POINT_7_LOCATION); }
verifyEdge(multiAtlas.edge(123456789120001L), MultiAtlasBorderFixerTestRule.POINT_1_LOCATION, MultiAtlasBorderFixerTestRule.POINT_2_LOCATION); verifyEdge(multiAtlas.edge(123456789120002L), MultiAtlasBorderFixerTestRule.POINT_2_LOCATION, MultiAtlasBorderFixerTestRule.POINT_3_LOCATION); multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_1_ID_LONG).inEdges().isEmpty()); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_1_ID_LONG).outEdges() .contains(multiAtlas.edge(123456789120001L))); .contains(multiAtlas.edge(123456789120001L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_2_ID_LONG).outEdges() .contains(multiAtlas.edge(123456789120002L))); .contains(multiAtlas.edge(123456789120002L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_3_ID_LONG).outEdges() .isEmpty());
verifyEdge(multiAtlas.edge(123456789120001L), MultiAtlasBorderFixerTestRule.POINT_1_LOCATION, MultiAtlasBorderFixerTestRule.POINT_2_LOCATION); verifyEdge(multiAtlas.edge(123456789120002L), MultiAtlasBorderFixerTestRule.POINT_2_LOCATION, MultiAtlasBorderFixerTestRule.POINT_3_LOCATION); multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_1_ID_LONG).inEdges().isEmpty()); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_1_ID_LONG).outEdges() .contains(multiAtlas.edge(123456789120001L))); .contains(multiAtlas.edge(123456789120001L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_2_ID_LONG).inEdges() .contains(multiAtlas.edge(223456789120000L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_2_ID_LONG).outEdges() .contains(multiAtlas.edge(123456789120002L))); .contains(multiAtlas.edge(123456789120002L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_3_ID_LONG).outEdges() .isEmpty()); multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_4_ID_LONG).inEdges().isEmpty()); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_4_ID_LONG).outEdges() .contains(multiAtlas.edge(223456789120000L)));
verifyEdge(multiAtlas.edge(123456789120001L), MultiAtlasBorderFixerTestRule.POINT_1_LOCATION, MultiAtlasBorderFixerTestRule.POINT_2_LOCATION); verifyEdge(multiAtlas.edge(123456789120002L), MultiAtlasBorderFixerTestRule.POINT_2_LOCATION, MultiAtlasBorderFixerTestRule.POINT_3_LOCATION); multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_1_ID_LONG).inEdges().isEmpty()); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_1_ID_LONG).outEdges() .contains(multiAtlas.edge(123456789120001L))); .contains(multiAtlas.edge(123456789120001L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_2_ID_LONG).outEdges() .contains(multiAtlas.edge(123456789120002L))); .contains(multiAtlas.edge(123456789120002L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_3_ID_LONG).outEdges() .isEmpty());
verifyEdge(multiAtlas.edge(123456789120001L), MultiAtlasBorderFixerTestRule.POINT_1_LOCATION, MultiAtlasBorderFixerTestRule.POINT_2_LOCATION); verifyEdge(multiAtlas.edge(123456789120002L), MultiAtlasBorderFixerTestRule.POINT_2_LOCATION, MultiAtlasBorderFixerTestRule.POINT_3_LOCATION); multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_1_ID_LONG).inEdges().isEmpty()); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_1_ID_LONG).outEdges() .contains(multiAtlas.edge(123456789120001L))); .contains(multiAtlas.edge(123456789120001L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_2_ID_LONG).inEdges() .contains(multiAtlas.edge(223456789120000L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_2_ID_LONG).outEdges() .contains(multiAtlas.edge(123456789120002L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_2_ID_LONG).outEdges() .contains(multiAtlas.edge(-223456789120000L))); .contains(multiAtlas.edge(123456789120002L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_3_ID_LONG).outEdges() .isEmpty()); .contains(multiAtlas.edge(-223456789120000L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_4_ID_LONG).outEdges() .contains(multiAtlas.edge(223456789120000L)));
verifyEdge(multiAtlas.edge(123456789120001L), MultiAtlasBorderFixerTestRule.POINT_1_LOCATION, MultiAtlasBorderFixerTestRule.POINT_2_LOCATION); verifyEdge(multiAtlas.edge(123456789120002L), MultiAtlasBorderFixerTestRule.POINT_2_LOCATION, MultiAtlasBorderFixerTestRule.POINT_3_LOCATION); multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_4_ID_LONG).inEdges().isEmpty()); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_4_ID_LONG).outEdges() .contains(multiAtlas.edge(223456789120000L))); .contains(multiAtlas.edge(223456789120000L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_1_ID_LONG).outEdges() .contains(multiAtlas.edge(123456789120001L))); .contains(multiAtlas.edge(123456789120001L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_2_ID_LONG).outEdges() .contains(multiAtlas.edge(123456789120002L))); .contains(multiAtlas.edge(123456789120002L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_3_ID_LONG).outEdges() .contains(multiAtlas.edge(323456789120000L))); .contains(multiAtlas.edge(323456789120000L))); Assert.assertTrue(multiAtlas.node(MultiAtlasBorderFixerTestRule.POINT_5_ID_LONG).outEdges() .isEmpty());
@Test public void testOneWaySubAtlasWithRelations() { final Atlas subAtlas1 = this.setup.oneWaySubAtlas1From1To3WithRelations(); final Atlas subAtlas2 = this.setup.oneWaySubAtlas2From1To3WithRelations(); final MultiAtlas multiAtlas = new MultiAtlas(subAtlas1, subAtlas2); // Verify first edge verifyEdge(multiAtlas.edge(123456789120001L), MultiAtlasBorderFixerTestRule.POINT_1_LOCATION, MultiAtlasBorderFixerTestRule.POINT_2_LOCATION); // Verify second edge verifyEdge(multiAtlas.edge(123456789120002L), MultiAtlasBorderFixerTestRule.POINT_2_LOCATION, MultiAtlasBorderFixerTestRule.POINT_3_LOCATION); // Verify relations Assert.assertEquals(multiAtlas.edge(123456789120001L).relations().size(), 2); Assert.assertEquals(multiAtlas.edge(123456789120002L).relations().size(), 2); // Verify that relation has members Assert.assertEquals(multiAtlas.relation(987654321L).members().size(), 2); Assert.assertEquals(multiAtlas.relation(887654321L).members().size(), 2); }
@Test public void testThreeSubAtlas() { final Atlas subAtlas1 = this.setup.aSubAtlas(); final Atlas subAtlas2 = this.setup.anotherSubAtlas(); final Atlas subAtlas3 = this.setup.aThirdSubAtlas(); final MultiAtlas multiAtlas = new MultiAtlas(subAtlas1, subAtlas2, subAtlas3); // Verify route final Route route = AStarRouter.dijkstra(multiAtlas, Distance.TEN_MILES).route( Location.forString(MultiAtlasBorderFixerTestRule.POINT_1_LOCATION), Location.forString(MultiAtlasBorderFixerTestRule.POINT_5_LOCATION)); Assert.assertEquals(4, route.size()); // Verify this inconsistent edge is gone Assert.assertNull(multiAtlas.edge(223456789120000L)); }