IidmPstHelperTest.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.openrao.data.crac.io.commons.iidm;
import com.powsybl.iidm.network.Network;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author Peter Mitri {@literal <peter.mitri at rte-france.com>}
*/
class IidmPstHelperTest {
private static final double DOUBLE_TOLERANCE = 1e-3;
private Network network;
@BeforeEach
public void setUp() {
network = Network.read("TestCase_severalVoltageLevels_Xnodes.uct", getClass().getResourceAsStream("/TestCase_severalVoltageLevels_Xnodes.uct"));
}
@Test
void testInvalidPst() {
IidmPstHelper pstHelper = new IidmPstHelper("BBE1AA1 BBE2AA1 1", network);
assertFalse(pstHelper.isValid());
assertTrue(pstHelper.getInvalidReason().contains("was not found in network"));
}
@Test
void testInvalidPst2() {
IidmPstHelper pstHelper = new IidmPstHelper("FFR3AA1 FFR3AA2 1", network);
assertFalse(pstHelper.isValid());
assertTrue(pstHelper.getInvalidReason().contains("does not have a phase tap changer"));
}
@Test
void testValidPst() {
IidmPstHelper pstHelper = new IidmPstHelper("BBE2AA1 BBE3AA1 1", network);
assertTrue(pstHelper.isValid());
assertNull(pstHelper.getInvalidReason());
assertTrue(pstHelper.isInvertedInNetwork());
assertEquals(-16, pstHelper.getLowTapPosition());
assertEquals(16, pstHelper.getHighTapPosition());
assertEquals(0, pstHelper.getInitialTap());
assertEquals(-5, pstHelper.normalizeTap(-5, IidmPstHelper.TapConvention.CENTERED_ON_ZERO));
assertEquals(9, pstHelper.normalizeTap(9, IidmPstHelper.TapConvention.CENTERED_ON_ZERO));
assertEquals(-16, pstHelper.normalizeTap(1, IidmPstHelper.TapConvention.STARTS_AT_ONE));
assertEquals(16, pstHelper.normalizeTap(33, IidmPstHelper.TapConvention.STARTS_AT_ONE));
assertEquals(0, pstHelper.normalizeTap(17, IidmPstHelper.TapConvention.STARTS_AT_ONE));
assertEquals(3, pstHelper.normalizeTap(20, IidmPstHelper.TapConvention.STARTS_AT_ONE));
Map<Integer, Double> conversionMap = pstHelper.getTapToAngleConversionMap();
assertEquals(33, conversionMap.size());
assertEquals(-6.228, conversionMap.get(-16), DOUBLE_TOLERANCE);
assertEquals(-5.839, conversionMap.get(-15), DOUBLE_TOLERANCE);
assertEquals(-5.450, conversionMap.get(-14), DOUBLE_TOLERANCE);
assertEquals(-5.062, conversionMap.get(-13), DOUBLE_TOLERANCE);
assertEquals(-4.673, conversionMap.get(-12), DOUBLE_TOLERANCE);
assertEquals(-4.284, conversionMap.get(-11), DOUBLE_TOLERANCE);
assertEquals(-3.895, conversionMap.get(-10), DOUBLE_TOLERANCE);
assertEquals(-3.505, conversionMap.get(-9), DOUBLE_TOLERANCE);
assertEquals(-3.116, conversionMap.get(-8), DOUBLE_TOLERANCE);
assertEquals(-2.727, conversionMap.get(-7), DOUBLE_TOLERANCE);
assertEquals(-2.337, conversionMap.get(-6), DOUBLE_TOLERANCE);
assertEquals(-1.948, conversionMap.get(-5), DOUBLE_TOLERANCE);
assertEquals(-1.558, conversionMap.get(-4), DOUBLE_TOLERANCE);
assertEquals(-1.169, conversionMap.get(-3), DOUBLE_TOLERANCE);
assertEquals(-0.779, conversionMap.get(-2), DOUBLE_TOLERANCE);
assertEquals(-0.390, conversionMap.get(-1), DOUBLE_TOLERANCE);
assertEquals(0.000, conversionMap.get(0), DOUBLE_TOLERANCE);
assertEquals(0.390, conversionMap.get(1), DOUBLE_TOLERANCE);
assertEquals(0.779, conversionMap.get(2), DOUBLE_TOLERANCE);
assertEquals(1.169, conversionMap.get(3), DOUBLE_TOLERANCE);
assertEquals(1.558, conversionMap.get(4), DOUBLE_TOLERANCE);
assertEquals(1.948, conversionMap.get(5), DOUBLE_TOLERANCE);
assertEquals(2.337, conversionMap.get(6), DOUBLE_TOLERANCE);
assertEquals(2.727, conversionMap.get(7), DOUBLE_TOLERANCE);
assertEquals(3.116, conversionMap.get(8), DOUBLE_TOLERANCE);
assertEquals(3.505, conversionMap.get(9), DOUBLE_TOLERANCE);
assertEquals(3.895, conversionMap.get(10), DOUBLE_TOLERANCE);
assertEquals(4.284, conversionMap.get(11), DOUBLE_TOLERANCE);
assertEquals(4.673, conversionMap.get(12), DOUBLE_TOLERANCE);
assertEquals(5.062, conversionMap.get(13), DOUBLE_TOLERANCE);
assertEquals(5.450, conversionMap.get(14), DOUBLE_TOLERANCE);
assertEquals(5.839, conversionMap.get(15), DOUBLE_TOLERANCE);
assertEquals(6.228, conversionMap.get(16), DOUBLE_TOLERANCE);
}
}