EdgeInfoLabelTest.java
/**
* Copyright (c) 2022, RTE (http://www.rte-france.com)
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package com.powsybl.nad.svg;
import com.powsybl.diagram.test.Networks;
import com.powsybl.iidm.network.Network;
import com.powsybl.iidm.network.test.ThreeWindingsTransformerNetworkFactory;
import com.powsybl.nad.AbstractTest;
import com.powsybl.nad.layout.LayoutParameters;
import com.powsybl.nad.model.BranchEdge;
import com.powsybl.nad.model.Graph;
import com.powsybl.nad.model.ThreeWtEdge;
import com.powsybl.nad.svg.iidm.DefaultLabelProvider;
import com.powsybl.nad.svg.iidm.NominalVoltageStyleProvider;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.Optional;
/**
* @author Florian Dupuy {@literal <florian.dupuy at rte-france.com>}
*/
class EdgeInfoLabelTest extends AbstractTest {
private String internalLabel;
private String externalLabel;
@BeforeEach
void setup() {
setLayoutParameters(new LayoutParameters());
setSvgParameters(new SvgParameters()
.setSvgWidthAndHeightAdded(true)
.setFixedWidth(800));
}
@Override
protected StyleProvider getStyleProvider(Network network) {
return new NominalVoltageStyleProvider(network);
}
@Override
protected LabelProvider getLabelProvider(Network network) {
return new DefaultLabelProvider(network, getSvgParameters()) {
@Override
public Optional<EdgeInfo> getEdgeInfo(Graph graph, BranchEdge edge, BranchEdge.Side side) {
return Optional.of(new EdgeInfo("test", EdgeInfo.Direction.OUT, internalLabel, externalLabel));
}
@Override
public Optional<EdgeInfo> getEdgeInfo(Graph graph, ThreeWtEdge edge) {
return Optional.of(new EdgeInfo("test", EdgeInfo.Direction.IN, internalLabel, externalLabel));
}
@Override
public String getArrowPathDIn() { // larger arrow
return "M-2 -1 H2 L0 1z";
}
@Override
public String getArrowPathDOut() { // thinner arrow
return "M-0.5 1 H0.5 L0 -1z";
}
};
}
@Test
void testMissingLabels() {
Network network = Networks.createTwoVoltageLevels();
getSvgParameters().setArrowShift(10);
assertSvgEquals("/edge_info_missing_label.svg", network);
}
@Test
void testPerpendicularLabels() {
Network network = Networks.createTwoVoltageLevels();
internalLabel = "int";
externalLabel = "ext";
getSvgParameters().setEdgeInfoAlongEdge(false)
.setArrowShift(50)
.setArrowLabelShift(25);
assertSvgEquals("/edge_info_perpendicular_label.svg", network);
}
@Test
void testParallelLabels() {
Network network = ThreeWindingsTransformerNetworkFactory.create();
internalLabel = "243";
externalLabel = "145";
getSvgParameters().setArrowShift(60)
.setArrowLabelShift(20);
assertSvgEquals("/edge_info_double_labels.svg", network);
}
}