SubNetworkPredicateTest.java
/**
* Copyright (c) 2020, 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.reducer;
import com.powsybl.iidm.network.Identifiable;
import com.powsybl.iidm.network.Network;
import com.powsybl.iidm.network.test.EurostagTutorialExample1Factory;
import com.powsybl.iidm.network.test.FourSubstationsNodeBreakerFactory;
import com.powsybl.iidm.network.test.ThreeWindingsTransformerNetworkFactory;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
*/
class SubNetworkPredicateTest {
@Test
void testEsgTuto() {
Network network = EurostagTutorialExample1Factory.create();
NetworkPredicate predicate = new SubNetworkPredicate(network.getVoltageLevel("VLHV1"), 1);
assertEquals(List.of("P1", "P2"), network.getSubstationStream().filter(predicate::test).map(Identifiable::getId).toList());
assertEquals(List.of("VLGEN", "VLHV1", "VLHV2"), network.getVoltageLevelStream().filter(predicate::test).map(Identifiable::getId).toList());
}
@Test
void test3wt() {
Network network = ThreeWindingsTransformerNetworkFactory.create();
NetworkPredicate predicate = new SubNetworkPredicate(network.getVoltageLevel("VL_132"), 1);
assertEquals(List.of("SUBSTATION"), network.getSubstationStream().filter(predicate::test).map(Identifiable::getId).toList());
assertEquals(List.of("VL_132", "VL_33", "VL_11"), network.getVoltageLevelStream().filter(predicate::test).map(Identifiable::getId).toList());
}
@Test
void testFourSubstations() {
Network network = FourSubstationsNodeBreakerFactory.create();
NetworkPredicate predicate0 = new SubNetworkPredicate(network.getVoltageLevel("S1VL1"), 0);
assertEquals(List.of("S1"), network.getSubstationStream().filter(predicate0::test).map(Identifiable::getId).toList());
assertEquals(List.of("S1VL1"), network.getVoltageLevelStream().filter(predicate0::test).map(Identifiable::getId).toList());
NetworkPredicate predicate1 = new SubNetworkPredicate(network.getVoltageLevel("S1VL1"), 1);
assertEquals(List.of("S1"), network.getSubstationStream().filter(predicate1::test).map(Identifiable::getId).toList());
assertEquals(List.of("S1VL1", "S1VL2"), network.getVoltageLevelStream().filter(predicate1::test).map(Identifiable::getId).toList());
NetworkPredicate predicate2 = new SubNetworkPredicate(network.getVoltageLevel("S1VL1"), 2);
assertEquals(List.of("S1", "S2", "S3"), network.getSubstationStream().filter(predicate2::test).map(Identifiable::getId).toList());
assertEquals(List.of("S1VL1", "S1VL2", "S2VL1", "S3VL1"), network.getVoltageLevelStream().filter(predicate2::test).map(Identifiable::getId).toList());
NetworkPredicate predicate3 = new SubNetworkPredicate(network.getVoltageLevel("S1VL1"), 3);
assertEquals(List.of("S1", "S2", "S3", "S4"), network.getSubstationStream().filter(predicate3::test).map(Identifiable::getId).toList());
assertEquals(List.of("S1VL1", "S1VL2", "S2VL1", "S3VL1", "S4VL1"), network.getVoltageLevelStream().filter(predicate3::test).map(Identifiable::getId).toList());
NetworkPredicate predicate150 = new SubNetworkPredicate(network.getVoltageLevel("S1VL1"), 150);
assertEquals(List.of("S1", "S2", "S3", "S4"), network.getSubstationStream().filter(predicate150::test).map(Identifiable::getId).toList());
assertEquals(List.of("S1VL1", "S1VL2", "S2VL1", "S3VL1", "S4VL1"), network.getVoltageLevelStream().filter(predicate150::test).map(Identifiable::getId).toList());
}
@Test
void shouldThrowInvalidMaxDepth() {
Network network = EurostagTutorialExample1Factory.create();
IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> new SubNetworkPredicate(network.getVoltageLevel("VLHV1"), -2));
assertTrue(e.getMessage().contains("Invalid max depth value: -2"));
}
}