for (final Vertex vertex : currentLayer.getVertices()) { final double median = calculateMedianOfVerticesConnectedTo(vertex.getId(), layers.get(j - 1), edges); vertex.setMedian(median); final double median = calculateMedianOfVerticesConnectedTo(vertex.getId(), layers.get(j + 1), edges); vertex.setMedian(median);
@Test public void calculateMedianTest() { final List<OrientedEdge> edges = new ArrayList<>(); edges.add(new OrientedEdgeImpl("G", "A")); edges.add(new OrientedEdgeImpl("G", "D")); edges.add(new OrientedEdgeImpl("G", "E")); final GraphLayerImpl layer00 = new GraphLayerImpl(0); layer00.addNewVertex("A"); layer00.addNewVertex("B"); layer00.addNewVertex("C"); layer00.addNewVertex("D"); layer00.addNewVertex("E"); final GraphLayerImpl layer01 = new GraphLayerImpl(1); layer01.addNewVertex("F"); layer01.addNewVertex("G"); layer01.addNewVertex("H"); layer01.addNewVertex("I"); layer01.addNewVertex("J"); final MedianVertexLayerPositioning vertexMedian = new MedianVertexLayerPositioning(); final double median = vertexMedian.calculateMedianOfVerticesConnectedTo("G", layer00, edges); assertEquals(3.0, median, 0.0001); }
@Test public void testTwoSeparateTrees() { final LayeredGraph graph = new LayeredGraph(Graphs.TwoSeparateTreesFromRoots); final ReverseEdgesCycleBreaker s01 = new ReverseEdgesCycleBreaker(); s01.breakCycle(graph); final LongestPathVertexLayerer s02 = new LongestPathVertexLayerer(); s02.createLayers(graph); final MedianVertexLayerPositioning vertexPositioning = new MedianVertexLayerPositioning(); final LayerCrossingCount crossingCount = new LayerCrossingCount(); final VerticesTransposer verticesTransposer = new VerticesTransposer(crossingCount); final DefaultVertexOrdering s03 = new DefaultVertexOrdering(vertexPositioning, crossingCount, verticesTransposer); s03.orderVertices(graph); Assertions.assertThat(graph.getLayers()) .as("TwoSeparateTreesFromRoots graph vertices should be placed into three layers") .hasSize(3); }
@Test public void testFullGraph() { final LayeredGraph graph = new LayeredGraph(Graphs.Full); final ReverseEdgesCycleBreaker s01 = new ReverseEdgesCycleBreaker(); s01.breakCycle(graph); final LongestPathVertexLayerer s02 = new LongestPathVertexLayerer(); s02.createLayers(graph); final MedianVertexLayerPositioning vertexPositioning = new MedianVertexLayerPositioning(); final LayerCrossingCount crossingCount = new LayerCrossingCount(); final VerticesTransposer verticesTransposer = new VerticesTransposer(crossingCount); final DefaultVertexOrdering s03 = new DefaultVertexOrdering(vertexPositioning, crossingCount, verticesTransposer); s03.orderVertices(graph); Assertions.assertThat(graph.getLayers()) .as("Full graph vertices should be in 4 layers") .hasSize(4); } }
@Test public void testSimpleReorder() { final LayeredGraph graph = new LayeredGraph(); graph.addEdge("A", "D"); graph.addEdge("B", "C"); final GraphLayerImpl layer01 = new GraphLayerImpl(1); layer01.addNewVertex("A"); layer01.addNewVertex("B"); graph.getLayers().add(layer01); final GraphLayerImpl layer02 = new GraphLayerImpl(2); layer02.addNewVertex("C"); layer02.addNewVertex("D"); graph.getLayers().add(layer02); final MedianVertexLayerPositioning median = new MedianVertexLayerPositioning(); final LayerCrossingCount layersCount = new LayerCrossingCount(); final VerticesTransposer verticesTransposer = new VerticesTransposer(layersCount); final DefaultVertexOrdering ordering = new DefaultVertexOrdering(median, layersCount, verticesTransposer); ordering.orderVertices(graph); Assertions.assertThat(graph.getLayers().get(0).getVertices()) .extracting(Vertex::getId) .containsExactly("A", "B"); Assertions.assertThat(graph.getLayers().get(1).getVertices()) .extracting(Vertex::getId) .containsExactly("D", "C"); }
@Test public void testRealCase1() { final LayeredGraph graph = new LayeredGraph(Graphs.REAL_CASE_1); final ReverseEdgesCycleBreaker s01 = new ReverseEdgesCycleBreaker(); s01.breakCycle(graph); final LongestPathVertexLayerer s02 = new LongestPathVertexLayerer(); s02.createLayers(graph); final MedianVertexLayerPositioning vertexPositioning = new MedianVertexLayerPositioning(); final LayerCrossingCount crossingCount = new LayerCrossingCount(); final VerticesTransposer verticesTransposer = new VerticesTransposer(crossingCount); final DefaultVertexOrdering s03 = new DefaultVertexOrdering(vertexPositioning, crossingCount, verticesTransposer); s03.orderVertices(graph); Assert.assertEquals(6, graph.getLayers().size()); final DefaultVertexPositioning defaultVertexPositioning = new DefaultVertexPositioning(); defaultVertexPositioning.calculateVerticesPositions(graph, LayerArrangement.TopDown); }
graph.getLayers().add(layer03); final MedianVertexLayerPositioning median = new MedianVertexLayerPositioning(); final LayerCrossingCount layersCount = new LayerCrossingCount(); final VerticesTransposer verticesTransposer = new VerticesTransposer(layersCount);