AbstractInjectionObservabilityTest.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.network.tck.extensions;
import com.powsybl.iidm.network.Battery;
import com.powsybl.iidm.network.Network;
import com.powsybl.iidm.network.extensions.InjectionObservability;
import com.powsybl.iidm.network.extensions.InjectionObservabilityAdder;
import com.powsybl.iidm.network.test.BatteryNetworkFactory;
import com.powsybl.iidm.network.test.EurostagTutorialExample1Factory;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author Thomas Adam {@literal <tadam at silicom.fr>}
*/
public abstract class AbstractInjectionObservabilityTest {
@Test
public void test() {
Network network = BatteryNetworkFactory.create();
Battery bat = network.getBattery("BAT");
assertNotNull(bat);
bat.newExtension(InjectionObservabilityAdder.class)
.withObservable(true)
.withStandardDeviationP(0.02d)
.withRedundantP(true)
.withStandardDeviationQ(0.5d)
.withRedundantQ(true)
.withStandardDeviationV(0.0d)
.withRedundantV(true)
.add();
InjectionObservability<Battery> injectionObservability = bat.getExtension(InjectionObservability.class);
assertEquals("injectionObservability", injectionObservability.getName());
assertEquals("BAT", injectionObservability.getExtendable().getId());
assertTrue(injectionObservability.isObservable());
injectionObservability.setObservable(false);
assertFalse(injectionObservability.isObservable());
assertEquals(0.02d, injectionObservability.getQualityP().getStandardDeviation(), 0d);
injectionObservability.getQualityP().setStandardDeviation(0.03d);
assertEquals(0.03d, injectionObservability.getQualityP().getStandardDeviation(), 0d);
assertTrue(injectionObservability.getQualityP().isRedundant().isPresent());
assertTrue(injectionObservability.getQualityP().isRedundant().get());
injectionObservability.getQualityP().setRedundant(false);
assertTrue(injectionObservability.getQualityP().isRedundant().isPresent());
assertFalse(injectionObservability.getQualityP().isRedundant().get());
assertEquals(0.5d, injectionObservability.getQualityQ().getStandardDeviation(), 0d);
injectionObservability.getQualityQ().setStandardDeviation(0.6d);
assertEquals(0.6d, injectionObservability.getQualityQ().getStandardDeviation(), 0d);
assertTrue(injectionObservability.getQualityQ().isRedundant().isPresent());
assertTrue(injectionObservability.getQualityQ().isRedundant().get());
injectionObservability.getQualityQ().setRedundant(false);
assertTrue(injectionObservability.getQualityQ().isRedundant().isPresent());
assertFalse(injectionObservability.getQualityQ().isRedundant().get());
assertEquals(0.0d, injectionObservability.getQualityV().getStandardDeviation(), 0d);
injectionObservability.getQualityV().setStandardDeviation(0.01d);
assertEquals(0.01d, injectionObservability.getQualityV().getStandardDeviation(), 0d);
assertTrue(injectionObservability.getQualityV().isRedundant().isPresent());
assertTrue(injectionObservability.getQualityV().isRedundant().get());
injectionObservability.getQualityV().setRedundant(false);
assertTrue(injectionObservability.getQualityV().isRedundant().isPresent());
assertFalse(injectionObservability.getQualityV().isRedundant().get());
}
@Test
public void testMissingQuality() {
Network network = BatteryNetworkFactory.create();
Battery bat = network.getBattery("BAT");
assertNotNull(bat);
bat.newExtension(InjectionObservabilityAdder.class)
.add();
InjectionObservability<Battery> injectionObservability = bat.getExtension(InjectionObservability.class);
assertEquals("injectionObservability", injectionObservability.getName());
assertEquals("BAT", injectionObservability.getExtendable().getId());
assertNull(injectionObservability.getQualityP());
assertNull(injectionObservability.getQualityQ());
assertNull(injectionObservability.getQualityV());
assertSame(injectionObservability, injectionObservability.setQualityP(0.03d));
assertEquals(0.03d, injectionObservability.getQualityP().getStandardDeviation(), 0d);
assertSame(injectionObservability, injectionObservability.setQualityP(0.04d));
assertEquals(0.04d, injectionObservability.getQualityP().getStandardDeviation(), 0d);
assertFalse(injectionObservability.getQualityP().isRedundant().isPresent());
injectionObservability.getQualityP().setRedundant(true);
assertTrue(injectionObservability.getQualityP().isRedundant().isPresent());
assertTrue(injectionObservability.getQualityP().isRedundant().get());
assertSame(injectionObservability, injectionObservability.setQualityQ(0.6d));
assertEquals(0.6d, injectionObservability.getQualityQ().getStandardDeviation(), 0d);
assertSame(injectionObservability, injectionObservability.setQualityQ(0.61d));
assertEquals(0.61d, injectionObservability.getQualityQ().getStandardDeviation(), 0d);
assertFalse(injectionObservability.getQualityQ().isRedundant().isPresent());
injectionObservability.getQualityQ().setRedundant(true);
assertTrue(injectionObservability.getQualityQ().isRedundant().isPresent());
assertTrue(injectionObservability.getQualityQ().isRedundant().get());
assertSame(injectionObservability, injectionObservability.setQualityV(0.01d));
assertEquals(0.01d, injectionObservability.getQualityV().getStandardDeviation(), 0d);
assertSame(injectionObservability, injectionObservability.setQualityV(0.02d));
assertEquals(0.02d, injectionObservability.getQualityV().getStandardDeviation(), 0d);
assertFalse(injectionObservability.getQualityV().isRedundant().isPresent());
injectionObservability.getQualityV().setRedundant(true);
assertTrue(injectionObservability.getQualityV().isRedundant().isPresent());
assertTrue(injectionObservability.getQualityV().isRedundant().get());
}
@Test
public void testRedundancy() {
Network network = EurostagTutorialExample1Factory.create();
InjectionObservabilityAdder adder = network.getLoad("LOAD").newExtension(InjectionObservabilityAdder.class);
adder.withStandardDeviationV(0.5)
.withRedundantV(false)
.withRedundantP(true)
.withStandardDeviationQ(0.2)
.add();
InjectionObservability injectionObservability = network.getLoad("LOAD").getExtension(InjectionObservability.class);
assertNull(injectionObservability.getQualityP());
assertFalse((Boolean) injectionObservability.getQualityV().isRedundant().get());
assertEquals(0.5, injectionObservability.getQualityV().getStandardDeviation(), 0.01);
assertFalse(injectionObservability.getQualityQ().isRedundant().isPresent());
assertEquals(0.2, injectionObservability.getQualityQ().getStandardDeviation(), 0.01);
}
}