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());
}
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);
}
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());
}
}
}
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());
}
}
}
Aggregations