Search in sources :

Example 1 with SwitchDecider

use of org.eclipse.elk.alg.layered.intermediate.greedyswitch.SwitchDecider in project elk by eclipse.

the class SwitchDeciderTest method givenDeciderForFreeLayer.

private SwitchDecider givenDeciderForFreeLayer(final int layerIndex, final CrossingCountSide direction) {
    freeLayerIndex = layerIndex;
    currentNodeOrder = graph.toNodeArray();
    CrossingMatrixFiller crossingMatrixFiller = new CrossingMatrixFiller(greedyType, currentNodeOrder, layerIndex, direction);
    return new SwitchDecider(layerIndex, currentNodeOrder, crossingMatrixFiller, new int[getNPorts(currentNodeOrder)], new GraphInfoHolder(graph, CrossMinType.ONE_SIDED_GREEDY_SWITCH, new ArrayList<>()), greedyType == CrossMinType.ONE_SIDED_GREEDY_SWITCH);
}
Also used : ArrayList(java.util.ArrayList) CrossingMatrixFiller(org.eclipse.elk.alg.layered.intermediate.greedyswitch.CrossingMatrixFiller) SwitchDecider(org.eclipse.elk.alg.layered.intermediate.greedyswitch.SwitchDecider) GraphInfoHolder(org.eclipse.elk.alg.layered.p3order.GraphInfoHolder)

Example 2 with SwitchDecider

use of org.eclipse.elk.alg.layered.intermediate.greedyswitch.SwitchDecider in project elk by eclipse.

the class SwitchDeciderTest method switchingDummyNodesNotifiesPortSwitch.

/**
 * <pre>
 * ____
 * | *p\ /-*
 * |  | x
 * | *p/ \-*
 * |__|
 * @throws Exception
 * </pre>
 */
@Test
public void switchingDummyNodesNotifiesPortSwitch() throws Exception {
    LNode leftNode = addNodeToLayer(makeLayer());
    LNode[] rightNodes = addNodesToLayer(2, makeLayer());
    LPort[] leftPorts = addPortsOnSide(2, leftNode, PortSide.EAST);
    LGraph nestedGraph = nestedGraph(leftNode);
    Layer nestedLayer = makeLayer(nestedGraph);
    LNode[] dummies = addExternalPortDummiesToLayer(nestedLayer, leftPorts);
    eastWestEdgeFromTo(leftPorts[0], rightNodes[1]);
    eastWestEdgeFromTo(leftPorts[1], rightNodes[0]);
    CrossingMatrixFiller crossingMatrixFiller = new CrossingMatrixFiller(greedyType, nestedGraph.toNodeArray(), 0, CrossingCountSide.EAST);
    GraphInfoHolder parentGraphData = new GraphInfoHolder(graph, greedyType, new ArrayList<>());
    GraphInfoHolder graphData = new GraphInfoHolder(nestedGraph, greedyType, Lists.newArrayList(parentGraphData));
    SwitchDecider switchDecider = new SwitchDecider(0, nestedGraph.toNodeArray(), crossingMatrixFiller, new int[getNPorts(nestedGraph.toNodeArray())], graphData, false);
    if (greedyType == CrossMinType.TWO_SIDED_GREEDY_SWITCH) {
        assertTrue(switchDecider.doesSwitchReduceCrossings(0, 1));
        switchDecider.notifyOfSwitch(dummies[0], dummies[1]);
        assertFalse(switchDecider.doesSwitchReduceCrossings(0, 1));
    }
}
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) CrossingMatrixFiller(org.eclipse.elk.alg.layered.intermediate.greedyswitch.CrossingMatrixFiller) GraphInfoHolder(org.eclipse.elk.alg.layered.p3order.GraphInfoHolder) SwitchDecider(org.eclipse.elk.alg.layered.intermediate.greedyswitch.SwitchDecider) Layer(org.eclipse.elk.alg.layered.graph.Layer) Test(org.junit.Test)

Aggregations

CrossingMatrixFiller (org.eclipse.elk.alg.layered.intermediate.greedyswitch.CrossingMatrixFiller)2 SwitchDecider (org.eclipse.elk.alg.layered.intermediate.greedyswitch.SwitchDecider)2 GraphInfoHolder (org.eclipse.elk.alg.layered.p3order.GraphInfoHolder)2 ArrayList (java.util.ArrayList)1 LGraph (org.eclipse.elk.alg.layered.graph.LGraph)1 LNode (org.eclipse.elk.alg.layered.graph.LNode)1 LPort (org.eclipse.elk.alg.layered.graph.LPort)1 Layer (org.eclipse.elk.alg.layered.graph.Layer)1 Test (org.junit.Test)1