TextNodeTest.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.VoltageLevel;
import com.powsybl.nad.AbstractTest;
import com.powsybl.nad.layout.LayoutParameters;
import com.powsybl.nad.model.VoltageLevelNode;
import com.powsybl.nad.svg.iidm.DefaultLabelProvider;
import com.powsybl.nad.svg.iidm.TopologicalStyleProvider;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.Collections;
import java.util.List;
/**
* @author Florian Dupuy {@literal <florian.dupuy at rte-france.com>}
*/
class TextNodeTest extends AbstractTest {
private LabelProvider labelProvider;
@BeforeEach
void setup() {
setLayoutParameters(new LayoutParameters());
setSvgParameters(new SvgParameters()
.setSvgWidthAndHeightAdded(true)
.setFixedWidth(800));
}
@Override
protected StyleProvider getStyleProvider(Network network) {
return new TopologicalStyleProvider(network);
}
@Override
protected LabelProvider getLabelProvider(Network network) {
if (labelProvider != null) {
return labelProvider;
}
return new DefaultLabelProvider(network, getSvgParameters()) {
@Override
public List<String> getVoltageLevelDetails(VoltageLevelNode vlNode) {
if (getSvgParameters().isVoltageLevelDetails()) {
VoltageLevel vl = network.getVoltageLevel(vlNode.getEquipmentId());
return List.of(
vl.getLoadCount() + " loads",
vl.getGeneratorCount() + " generators",
vl.getBatteryCount() + " batteries",
vl.getDanglingLineCount() + " dangling lines");
} else {
return Collections.emptyList();
}
}
};
}
@Test
void testVlId() {
Network network = Networks.createTwoVoltageLevels();
getSvgParameters().setIdDisplayed(true).setBusLegend(false);
labelProvider = new DefaultLabelProvider(network, getSvgParameters());
assertSvgEquals("/vl_description_id.svg", network);
}
@Test
void testSubstationDescription() {
Network network = Networks.createTwoVoltageLevels();
getSvgParameters().setSubstationDescriptionDisplayed(true).setBusLegend(false).setVoltageLevelDetails(true);
assertSvgEquals("/vl_description_substation.svg", network);
}
@Test
void testSubstationId() {
Network network = Networks.createTwoVoltageLevels();
getSvgParameters().setSubstationDescriptionDisplayed(true).setIdDisplayed(true).setBusLegend(false);
assertSvgEquals("/vl_description_substation_id.svg", network);
}
@Test
void testDetailedTextNodeNoBusLegend() {
Network network = Networks.createTwoVoltageLevels();
getSvgParameters().setVoltageLevelDetails(true).setBusLegend(false);
assertSvgEquals("/detailed_text_node_no_legend.svg", network);
}
@Test
void testDetailedTextNode() {
Network network = Networks.createTwoVoltageLevels();
getSvgParameters().setVoltageLevelDetails(true).setSubstationDescriptionDisplayed(true);
assertSvgEquals("/detailed_text_node.svg", network);
}
@Test
void testProductionConsumption() {
Network network = Networks.createThreeVoltageLevelsFiveBusesWithValuesAtTerminals();
getSvgParameters().setVoltageLevelDetails(true).setBusLegend(false);
labelProvider = new DefaultLabelProvider(network, getSvgParameters());
assertSvgEquals("/production_consumption_text_node.svg", network);
}
@Test
void testProductionConsumptionWithNaN() {
Network network = Networks.createThreeVoltageLevelsFiveBuses();
getSvgParameters().setVoltageLevelDetails(true).setBusLegend(false);
labelProvider = new DefaultLabelProvider(network, getSvgParameters());
assertSvgEquals("/production_consumption_text_node_nan.svg", network);
}
}