Search in sources :

Example 46 with LGraph

use of org.eclipse.elk.alg.layered.graph.LGraph in project elk by eclipse.

the class GreedyPortDistributorTest method givenMoreHierarchicalNodes_DoesNotSwitchPorts.

/**
 * <pre>
 * ____
 * |*-+  *
 * |  |\/
 * |*-+/\
 * |  |  *
 * |*-+--*
 * |--|
 * </pre>
 */
@Test
public void givenMoreHierarchicalNodes_DoesNotSwitchPorts() {
    LNode leftOuterNode = addNodeToLayer(makeLayer(getGraph()));
    LNode[] rightNodes = addNodesToLayer(3, makeLayer(getGraph()));
    LPort[] leftOuterPorts = addPortsOnSide(3, leftOuterNode, PortSide.EAST);
    eastWestEdgeFromTo(leftOuterPorts[0], rightNodes[1]);
    eastWestEdgeFromTo(leftOuterPorts[1], rightNodes[0]);
    eastWestEdgeFromTo(leftOuterPorts[2], rightNodes[2]);
    LGraph leftInnerGraph = nestedGraph(leftOuterNode);
    LNode[] leftInnerNodes = addNodesToLayer(3, makeLayer(leftInnerGraph));
    LNode[] leftInnerDummyNodes = addExternalPortDummiesToLayer(makeLayer(leftInnerGraph), leftOuterPorts);
    eastWestEdgeFromTo(leftInnerNodes[0], leftInnerDummyNodes[0]);
    eastWestEdgeFromTo(leftInnerNodes[1], leftInnerDummyNodes[1]);
    eastWestEdgeFromTo(leftInnerNodes[2], leftInnerDummyNodes[2]);
    // Order stays the same.
    List<LPort> expectedPortOrderLeftNode = portsOrderedAs(leftOuterNode, 0, 1, 2);
    setUpDistributor();
    portDist.distributePortsWhileSweeping(graph.toNodeArray(), 0, false);
    assertThat(leftOuterNode.getPorts(), is(expectedPortOrderLeftNode));
}
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) Test(org.junit.Test)

Example 47 with LGraph

use of org.eclipse.elk.alg.layered.graph.LGraph in project elk by eclipse.

the class BasicNodePlacementTest method testProperCoordinates.

// ////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Tests
@TestAfterProcessor(BKNodePlacer.class)
@TestAfterProcessor(LinearSegmentsNodePlacer.class)
@TestAfterProcessor(NetworkSimplexPlacer.class)
@TestAfterProcessor(SimpleNodePlacer.class)
public void testProperCoordinates(final Object graph) {
    LGraph lGraph = (LGraph) graph;
    for (Layer layer : lGraph) {
        Iterator<LNode> nodeIter = layer.getNodes().iterator();
        LNode node = nodeIter.next();
        double lastBottomY = node.getPosition().y + node.getSize().y;
        while (nodeIter.hasNext()) {
            node = nodeIter.next();
            assertTrue(lastBottomY < node.getPosition().y);
            lastBottomY = node.getPosition().y + node.getSize().y;
        }
    }
}
Also used : LNode(org.eclipse.elk.alg.layered.graph.LNode) LGraph(org.eclipse.elk.alg.layered.graph.LGraph) Layer(org.eclipse.elk.alg.layered.graph.Layer) TestAfterProcessor(org.eclipse.elk.alg.test.framework.annotations.TestAfterProcessor)

Example 48 with LGraph

use of org.eclipse.elk.alg.layered.graph.LGraph in project elk by eclipse.

the class LayerSweepCrossingMinimizerTest method nonRecursive_givenGraphWithCrossingWithFixedPortOrderToHierarchicalGraph_ShouldRemoveCrossing.

/**
 * <pre>
 * ___  ____
 * | |\/+-*|
 * |_|/\|  |
 *      |--|
 * </pre>
 */
@Test
public void nonRecursive_givenGraphWithCrossingWithFixedPortOrderToHierarchicalGraph_ShouldRemoveCrossing() {
    LNode leftNode = addNodeToLayer(makeLayer(getGraph()));
    setFixedOrderConstraint(leftNode);
    LNode rightOuterNode = addNodeToLayer(makeLayer(getGraph()));
    eastWestEdgeFromTo(leftNode, rightOuterNode);
    LPort rightOuterPort = addPortOnSide(rightOuterNode, PortSide.WEST);
    LPort leftLowerPort = addPortOnSide(leftNode, PortSide.EAST);
    addEdgeBetweenPorts(leftLowerPort, rightOuterPort);
    LGraph rightInnerGraph = nestedGraph(rightOuterNode);
    LNode rightInnerDummyNode = addExternalPortDummyNodeToLayer(makeLayer(rightInnerGraph), rightOuterPort);
    LNode rightInnerNode = addNodeToLayer(makeLayer(rightInnerGraph));
    eastWestEdgeFromTo(rightInnerDummyNode, rightInnerNode);
    List<LPort> expectedPortOrderRight = Lists.newArrayList(rightOuterNode.getPorts().get(1), rightOuterNode.getPorts().get(0));
    setOnAllGraphs(LayeredOptions.CROSSING_MINIMIZATION_HIERARCHICAL_SWEEPINESS, 1.0, graph);
    setUpAndMinimizeCrossings();
    assertThat(getGraph().getLayers().get(1).getNodes().get(0).getPorts(), is(expectedPortOrderRight));
}
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) Test(org.junit.Test)

Example 49 with LGraph

use of org.eclipse.elk.alg.layered.graph.LGraph in project elk by eclipse.

the class LayerSweepCrossingMinimizerTest method givenSimpleHierarchicalCrossSweepingFromRightToLeft_ShouldResultInNoCrossing.

/**
 * <pre>
 * ____  ____
 * |*-+  +-*|
 * |  |\/|  |
 * |*-+/\+-*|
 * |--|  |--|
 * </pre>
 */
@Test
public void givenSimpleHierarchicalCrossSweepingFromRightToLeft_ShouldResultInNoCrossing() {
    LNode leftOuterNode = addNodeToLayer(makeLayer(getGraph()));
    LNode rightOuterNode = addNodeToLayer(makeLayer(getGraph()));
    LPort[] leftOuterPorts = addPortsOnSide(2, leftOuterNode, PortSide.EAST);
    LPort[] rightOuterPorts = addPortsOnSide(2, rightOuterNode, PortSide.WEST);
    addEdgeBetweenPorts(leftOuterPorts[0], rightOuterPorts[0]);
    addEdgeBetweenPorts(leftOuterPorts[1], rightOuterPorts[1]);
    LGraph leftInnerGraph = makeNestedTwoNodeGraphWithEasternPorts(leftOuterNode, leftOuterPorts);
    makeNestedTwoNodeGraphWithWesternPorts(rightOuterNode, rightOuterPorts);
    List<LNode> expectedNodeOrderLeft = switchOrderOfNodesInLayer(0, 1, leftInnerGraph.getLayers().get(0));
    List<LPort> expectedOrderOfPortsLeft = Lists.newArrayList(leftOuterPorts[1], leftOuterPorts[0]);
    getRandom().setNextBoolean(false);
    setUpAndMinimizeCrossings();
    assertThat(leftOuterNode.getPorts(), is(expectedOrderOfPortsLeft));
    assertThat(leftInnerGraph.getLayers().get(0).getNodes(), is(expectedNodeOrderLeft));
}
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) Test(org.junit.Test)

Example 50 with LGraph

use of org.eclipse.elk.alg.layered.graph.LGraph in project elk by eclipse.

the class LayerSweepCrossingMinimizerTest method givenCrossWithNoExternalPortDummiesOnOneNestedGraph_ShouldRemoveCrossing.

/**
 * <pre>
 * ____  ____
 * |*-+  | *|
 * |  |\/|  |
 * |*-+/\| *|
 * |--|  |--|
 * </pre>
 */
@Test
public void givenCrossWithNoExternalPortDummiesOnOneNestedGraph_ShouldRemoveCrossing() {
    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[0]);
    addEdgeBetweenPorts(leftOuterPorts[1], rightOuterPorts[1]);
    makeNestedTwoNodeGraphWithEasternPorts(leftOuterNode, leftOuterPorts);
    LGraph rightInnerGraph = nestedGraph(rightOuterNode);
    addNodesToLayer(2, makeLayer(rightInnerGraph));
    List<LPort> expectedPortOrderRight = Lists.newArrayList(rightOuterPorts[1], rightOuterPorts[0]);
    setUpAndMinimizeCrossings();
    assertThat(expectedPortOrderRight, is(rightOuterNode.getPorts()));
}
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) Test(org.junit.Test)

Aggregations

LGraph (org.eclipse.elk.alg.layered.graph.LGraph)115 LNode (org.eclipse.elk.alg.layered.graph.LNode)90 LPort (org.eclipse.elk.alg.layered.graph.LPort)49 Layer (org.eclipse.elk.alg.layered.graph.Layer)38 Test (org.junit.Test)36 TestAfterProcessor (org.eclipse.elk.alg.test.framework.annotations.TestAfterProcessor)19 LEdge (org.eclipse.elk.alg.layered.graph.LEdge)17 KVector (org.eclipse.elk.core.math.KVector)15 InternalProperties (org.eclipse.elk.alg.layered.options.InternalProperties)14 LayeredOptions (org.eclipse.elk.alg.layered.options.LayeredOptions)13 List (java.util.List)11 ILayoutProcessor (org.eclipse.elk.core.alg.ILayoutProcessor)11 IElkProgressMonitor (org.eclipse.elk.core.util.IElkProgressMonitor)10 NodeType (org.eclipse.elk.alg.layered.graph.LNode.NodeType)9 Lists (com.google.common.collect.Lists)7 Set (java.util.Set)7 GraphProperties (org.eclipse.elk.alg.layered.options.GraphProperties)7 GraphInfoHolder (org.eclipse.elk.alg.layered.p3order.GraphInfoHolder)7 PortSide (org.eclipse.elk.core.options.PortSide)7 ElkNode (org.eclipse.elk.graph.ElkNode)7