AbstractSwitchPredicatesTest.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.network.tck.util;
import com.powsybl.iidm.network.*;
import com.powsybl.iidm.network.util.SwitchPredicates;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import java.util.function.Predicate;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* @author Nicolas Rol {@literal <nicolas.rol at rte-france.com>}
*/
public abstract class AbstractSwitchPredicatesTest {
private static Network network;
@BeforeAll
static void setUpClass() {
network = createNetwork();
}
private static Network createNetwork() {
Network network = Network.create("test", "test");
Substation s1 = network.newSubstation()
.setId("S1")
.setCountry(Country.FR)
.add();
VoltageLevel vl = s1.newVoltageLevel()
.setId("VL1")
.setNominalV(1.0)
.setTopologyKind(TopologyKind.NODE_BREAKER)
.add();
// Busbar sections
vl.getNodeBreakerView()
.newBusbarSection()
.setId("BBS11")
.setNode(0)
.add();
vl.getNodeBreakerView()
.newBusbarSection()
.setId("BBS21")
.setNode(1)
.add();
vl.getNodeBreakerView()
.newBusbarSection()
.setId("BBS12")
.setNode(2)
.add();
vl.getNodeBreakerView()
.newBusbarSection()
.setId("BBS22")
.setNode(3)
.add();
// Disconnectors for coupling
vl.getNodeBreakerView().newDisconnector()
.setId("D_BBS11_BBS12")
.setNode1(0)
.setNode2(2)
.setOpen(true)
.add();
vl.getNodeBreakerView().newDisconnector()
.setId("D_BBS21_BBS22")
.setNode1(1)
.setNode2(3)
.setOpen(false)
.add();
// Generators and loads
vl.newLoad()
.setId("L1")
.setNode(4)
.setP0(1)
.setQ0(1)
.add();
vl.newGenerator()
.setId("G1")
.setNode(5)
.setMaxP(100)
.setMinP(50)
.setTargetP(100)
.setTargetV(400)
.setVoltageRegulatorOn(true)
.add();
vl.newGenerator()
.setId("G2")
.setNode(6)
.setMaxP(100)
.setMinP(50)
.setTargetP(100)
.setTargetV(400)
.setVoltageRegulatorOn(true)
.add();
// Breakers
vl.getNodeBreakerView().newBreaker()
.setId("B_L1_1")
.setNode1(4)
.setNode2(7)
.setOpen(false)
.setFictitious(true)
.add();
vl.getNodeBreakerView().newBreaker()
.setId("B_L1_2")
.setNode1(4)
.setNode2(7)
.setOpen(false)
.add();
vl.getNodeBreakerView().newBreaker()
.setId("B_G1")
.setNode1(5)
.setNode2(8)
.setOpen(true)
.add();
vl.getNodeBreakerView().newBreaker()
.setId("B_G2")
.setNode1(6)
.setNode2(9)
.setOpen(true)
.setFictitious(true)
.add();
vl.getNodeBreakerView().newBreaker()
.setId("B0")
.setNode1(7)
.setNode2(17)
.setOpen(false)
.add();
vl.getNodeBreakerView().newBreaker()
.setId("B1")
.setNode1(8)
.setNode2(11)
.setOpen(true)
.add();
vl.getNodeBreakerView().newBreaker()
.setId("B2")
.setNode1(9)
.setNode2(12)
.setOpen(false)
.setFictitious(true)
.add();
vl.getNodeBreakerView().newBreaker()
.setId("B3")
.setNode1(7)
.setNode2(8)
.setOpen(false)
.add();
vl.getNodeBreakerView().newSwitch()
.setId("B4")
.setNode1(8)
.setNode2(9)
.setOpen(false)
.setKind(SwitchKind.LOAD_BREAK_SWITCH)
.add();
vl.getNodeBreakerView().newBreaker()
.setId("B5")
.setNode1(17)
.setNode2(10)
.setOpen(false)
.add();
// Disconnectors
vl.getNodeBreakerView().newDisconnector()
.setId("D0")
.setNode1(0)
.setNode2(10)
.setOpen(true)
.add();
vl.getNodeBreakerView().newDisconnector()
.setId("D1")
.setNode1(1)
.setNode2(10)
.setOpen(false)
.add();
vl.getNodeBreakerView().newDisconnector()
.setId("D2")
.setNode1(0)
.setNode2(11)
.setOpen(false)
.add();
vl.getNodeBreakerView().newDisconnector()
.setId("D3")
.setNode1(1)
.setNode2(11)
.setOpen(true)
.add();
vl.getNodeBreakerView().newDisconnector()
.setId("D4")
.setNode1(2)
.setNode2(12)
.setOpen(false)
.add();
vl.getNodeBreakerView().newDisconnector()
.setId("D5")
.setNode1(3)
.setNode2(12)
.setOpen(true)
.add();
return network;
}
@Test
public void testNonFictionalClosedBreakers() {
// Predicate to test
Predicate<Switch> predicate = SwitchPredicates.IS_NONFICTIONAL_CLOSED_BREAKER;
// Tests
assertFalse(predicate.test(null));
assertFalse(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("D_BBS11_BBS12")));
assertFalse(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("B1")));
assertFalse(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("B_L1_1")));
assertTrue(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("B5")));
}
@Test
public void testNonFictionalBreakers() {
// Predicate to test
Predicate<Switch> predicate = SwitchPredicates.IS_NONFICTIONAL_BREAKER;
// Tests
assertFalse(predicate.test(null));
assertFalse(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("D_BBS11_BBS12")));
assertFalse(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("B_L1_1")));
assertTrue(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("B5")));
}
@Test
public void testClosedBreakers() {
// Predicate to test
Predicate<Switch> predicate = SwitchPredicates.IS_CLOSED_BREAKER;
// Tests
assertFalse(predicate.test(null));
assertFalse(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("D_BBS11_BBS12")));
assertFalse(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("B1")));
assertTrue(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("B5")));
}
@Test
public void testBreakerOrDisconnector() {
// Predicate to test
Predicate<Switch> predicate = SwitchPredicates.IS_BREAKER_OR_DISCONNECTOR;
// Tests
assertFalse(predicate.test(null));
assertFalse(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("B4")));
assertTrue(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("D_BBS11_BBS12")));
assertTrue(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("B5")));
}
@Test
public void testOpenDisconnector() {
// Predicate to test
Predicate<Switch> predicate = SwitchPredicates.IS_OPEN_DISCONNECTOR;
// Tests
assertFalse(predicate.test(null));
assertFalse(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("B4")));
assertFalse(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("D4")));
assertTrue(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("D5")));
}
@Test
public void testBreakers() {
// Predicate to test
Predicate<Switch> predicate = SwitchPredicates.IS_BREAKER;
// Tests
assertFalse(predicate.test(null));
assertFalse(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("D4")));
assertTrue(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("B3")));
}
@Test
public void testNonFictional() {
// Predicate to test
Predicate<Switch> predicate = SwitchPredicates.IS_NONFICTIONAL;
// Tests
assertFalse(predicate.test(null));
assertFalse(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("B2")));
assertTrue(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("B5")));
}
@Test
public void testOpen() {
// Predicate to test
Predicate<Switch> predicate = SwitchPredicates.IS_OPEN;
// Tests
assertFalse(predicate.test(null));
assertFalse(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("D4")));
assertTrue(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("D5")));
}
@Test
public void testNonNull() {
// Predicate to test
Predicate<Switch> predicate = SwitchPredicates.IS_NON_NULL;
// Tests
assertFalse(predicate.test(null));
assertTrue(predicate.test(network.getVoltageLevel("VL1").getNodeBreakerView().getSwitch("D5")));
}
}