Search in sources :

Example 16 with GraphInfoHolder

use of org.eclipse.elk.alg.layered.p3order.GraphInfoHolder in project elk by eclipse.

the class LayerSweepTypeDeciderTest method northSouthPortsChangeDecision.

/**
 * <pre>
 *   __________
 *   | d--*   |
 *   | |  |   |
 *   | *  d-* |
 * *=+-*--*-*-+=*
 *   |________|
 * </pre>
 */
@Test
public void northSouthPortsChangeDecision() {
    Layer[] layers = makeLayers(3);
    LNode leftOuter = addNodeToLayer(layers[0]);
    LNode middleOuter = addNodeToLayer(layers[1]);
    LNode rightOuter = addNodeToLayer(layers[2]);
    LPort leftPortMiddleNode = addPortOnSide(middleOuter, PortSide.WEST);
    LPort rightPortMiddleNode = addPortOnSide(middleOuter, PortSide.EAST);
    eastWestEdgeFromTo(middleOuter, rightOuter);
    eastWestEdgeFromTo(rightPortMiddleNode, rightOuter);
    eastWestEdgeFromTo(leftOuter, leftPortMiddleNode);
    eastWestEdgeFromTo(leftOuter, middleOuter);
    LGraph nestedGraph = nestedGraph(middleOuter);
    Layer[] innerLayers = makeLayers(5, nestedGraph);
    LNode leftDummy = addExternalPortDummyNodeToLayer(innerLayers[0], leftPortMiddleNode);
    LNode[] firstLayer = addNodesToLayer(3, innerLayers[1]);
    LNode[] secondLayer = addNodesToLayer(3, innerLayers[2]);
    LNode[] thirdLayer = addNodesToLayer(2, innerLayers[3]);
    LNode rightDummy = addExternalPortDummyNodeToLayer(innerLayers[4], rightPortMiddleNode);
    eastWestEdgeFromTo(leftDummy, firstLayer[2]);
    eastWestEdgeFromTo(firstLayer[2], secondLayer[2]);
    eastWestEdgeFromTo(secondLayer[2], thirdLayer[1]);
    eastWestEdgeFromTo(thirdLayer[1], rightDummy);
    addNorthSouthEdge(PortSide.NORTH, firstLayer[1], firstLayer[0], secondLayer[0], false);
    addNorthSouthEdge(PortSide.SOUTH, secondLayer[0], secondLayer[1], thirdLayer[0], false);
    graph.id = 0;
    nestedGraph.id = 1;
    setOnAllGraphs(LayeredOptions.CROSSING_MINIMIZATION_HIERARCHICAL_SWEEPINESS, 0.1, graph);
    GraphInfoHolder gd = new GraphInfoHolder(nestedGraph, CrossMinType.BARYCENTER, Arrays.asList(new GraphInfoHolder(graph, CrossMinType.BARYCENTER, null)));
    assertTrue(gd.dontSweepInto());
}
Also used : LPort(org.eclipse.elk.alg.layered.graph.LPort) LNode(org.eclipse.elk.alg.layered.graph.LNode) LGraph(org.eclipse.elk.alg.layered.graph.LGraph) GraphInfoHolder(org.eclipse.elk.alg.layered.p3order.GraphInfoHolder) Layer(org.eclipse.elk.alg.layered.graph.Layer) Test(org.junit.Test)

Example 17 with GraphInfoHolder

use of org.eclipse.elk.alg.layered.p3order.GraphInfoHolder in project elk by eclipse.

the class AllCrossingsCounterTest method allCrossings.

private int allCrossings() {
    LNode[][] nodeArray = graph.toNodeArray();
    int portId = 0;
    for (LNode[] lNodes : nodeArray) {
        for (LNode lNode : lNodes) {
            for (LPort port : lNode.getPorts()) {
                port.id = portId;
                portId++;
            }
        }
    }
    GraphInfoHolder gd = new GraphInfoHolder(graph, CrossMinType.BARYCENTER, null);
    return gd.crossCounter().countAllCrossings(nodeArray);
}
Also used : LPort(org.eclipse.elk.alg.layered.graph.LPort) LNode(org.eclipse.elk.alg.layered.graph.LNode) GraphInfoHolder(org.eclipse.elk.alg.layered.p3order.GraphInfoHolder)

Example 18 with GraphInfoHolder

use of org.eclipse.elk.alg.layered.p3order.GraphInfoHolder in project elk by eclipse.

the class LayerSweepCrossingMinimizerTest method needsHierarchicalBecauseOfFixedOrder_checkWhetherMarked.

/**
 * <pre>
 * _______  _____
 * |   *-+--+   |
 * |   *-+--+   |
 * |_____|  |___|
 *            ^
 *      fixed port order
 * </pre>
 */
@Test
public void needsHierarchicalBecauseOfFixedOrder_checkWhetherMarked() {
    LNode leftOuterNode = addNodeToLayer(makeLayer());
    LNode rightOuterNode = addNodeToLayer(makeLayer());
    setFixedOrderConstraint(rightOuterNode);
    LPort[] leftOuterPorts = addPortsOnSide(2, leftOuterNode, PortSide.EAST);
    LPort[] rightOuterPorts = addPortsOnSide(2, rightOuterNode, PortSide.WEST);
    addEdgeBetweenPorts(leftOuterPorts[0], rightOuterPorts[1]);
    addEdgeBetweenPorts(leftOuterPorts[1], rightOuterPorts[0]);
    makeNestedTwoNodeGraphWithEasternPorts(leftOuterNode, leftOuterPorts);
    setUpAndMinimizeCrossings();
    List<GraphInfoHolder> graphData = crossMin.getGraphData();
    for (GraphInfoHolder data : graphData) {
        if (data.hasParent()) {
            assertFalse(data.dontSweepInto());
        }
    }
}
Also used : LPort(org.eclipse.elk.alg.layered.graph.LPort) LNode(org.eclipse.elk.alg.layered.graph.LNode) GraphInfoHolder(org.eclipse.elk.alg.layered.p3order.GraphInfoHolder) Test(org.junit.Test)

Example 19 with GraphInfoHolder

use of org.eclipse.elk.alg.layered.p3order.GraphInfoHolder in project elk by eclipse.

the class LayerSweepCrossingMinimizerTest method needsHierarchical_checkWhetherMarked.

/**
 * <pre>
 * _______  _____
 * |   *-+--+-* |
 * |   *-+--+-* |
 * |_____|  |___|
 * </pre>
 */
@Test
public void needsHierarchical_checkWhetherMarked() {
    LNode leftOuterNode = addNodeToLayer(makeLayer());
    LNode rightOuterNode = addNodeToLayer(makeLayer());
    LPort[] leftOuterPorts = addPortsOnSide(2, leftOuterNode, PortSide.EAST);
    LPort[] rightOuterPorts = addPortsOnSide(2, rightOuterNode, PortSide.WEST);
    addEdgeBetweenPorts(leftOuterPorts[0], rightOuterPorts[1]);
    addEdgeBetweenPorts(leftOuterPorts[1], rightOuterPorts[0]);
    makeNestedTwoNodeGraphWithEasternPorts(leftOuterNode, leftOuterPorts);
    makeNestedTwoNodeGraphWithWesternPorts(rightOuterNode, rightOuterPorts);
    graph.setProperty(LayeredOptions.CROSSING_MINIMIZATION_HIERARCHICAL_SWEEPINESS, 0.1);
    setUpAndMinimizeCrossings();
    List<GraphInfoHolder> graphData = crossMin.getGraphData();
    for (GraphInfoHolder data : graphData) {
        if (data.hasParent()) {
            assertFalse(data.dontSweepInto());
        }
    }
}
Also used : LPort(org.eclipse.elk.alg.layered.graph.LPort) LNode(org.eclipse.elk.alg.layered.graph.LNode) GraphInfoHolder(org.eclipse.elk.alg.layered.p3order.GraphInfoHolder) Test(org.junit.Test)

Aggregations

GraphInfoHolder (org.eclipse.elk.alg.layered.p3order.GraphInfoHolder)19 LNode (org.eclipse.elk.alg.layered.graph.LNode)16 LPort (org.eclipse.elk.alg.layered.graph.LPort)15 Test (org.junit.Test)14 LGraph (org.eclipse.elk.alg.layered.graph.LGraph)7 Layer (org.eclipse.elk.alg.layered.graph.Layer)5 CrossingsCounter (org.eclipse.elk.alg.layered.p3order.counting.CrossingsCounter)3 CrossingMatrixFiller (org.eclipse.elk.alg.layered.intermediate.greedyswitch.CrossingMatrixFiller)2 SwitchDecider (org.eclipse.elk.alg.layered.intermediate.greedyswitch.SwitchDecider)2 ArrayList (java.util.ArrayList)1 LayerSweepTypeDecider (org.eclipse.elk.alg.layered.p3order.LayerSweepTypeDecider)1 Ignore (org.junit.Ignore)1