UcteRegulationTest.java
/**
* Copyright (c) 2017, 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.ucte.network;
import com.powsybl.commons.report.ReportNode;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author Mathieu Bague {@literal <mathieu.bague at rte-france.com>}
*/
class UcteRegulationTest {
private UcteElementId createElementId() {
UcteNodeCode node1 = new UcteNodeCode(UcteCountryCode.FR, "AAAAA", UcteVoltageLevelCode.VL_380, 'A');
UcteNodeCode node2 = new UcteNodeCode(UcteCountryCode.BE, "BBBBB", UcteVoltageLevelCode.VL_220, 'B');
return new UcteElementId(node1, node2, '1');
}
@Test
void test() {
UcteElementId id = createElementId();
UctePhaseRegulation phaseRegulation = new UctePhaseRegulation(1.0, 2, 3, 4.0);
UcteAngleRegulation angleRegulation = new UcteAngleRegulation(1.0, 2.0, 3, 4, 5.0, UcteAngleRegulationType.ASYM);
UcteRegulation regulation = new UcteRegulation(id, phaseRegulation, angleRegulation);
assertEquals(id, regulation.getTransfoId());
assertEquals(phaseRegulation, regulation.getPhaseRegulation());
regulation.setPhaseRegulation(null);
assertNull(regulation.getPhaseRegulation());
assertEquals(angleRegulation, regulation.getAngleRegulation());
regulation.setAngleRegulation(null);
assertNull(regulation.getAngleRegulation());
}
@Test
void testFix() {
UcteElementId id = createElementId();
UcteRegulation regulation = new UcteRegulation(id, null, null);
UctePhaseRegulation invalidPhaseRegulation1 = new UctePhaseRegulation(0.0, 1, 1, -10);
UctePhaseRegulation invalidPhaseRegulation2 = new UctePhaseRegulation(Double.NaN, null, null, Double.NaN);
UctePhaseRegulation invalidPhaseRegulation3 = new UctePhaseRegulation(Double.NaN, 0, null, Double.NaN);
UctePhaseRegulation invalidPhaseRegulation4 = new UctePhaseRegulation(Double.NaN, 1, null, Double.NaN);
UctePhaseRegulation invalidPhaseRegulation5 = new UctePhaseRegulation(Double.NaN, 1, 0, Double.NaN);
regulation.setPhaseRegulation(invalidPhaseRegulation1);
regulation.fix(ReportNode.NO_OP);
assertNotNull(regulation.getPhaseRegulation());
assertTrue(Double.isNaN(invalidPhaseRegulation1.getU()));
testFix(regulation, invalidPhaseRegulation2);
testFix(regulation, invalidPhaseRegulation3);
testFix(regulation, invalidPhaseRegulation4);
testFix(regulation, invalidPhaseRegulation5);
UcteAngleRegulation invalidAngleRegulation1 = new UcteAngleRegulation(0.0, 0.0, 1, 1, 0.0, null);
UcteAngleRegulation invalidAngleRegulation2 = new UcteAngleRegulation(Double.NaN, Double.NaN, null, null, Double.NaN, null);
UcteAngleRegulation invalidAngleRegulation3 = new UcteAngleRegulation(Double.NaN, Double.NaN, 0, null, Double.NaN, null);
UcteAngleRegulation invalidAngleRegulation4 = new UcteAngleRegulation(Double.NaN, Double.NaN, 1, null, Double.NaN, null);
UcteAngleRegulation invalidAngleRegulation5 = new UcteAngleRegulation(Double.NaN, Double.NaN, 1, 0, Double.NaN, null);
UcteAngleRegulation invalidAngleRegulation6 = new UcteAngleRegulation(Double.NaN, Double.NaN, 1, 0, Double.NaN, null);
UcteAngleRegulation invalidAngleRegulation7 = new UcteAngleRegulation(0.0, Double.NaN, 1, 0, Double.NaN, null);
regulation.setAngleRegulation(invalidAngleRegulation1);
regulation.fix(ReportNode.NO_OP);
assertNotNull(regulation.getAngleRegulation());
assertEquals(UcteAngleRegulationType.ASYM, invalidAngleRegulation1.getType());
testFix(regulation, invalidAngleRegulation2);
testFix(regulation, invalidAngleRegulation3);
testFix(regulation, invalidAngleRegulation4);
testFix(regulation, invalidAngleRegulation5);
testFix(regulation, invalidAngleRegulation6);
testFix(regulation, invalidAngleRegulation7);
}
private void testFix(UcteRegulation regulation, UctePhaseRegulation phaseRegulation) {
regulation.setPhaseRegulation(phaseRegulation);
regulation.fix(ReportNode.NO_OP);
assertNull(regulation.getPhaseRegulation());
}
private void testFix(UcteRegulation regulation, UcteAngleRegulation angleRegulation) {
regulation.setAngleRegulation(angleRegulation);
regulation.fix(ReportNode.NO_OP);
assertNull(regulation.getAngleRegulation());
}
}