InjectionObservabilityXmlTest.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/.
* SPDX-License-Identifier: MPL-2.0
*/
package com.powsybl.iidm.serde.extensions;
import com.powsybl.commons.PowsyblException;
import com.powsybl.iidm.network.Battery;
import com.powsybl.iidm.network.Generator;
import com.powsybl.iidm.network.Network;
import com.powsybl.iidm.network.extensions.InjectionObservability;
import com.powsybl.iidm.network.impl.extensions.InjectionObservabilityImpl;
import com.powsybl.iidm.network.test.BatteryNetworkFactory;
import com.powsybl.iidm.serde.AbstractIidmSerDeTest;
import com.powsybl.iidm.serde.NetworkSerDe;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import static com.powsybl.iidm.serde.IidmSerDeConstants.CURRENT_IIDM_VERSION;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author Thomas Adam {@literal <tadam at silicom.fr>}
*/
class InjectionObservabilityXmlTest extends AbstractIidmSerDeTest {
@Test
void test() throws IOException {
Network network = BatteryNetworkFactory.create();
Battery bat = network.getBattery("BAT");
assertNotNull(bat);
InjectionObservability<Battery> injectionObservability = new InjectionObservabilityImpl<>(bat, true);
injectionObservability.setQualityP(0.03d, false);
injectionObservability.setQualityQ(0.6d, false);
bat.addExtension(InjectionObservability.class, injectionObservability);
Generator generator = network.getGenerator("GEN");
generator.addExtension(InjectionObservability.class, new InjectionObservabilityImpl<>(generator, false, 0.02d, true, 0.5d, true, 0.0d, true));
Network network2 = allFormatsRoundTripTest(network, "/injectionObservabilityRoundTripRef.xml", CURRENT_IIDM_VERSION);
Battery bat2 = network2.getBattery("BAT");
assertNotNull(bat2);
InjectionObservability <Battery> injectionObservability2 = bat2.getExtension(InjectionObservability.class);
assertNotNull(injectionObservability2);
assertEquals(injectionObservability.isObservable(), injectionObservability2.isObservable());
assertEquals(injectionObservability.getQualityP().getStandardDeviation(), injectionObservability2.getQualityP().getStandardDeviation(), 0.0d);
assertEquals(injectionObservability.getQualityQ().getStandardDeviation(), injectionObservability2.getQualityQ().getStandardDeviation(), 0.0d);
assertEquals(injectionObservability.getQualityP().isRedundant(), injectionObservability2.getQualityP().isRedundant());
assertEquals(injectionObservability.getQualityQ().isRedundant(), injectionObservability2.getQualityQ().isRedundant());
assertEquals(injectionObservability.getQualityV(), injectionObservability2.getQualityV());
assertEquals(injectionObservability.getName(), injectionObservability2.getName());
}
@Test
void invalidTest() {
PowsyblException e = assertThrows(PowsyblException.class, () -> NetworkSerDe.read(getClass().getResourceAsStream(getVersionedNetworkPath("/injectionObservabilityRoundTripRefInvalid.xml", CURRENT_IIDM_VERSION))));
assertEquals("Unknown element name 'qualityZ' in 'injectionObservability'", e.getMessage());
}
}