TopologicalStyleTest.java

/**
 * Copyright (c) 2021, 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.ieeecdf.converter.IeeeCdfNetworkFactory;
import com.powsybl.iidm.network.Network;
import com.powsybl.nad.AbstractTest;
import com.powsybl.nad.build.iidm.VoltageLevelFilter;
import com.powsybl.nad.layout.LayoutParameters;
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.Arrays;

/**
 * @author Florian Dupuy {@literal <florian.dupuy at rte-france.com>}
 */
class TopologicalStyleTest extends AbstractTest {

    @BeforeEach
    void setup() {
        setLayoutParameters(new LayoutParameters());
        setSvgParameters(new SvgParameters()
                .setInsertNameDesc(true)
                .setSvgWidthAndHeightAdded(true)
                .setFixedWidth(800));
    }

    @Override
    protected StyleProvider getStyleProvider(Network network) {
        return new TopologicalStyleProvider(network);
    }

    @Override
    protected LabelProvider getLabelProvider(Network network) {
        return new DefaultLabelProvider(network, getSvgParameters());
    }

    @Test
    void testIEEE57() {
        Network network = IeeeCdfNetworkFactory.create57();
        assertSvgEquals("/IEEE_57_bus.svg", network);
    }

    @Test
    void testIEEE118() {
        Network network = IeeeCdfNetworkFactory.create118();
        assertSvgEquals("/IEEE_118_bus.svg", network);
    }

    @Test
    void testIEEE118PartialGraph() {
        Network network = IeeeCdfNetworkFactory.create118();
        VoltageLevelFilter vlDepthFilter = VoltageLevelFilter.createVoltageLevelDepthFilter(network, "VL54", 2);
        assertSvgEquals("/IEEE_118_bus_partial.svg", network, vlDepthFilter);
    }

    @Test
    void testIEEE118PartialNonConnectedGraph() {
        Network network = IeeeCdfNetworkFactory.create118();
        VoltageLevelFilter vlDepthFilter = VoltageLevelFilter.createVoltageLevelsDepthFilter(network, Arrays.asList("VL32", "VL38"), 1);
        assertSvgEquals("/IEEE_118_bus_partial_non_connected.svg", network, vlDepthFilter);
    }

    @Test
    void testEurope() {
        Network network = Network.read("simple-eu.uct", getClass().getResourceAsStream("/simple-eu.uct"));
        assertSvgEquals("/simple-eu.svg", network);
    }

    @Test
    void testEuropeLoopAperture80() {
        Network network = Network.read("simple-eu.uct", getClass().getResourceAsStream("/simple-eu.uct"));
        getSvgParameters().setLoopEdgesAperture(80);
        assertSvgEquals("/simple-eu-loop80.svg", network);
    }

    @Test
    void testEuropeLoopAperture100() {
        Network network = Network.read("simple-eu.uct", getClass().getResourceAsStream("/simple-eu.uct"));
        getSvgParameters().setLoopEdgesAperture(100);
        assertSvgEquals("/simple-eu-loop100.svg", network);
    }
}