JsonDynaFlowParametersSerializerTest.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/.
*/
package com.powsybl.dynaflow.json;
import com.powsybl.commons.config.InMemoryPlatformConfig;
import com.powsybl.commons.test.AbstractSerDeTest;
import com.powsybl.dynaflow.DynaFlowConstants;
import com.powsybl.dynaflow.DynaFlowParameters;
import com.powsybl.loadflow.LoadFlowParameters;
import com.powsybl.loadflow.json.JsonLoadFlowParameters;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import java.util.*;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;
/**
*
* @author Guillaume Pernin {@literal <guillaume.pernin at rte-france.com>}
*/
class JsonDynaFlowParametersSerializerTest extends AbstractSerDeTest {
@Test
void testDeserialize() {
double expectedDsoVoltageLevelValue = 987.6;
String expectedSettingPath = "path/to/settingFile";
String expectedAssemblingPath = "path/to/assemblingFile";
double expectedStartTime = 0.;
double expectedStopTime = 100.;
double expectedPrecision = 0.;
Set<DynaFlowConstants.OutputTypes> expectedChosenOutputs = Set.of(DynaFlowConstants.OutputTypes.STEADYSTATE, DynaFlowConstants.OutputTypes.TIMELINE);
double expectedTimeStep = 2.6;
LoadFlowParameters lfParameters = LoadFlowParameters.load();
JsonLoadFlowParameters.update(lfParameters, getClass().getResourceAsStream("/config.json"));
DynaFlowParameters dynaFlowParameters = lfParameters.getExtension(DynaFlowParameters.class);
assertNotNull(dynaFlowParameters);
assertTrue(dynaFlowParameters.getSvcRegulationOn());
assertFalse(dynaFlowParameters.getShuntRegulationOn());
assertTrue(dynaFlowParameters.getAutomaticSlackBusOn());
assertEquals(expectedDsoVoltageLevelValue, dynaFlowParameters.getDsoVoltageLevel(), 0);
assertEquals(DynaFlowConstants.ActivePowerCompensation.P, dynaFlowParameters.getActivePowerCompensation());
assertEquals(expectedSettingPath, dynaFlowParameters.getSettingPath());
assertEquals(expectedAssemblingPath, dynaFlowParameters.getAssemblingPath());
assertEquals(expectedStartTime, dynaFlowParameters.getStartTime(), 0.1d);
assertEquals(expectedStopTime, dynaFlowParameters.getStopTime(), 0.1d);
assertEquals(expectedPrecision, dynaFlowParameters.getPrecision(), 0.1d);
assertThat(dynaFlowParameters.getChosenOutputs()).containsExactlyInAnyOrderElementsOf(expectedChosenOutputs);
assertEquals(expectedTimeStep, dynaFlowParameters.getTimeStep(), 0.1d);
assertEquals(DynaFlowConstants.StartingPointMode.WARM, dynaFlowParameters.getStartingPointMode());
assertFalse(dynaFlowParameters.isMergeLoads());
assertTrue(lfParameters.isTransformerVoltageControlOn());
assertFalse(lfParameters.isPhaseShifterRegulationOn());
}
@Test
void roundTripParameters() throws IOException {
InMemoryPlatformConfig platformConfig = new InMemoryPlatformConfig(fileSystem);
LoadFlowParameters parameters = LoadFlowParameters.load(platformConfig);
parameters.setUseReactiveLimits(false);
parameters.setPhaseShifterRegulationOn(false);
DynaFlowParameters params = new DynaFlowParameters()
.setSvcRegulationOn(true)
.setShuntRegulationOn(false)
.setAutomaticSlackBusOn(true)
.setDsoVoltageLevel(54.23)
.setActivePowerCompensation(DynaFlowConstants.ActivePowerCompensation.P)
.setSettingPath("path/to/settingFile")
.setAssemblingPath("path/to/assemblingFile")
.setStartTime(0.)
.setStopTime(100.)
.setPrecision(0.)
.setChosenOutputs(Set.of(DynaFlowConstants.OutputTypes.STEADYSTATE))
.setTimeStep(2.6)
.setStartingPointMode(DynaFlowConstants.StartingPointMode.WARM)
.setMergeLoads(false);
parameters.addExtension(DynaFlowParameters.class, params);
roundTripTest(parameters, JsonLoadFlowParameters::write,
JsonLoadFlowParameters::read, "/dynaflow_parameters_set_serialization.json");
}
@Test
void serializeWithDefaultDynaflowParameters() throws IOException {
InMemoryPlatformConfig platformConfig = new InMemoryPlatformConfig(fileSystem);
LoadFlowParameters parameters = LoadFlowParameters.load(platformConfig);
roundTripTest(parameters, JsonLoadFlowParameters::write,
JsonLoadFlowParameters::read, "/dynaflow_default_serialization.json");
}
}