JsonCseCracCreationParametersTest.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.cse.parameters;
import com.powsybl.openrao.commons.OpenRaoException;
import com.powsybl.openrao.data.crac.api.parameters.CracCreationParameters;
import com.powsybl.openrao.data.crac.api.parameters.JsonCracCreationParameters;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.List;
import java.util.Set;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author Baptiste Seguinot {@literal <baptiste.seguinot at rte-france.com>}
*/
class JsonCseCracCreationParametersTest {
private void checkBusBarChangeSwitchesContent(CseCracCreationParameters parameters, String remedialActionId, Set<SwitchPairId> switchPairs) {
assertNotNull(parameters.getBusBarChangeSwitches(remedialActionId));
assertEquals(remedialActionId, parameters.getBusBarChangeSwitches(remedialActionId).getRemedialActionId());
assertEquals(switchPairs, parameters.getBusBarChangeSwitches(remedialActionId).getSwitchPairs());
}
@Test
void roundTripTest() {
// prepare parameters to export
CracCreationParameters exportedParameters = new CracCreationParameters();
CseCracCreationParameters exportedCseParameters = new CseCracCreationParameters();
exportedCseParameters.setRangeActionGroupsAsString(List.of("rangeAction3 + rangeAction4", "hvdc1 + hvdc2"));
exportedCseParameters.setBusBarChangeSwitchesSet(Set.of(
new BusBarChangeSwitches("ra1", Set.of(new SwitchPairId("s1", "s2"), new SwitchPairId("s3", "s4"))),
new BusBarChangeSwitches("ra2", Set.of()),
new BusBarChangeSwitches("ra3", Set.of(new SwitchPairId("s1", "s2")))
));
exportedParameters.addExtension(CseCracCreationParameters.class, exportedCseParameters);
// roundTrip
ByteArrayOutputStream os = new ByteArrayOutputStream();
JsonCracCreationParameters.write(exportedParameters, os);
ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray());
CracCreationParameters importedParameters = JsonCracCreationParameters.read(is);
// test re-imported parameters
CseCracCreationParameters cseCracCreationParameters = importedParameters.getExtension(CseCracCreationParameters.class);
assertNotNull(cseCracCreationParameters);
assertEquals(2, cseCracCreationParameters.getRangeActionGroupsAsString().size());
assertEquals("rangeAction3 + rangeAction4", cseCracCreationParameters.getRangeActionGroupsAsString().get(0));
assertEquals("hvdc1 + hvdc2", cseCracCreationParameters.getRangeActionGroupsAsString().get(1));
assertEquals(3, cseCracCreationParameters.getBusBarChangeSwitchesSet().size());
checkBusBarChangeSwitchesContent(cseCracCreationParameters, "ra1", Set.of(new SwitchPairId("s1", "s2"), new SwitchPairId("s3", "s4")));
checkBusBarChangeSwitchesContent(cseCracCreationParameters, "ra2", Set.of());
checkBusBarChangeSwitchesContent(cseCracCreationParameters, "ra3", Set.of(new SwitchPairId("s1", "s2")));
}
@Test
void importOkTest() {
CracCreationParameters importedParameters = JsonCracCreationParameters.read(getClass().getResourceAsStream("/parameters/cse-crac-creation-parameters-ok.json"));
CseCracCreationParameters cseCracCreationParameters = importedParameters.getExtension(CseCracCreationParameters.class);
assertNotNull(cseCracCreationParameters);
assertEquals(2, cseCracCreationParameters.getRangeActionGroupsAsString().size());
assertEquals("rangeAction3 + rangeAction4", cseCracCreationParameters.getRangeActionGroupsAsString().get(0));
assertEquals("hvdc1 + hvdc2", cseCracCreationParameters.getRangeActionGroupsAsString().get(1));
assertEquals(3, cseCracCreationParameters.getBusBarChangeSwitchesSet().size());
checkBusBarChangeSwitchesContent(cseCracCreationParameters, "remedialAction1", Set.of(new SwitchPairId("switch1", "switch2"), new SwitchPairId("switch3", "switch4")));
checkBusBarChangeSwitchesContent(cseCracCreationParameters, "remedialAction2", Set.of(new SwitchPairId("switch5", "switch6")));
checkBusBarChangeSwitchesContent(cseCracCreationParameters, "remedialAction3", Set.of());
}
@ParameterizedTest
@ValueSource(strings = {"nok", "nok2", "nok3", "nok4", "nok5"})
void importNokTest(String source) {
InputStream inputStream = getClass().getResourceAsStream("/parameters/cse-crac-creation-parameters-" + source + ".json");
assertThrows(OpenRaoException.class, () -> JsonCracCreationParameters.read(inputStream));
}
}