ReplaceTieLinesByLinesTest.java
/**
* Copyright (c) 2023, 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/.
* SPDX-License-Identifier: MPL-2.0
*/
package com.powsybl.iidm.modification;
import com.powsybl.commons.extensions.AbstractExtension;
import com.powsybl.computation.local.LocalComputationManager;
import com.powsybl.iidm.modification.topology.AbstractModificationTest;
import com.powsybl.iidm.network.*;
import com.powsybl.iidm.network.test.EurostagTutorialExample1Factory;
import com.powsybl.iidm.serde.NetworkSerDe;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.time.ZonedDateTime;
import java.util.Properties;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* @author Miora Vedelago {@literal <miora.ralambotiana at rte-france.com>}
*/
class ReplaceTieLinesByLinesTest extends AbstractModificationTest {
@Test
void roundTripBusBreaker() throws IOException {
Network network = createBusBreakerNetworkWithAliasesPropertiesExtensions();
new ReplaceTieLinesByLines().apply(network);
writeXmlTest(network, "/eurostag-replace-tl.xml");
}
@Test
void roundTripNodeBreaker() throws IOException {
Network network = createDummyNodeBreakerNetwork();
new ReplaceTieLinesByLines().apply(network);
writeXmlTest(network, "/replace-tl-nb.xml");
}
@Test
void postProcessor() throws IOException {
NetworkSerDe.write(createBusBreakerNetworkWithAliasesPropertiesExtensions(), tmpDir.resolve("tl-test.xml"));
Network read = Network.read(tmpDir.resolve("tl-test.xml"), LocalComputationManager.getDefault(),
new ImportConfig("replaceTieLinesByLines"), new Properties());
writeXmlTest(read, "/eurostag-replace-tl.xml");
}
private static Network createBusBreakerNetworkWithAliasesPropertiesExtensions() {
Network network = EurostagTutorialExample1Factory.createWithTieLine();
DanglingLine dl1 = network.getDanglingLine("NHV1_XNODE1");
dl1.addAlias("test1");
dl1.addAlias("test2", "same");
dl1.setProperty("key1", "value1");
dl1.setProperty("key2", "value2");
dl1.setProperty("key3", "value4");
DanglingLine dl2 = network.getDanglingLine("XNODE1_NHV2");
dl2.addAlias("test3");
dl2.addAlias("test4", "same");
dl2.setProperty("key1", "value1");
dl2.setProperty("key2", "value3");
dl1.addExtension(DummyIdentifiableExtension.class, new DummyIdentifiableExtension<>());
dl2.addExtension(DummyIdentifiableExtension.class, new DummyIdentifiableExtension<>());
network.getTieLine("NHV1_NHV2_1").addExtension(DummyIdentifiableExtension.class, new DummyIdentifiableExtension<>());
return network;
}
private static Network createDummyNodeBreakerNetwork() {
Network network = Network.create("test", "test");
network.setCaseDate(ZonedDateTime.parse("2023-04-29T14:52:01.427+02:00"));
Substation s1 = network.newSubstation().setId("S1").add();
Substation s2 = network.newSubstation().setId("S2").add();
VoltageLevel vl1 = s1.newVoltageLevel().setId("VL").setNominalV(1f).setTopologyKind(TopologyKind.NODE_BREAKER).add();
VoltageLevel vl2 = s2.newVoltageLevel().setId("VL2").setNominalV(1f).setTopologyKind(TopologyKind.NODE_BREAKER).add();
DanglingLine dl1 = vl1.newDanglingLine().setId("DL1").setNode(0).setP0(0.0).setQ0(0.0).setR(1.5).setX(13.0).setG(0.0).setB(1e-6).add();
DanglingLine dl2 = vl2.newDanglingLine().setId("DL2").setNode(0).setP0(0.0).setQ0(0.0).setR(1.5).setX(13.0).setG(0.0).setB(1e-6).add();
network.newTieLine().setId("TL").setDanglingLine1(dl1.getId()).setDanglingLine2(dl2.getId()).add();
return network;
}
private static final class DummyIdentifiableExtension<T extends Identifiable<T>> extends AbstractExtension<T> {
@Override
public String getName() {
return "foo";
}
}
@Test
void testGetName() {
AbstractNetworkModification networkModification = new ReplaceTieLinesByLines();
assertEquals("ReplaceTieLinesByLines", networkModification.getName());
}
@Test
void testHasImpact() {
Network network = createDummyNodeBreakerNetwork();
ReplaceTieLinesByLines modification = new ReplaceTieLinesByLines();
assertEquals(NetworkModificationImpact.HAS_IMPACT_ON_NETWORK, modification.hasImpactOnNetwork(network));
}
}