EqualsActionTest.java
/*
* Copyright (c) 2024, 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.action;
import com.google.common.testing.EqualsTester;
import com.powsybl.iidm.network.HvdcLine;
import com.powsybl.iidm.network.PhaseTapChanger;
import com.powsybl.iidm.network.StaticVarCompensator;
import com.powsybl.iidm.network.ThreeSides;
import org.junit.jupiter.api.Test;
import java.util.List;
import static com.powsybl.action.PercentChangeLoadAction.QModificationStrategy.CONSTANT_PQ_RATIO;
import static com.powsybl.action.PercentChangeLoadAction.QModificationStrategy.CONSTANT_Q;
/**
* @author Pauline JEAN-MARIE {@literal <pauline.jean-marie at artelys.com>}
*/
class EqualsActionTest {
@Test
void switchAction() {
SwitchAction action1 = new SwitchActionBuilder().withId("id")
.withNetworkElementId("neId")
.withOpen(true)
.build();
SwitchAction action2 = new SwitchActionBuilder().withId("id")
.withNetworkElementId("neId")
.withOpen(true)
.build();
SwitchAction action3 = new SwitchActionBuilder().withId("id2")
.withNetworkElementId("neId")
.withOpen(true)
.build();
SwitchAction action4 = new SwitchActionBuilder().withId("id")
.withNetworkElementId("neId2")
.withOpen(true)
.build();
SwitchAction action5 = new SwitchActionBuilder().withId("id")
.withNetworkElementId("neId")
.withOpen(false)
.build();
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.testEquals();
}
@Test
void terminalConnectionAction() {
Action action1 = new TerminalsConnectionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withOpen(true)
.withSide(ThreeSides.ONE)
.build();
TerminalsConnectionAction action2 = new TerminalsConnectionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withOpen(true)
.withSide(ThreeSides.ONE)
.build();
Action action3 = new TerminalsConnectionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withOpen(true)
.build();
Action action4 = new SwitchActionBuilder().withId("id")
.withNetworkElementId("neId")
.withOpen(true)
.build();
TerminalsConnectionAction action5 = new TerminalsConnectionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withOpen(true)
.withSide(ThreeSides.THREE)
.build();
Action action6 = new TerminalsConnectionActionBuilder().withId("id")
.withNetworkElementId("neId2")
.withOpen(true)
.withSide(ThreeSides.ONE)
.build();
Action action7 = new TerminalsConnectionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withOpen(false)
.withSide(ThreeSides.ONE)
.build();
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.addEqualityGroup(action6)
.addEqualityGroup(action7)
.testEquals();
}
@Test
void dangingLineAction() {
DanglingLineAction action1 = new DanglingLineActionBuilder().withId("id")
.withNetworkElementId("neId")
.withActivePowerValue(100)
.withRelativeValue(false)
.build();
DanglingLineAction action2 = new DanglingLineActionBuilder().withId("id")
.withDanglingLineId("neId")
.withActivePowerValue(100)
.withRelativeValue(false)
.build();
DanglingLineAction action3 = new DanglingLineActionBuilder().withId("id2")
.withNetworkElementId("neId")
.withActivePowerValue(100)
.withRelativeValue(false)
.build();
DanglingLineAction action4 = new DanglingLineActionBuilder().withId("id")
.withNetworkElementId("neId")
.withActivePowerValue(100)
.withRelativeValue(true)
.build();
DanglingLineAction action5 = new DanglingLineActionBuilder().withId("id")
.withNetworkElementId("neId")
.withReactivePowerValue(100)
.withRelativeValue(false)
.build();
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.testEquals();
}
@Test
void loadAction() {
Action action1 = new LoadActionBuilder().withId("id")
.withNetworkElementId("neId")
.withActivePowerValue(100)
.withRelativeValue(false)
.build();
LoadAction action2 = new LoadActionBuilder().withId("id")
.withLoadId("neId")
.withActivePowerValue(100)
.withRelativeValue(false)
.build();
Action action3 = new LoadActionBuilder().withId("id")
.withNetworkElementId("neId")
.withActivePowerValue(101)
.withRelativeValue(false)
.build();
Action action4 = new DanglingLineActionBuilder().withId("id")
.withNetworkElementId("neId")
.withActivePowerValue(100)
.withRelativeValue(false)
.build();
LoadAction action5 = new LoadActionBuilder().withId("id2")
.withNetworkElementId("neId")
.withActivePowerValue(100)
.withRelativeValue(false)
.build();
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.testEquals();
}
@Test
void pctLoadAction() {
PercentChangeLoadAction action1 = new PercentChangeLoadAction("id", "load", -2d, CONSTANT_Q);
PercentChangeLoadAction action2 = new PercentChangeLoadAction("id", "load", -2d, CONSTANT_Q);
PercentChangeLoadAction action3 = new PercentChangeLoadAction("id", "load", -2d, CONSTANT_PQ_RATIO);
PercentChangeLoadAction action4 = new PercentChangeLoadAction("id", "load", -3d, CONSTANT_Q);
PercentChangeLoadAction action5 = new PercentChangeLoadAction("id2", "load", -2d, CONSTANT_Q);
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.testEquals();
}
@Test
void shuntCompensatorAction() {
ShuntCompensatorPositionAction action1 = new ShuntCompensatorPositionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withSectionCount(10)
.build();
ShuntCompensatorPositionAction action2 = new ShuntCompensatorPositionActionBuilder().withId("id")
.withShuntCompensatorId("neId")
.withSectionCount(10)
.build();
ShuntCompensatorPositionAction action3 = new ShuntCompensatorPositionActionBuilder().withId("id2")
.withNetworkElementId("neId")
.withSectionCount(11)
.build();
ShuntCompensatorPositionAction action4 = new ShuntCompensatorPositionActionBuilder().withId("id")
.withNetworkElementId("neId2")
.withSectionCount(10)
.build();
ShuntCompensatorPositionAction action5 = new ShuntCompensatorPositionActionBuilder().withId("id2")
.withNetworkElementId("neId")
.withSectionCount(10)
.build();
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.testEquals();
}
@Test
void staticVarCompensatorAction() {
Action action1 = new StaticVarCompensatorActionBuilder().withId("id")
.withNetworkElementId("neId")
.withReactivePowerSetpoint(10.)
.withVoltageSetpoint(5.)
.withRegulationMode(StaticVarCompensator.RegulationMode.VOLTAGE)
.build();
StaticVarCompensatorAction action2 = new StaticVarCompensatorActionBuilder().withId("id")
.withStaticVarCompensatorId("neId")
.withReactivePowerSetpoint(10.)
.withVoltageSetpoint(5.)
.withRegulationMode(StaticVarCompensator.RegulationMode.VOLTAGE)
.build();
Action action3 = new StaticVarCompensatorActionBuilder().withId("id")
.withNetworkElementId("neId")
.withReactivePowerSetpoint(10.)
.withRegulationMode(StaticVarCompensator.RegulationMode.VOLTAGE)
.build();
Action action4 = new StaticVarCompensatorActionBuilder().withId("id")
.withNetworkElementId("neId")
.withReactivePowerSetpoint(10.)
.withVoltageSetpoint(5.)
.build();
StaticVarCompensatorAction action5 = new StaticVarCompensatorActionBuilder().withId("id")
.withNetworkElementId("neId")
.withVoltageSetpoint(5.)
.withRegulationMode(StaticVarCompensator.RegulationMode.VOLTAGE)
.build();
StaticVarCompensatorAction action6 = new StaticVarCompensatorActionBuilder().withId("id")
.withStaticVarCompensatorId("neId2")
.withReactivePowerSetpoint(10.)
.withVoltageSetpoint(5.)
.withRegulationMode(StaticVarCompensator.RegulationMode.VOLTAGE)
.build();
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.addEqualityGroup(action6)
.testEquals();
}
@Test
void phaseTapChangerTapPositionAction() {
PhaseTapChangerTapPositionAction action1 = new PhaseTapChangerTapPositionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withTapPosition(2)
.withRelativeValue(true)
.build();
PhaseTapChangerTapPositionAction action2 = new PhaseTapChangerTapPositionActionBuilder().withId("id")
.withTransformerId("neId")
.withTapPosition(2)
.withRelativeValue(true)
.build();
PhaseTapChangerTapPositionAction action3 = new PhaseTapChangerTapPositionActionBuilder().withId("id2")
.withNetworkElementId("neId")
.withTapPosition(2)
.withRelativeValue(true)
.withSide(ThreeSides.ONE)
.build();
PhaseTapChangerTapPositionAction action4 = new PhaseTapChangerTapPositionActionBuilder().withId("id")
.withNetworkElementId("neId2")
.withTapPosition(2)
.withRelativeValue(true)
.withRelativeValue(false)
.build();
PhaseTapChangerTapPositionAction action5 = new PhaseTapChangerTapPositionActionBuilder().withId("id2")
.withNetworkElementId("neId")
.withRelativeValue(true)
.withTapPosition(3)
.build();
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.testEquals();
}
@Test
void phaseTapChangerRegulationAction() {
Action action1 = new PhaseTapChangerRegulationActionBuilder().withId("id")
.withNetworkElementId("neId")
.withRegulationValue(2.)
.withRegulating(true)
.build();
PhaseTapChangerRegulationAction action2 = new PhaseTapChangerRegulationActionBuilder().withId("id")
.withTransformerId("neId")
.withRegulationValue(2.)
.withRegulating(true)
.build();
Action action3 = new PhaseTapChangerRegulationActionBuilder().withId("id")
.withNetworkElementId("neId")
.withRegulationValue(2.)
.withSide(ThreeSides.ONE)
.build();
Action action4 = new PhaseTapChangerTapPositionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withTapPosition(2)
.withRelativeValue(false)
.build();
PhaseTapChangerRegulationAction action5 = new PhaseTapChangerRegulationActionBuilder().withId("id")
.withNetworkElementId("neId")
.withRegulationValue(2.)
.withRegulating(true)
.withRegulationMode(PhaseTapChanger.RegulationMode.CURRENT_LIMITER)
.build();
PhaseTapChangerRegulationAction action6 = new PhaseTapChangerRegulationActionBuilder().withId("id")
.withNetworkElementId("neId")
.withRegulationValue(2.)
.build();
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.addEqualityGroup(action6)
.testEquals();
}
@Test
void ratioTapChangerRegulationAction() {
Action action1 = new RatioTapChangerRegulationActionBuilder().withId("id")
.withNetworkElementId("neId")
.withTargetV(2.)
.build();
RatioTapChangerRegulationAction action2 = new RatioTapChangerRegulationActionBuilder().withId("id")
.withTransformerId("neId")
.withTargetV(2.)
.build();
Action action3 = new RatioTapChangerRegulationActionBuilder().withId("id")
.withNetworkElementId("neId")
.withTargetV(2.)
.withSide(ThreeSides.ONE)
.build();
Action action4 = new PhaseTapChangerRegulationActionBuilder().withId("id")
.withNetworkElementId("neId")
.withRegulationValue(2.)
.build();
RatioTapChangerRegulationAction action5 = new RatioTapChangerRegulationActionBuilder().withId("id")
.withNetworkElementId("neId")
.withTargetV(2.)
.withRegulating(true)
.build();
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.testEquals();
}
@Test
void ratioTapChangerTapPositionAction() {
Action action1 = new RatioTapChangerTapPositionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withTapPosition(2)
.withRelativeValue(false)
.build();
RatioTapChangerTapPositionAction action2 = new RatioTapChangerTapPositionActionBuilder().withId("id")
.withTransformerId("neId")
.withTapPosition(2)
.withRelativeValue(false)
.build();
Action action3 = new RatioTapChangerTapPositionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withTapPosition(2)
.withRelativeValue(false)
.withSide(ThreeSides.ONE)
.build();
Action action4 = new PhaseTapChangerTapPositionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withTapPosition(2)
.withRelativeValue(false)
.build();
RatioTapChangerTapPositionAction action5 = new RatioTapChangerTapPositionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withTapPosition(2)
.withRelativeValue(true)
.build();
RatioTapChangerTapPositionAction action6 = new RatioTapChangerTapPositionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withTapPosition(2)
.withRelativeValue(false)
.withTapPosition(0)
.build();
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.addEqualityGroup(action6)
.testEquals();
}
@Test
void generatorAction() {
GeneratorAction action1 = new GeneratorActionBuilder().withId("id")
.withNetworkElementId("neId")
.withActivePowerValue(100)
.withActivePowerRelativeValue(false)
.withTargetQ(50)
.build();
GeneratorAction action2 = new GeneratorActionBuilder().withId("id")
.withGeneratorId("neId")
.withActivePowerValue(100)
.withActivePowerRelativeValue(false)
.withTargetQ(50)
.build();
GeneratorAction action3 = new GeneratorActionBuilder().withId("id2")
.withNetworkElementId("neId")
.withActivePowerValue(100)
.withActivePowerRelativeValue(true)
.withTargetQ(50)
.build();
GeneratorAction action4 = new GeneratorActionBuilder().withId("id")
.withNetworkElementId("neId2")
.withActivePowerValue(100)
.withActivePowerRelativeValue(false)
.withVoltageRegulatorOn(true)
.withTargetQ(50)
.build();
GeneratorAction action5 = new GeneratorActionBuilder().withId("id2")
.withNetworkElementId("neId")
.withActivePowerValue(100)
.withActivePowerRelativeValue(false)
.withTargetQ(50)
.build();
GeneratorAction action6 = new GeneratorActionBuilder().withId("id")
.withNetworkElementId("neId")
.withActivePowerValue(110)
.withActivePowerRelativeValue(false)
.withTargetQ(50)
.build();
GeneratorAction action7 = new GeneratorActionBuilder().withId("id")
.withNetworkElementId("neId")
.withActivePowerValue(100)
.withActivePowerRelativeValue(false)
.withTargetQ(50)
.withVoltageRegulatorOn(false)
.build();
GeneratorAction action8 = new GeneratorActionBuilder().withId("id")
.withNetworkElementId("neId")
.withActivePowerValue(100)
.withActivePowerRelativeValue(false)
.withTargetQ(50)
.withTargetV(60)
.build();
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.addEqualityGroup(action6)
.addEqualityGroup(action7)
.addEqualityGroup(action8)
.testEquals();
}
@Test
void hvdcAction() {
HvdcAction action1 = new HvdcActionBuilder().withId("id")
.withNetworkElementId("neId")
.withAcEmulationEnabled(true)
.build();
HvdcAction action2 = new HvdcActionBuilder().withId("id")
.withHvdcId("neId")
.withAcEmulationEnabled(true)
.build();
HvdcAction action3 = new HvdcActionBuilder().withId("id2")
.withNetworkElementId("neId")
.build();
HvdcAction action4 = new HvdcActionBuilder().withId("id")
.withNetworkElementId("neId2")
.withAcEmulationEnabled(true)
.build();
HvdcAction action5 = new HvdcActionBuilder().withId("id")
.withNetworkElementId("neId")
.build();
HvdcAction action6 = new HvdcActionBuilder().withId("id")
.withNetworkElementId("neId")
.withConverterMode(HvdcLine.ConvertersMode.SIDE_1_INVERTER_SIDE_2_RECTIFIER)
.build();
HvdcAction action7 = new HvdcActionBuilder().withId("id")
.withNetworkElementId("neId")
.withAcEmulationEnabled(true)
.withP0(2.)
.build();
HvdcAction action8 = new HvdcActionBuilder().withId("id")
.withNetworkElementId("neId")
.withAcEmulationEnabled(true)
.withDroop(2.)
.build();
HvdcAction action9 = new HvdcActionBuilder().withId("id")
.withNetworkElementId("neId")
.withAcEmulationEnabled(true)
.withActivePowerSetpoint(2.)
.build();
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.addEqualityGroup(action6)
.addEqualityGroup(action7)
.addEqualityGroup(action8)
.addEqualityGroup(action9)
.testEquals();
}
@Test
void multipleActionsAction() {
SwitchActionBuilder subaction1 = new SwitchActionBuilder().withId("id")
.withNetworkElementId("neId")
.withOpen(true);
TerminalsConnectionActionBuilder subaction2 = new TerminalsConnectionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withOpen(true);
SwitchActionBuilder subaction3 = new SwitchActionBuilder().withId("id")
.withNetworkElementId("neId")
.withOpen(true);
TerminalsConnectionActionBuilder subaction4 = new TerminalsConnectionActionBuilder().withId("id")
.withNetworkElementId("neId")
.withOpen(true);
MultipleActionsAction action1 = new MultipleActionsActionBuilder().withId("id")
.withActionBuilders(List.of(subaction1, subaction2))
.build();
MultipleActionsAction action2 = new MultipleActionsActionBuilder().withId("id")
.withActionBuilders(List.of(subaction3, subaction4))
.build();
MultipleActionsAction action3 = new MultipleActionsActionBuilder().withId("id")
.withActionBuilders(List.of(subaction1))
.build();
MultipleActionsAction action4 = new MultipleActionsActionBuilder().withId("id2")
.withActionBuilders(List.of(subaction1, subaction2))
.build();
MultipleActionsAction action5 = new MultipleActionsActionBuilder().withId("id")
.withActionBuilders(List.of())
.build();
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.testEquals();
}
@Test
void interchangeTargetAction() {
AreaInterchangeTargetAction action1 = new AreaInterchangeTargetActionBuilder().withId("id")
.withAreaId("area1")
.withTarget(1.0)
.build();
AreaInterchangeTargetAction action2 = new AreaInterchangeTargetActionBuilder().withId("id")
.withAreaId("area1")
.withTarget(1.0)
.build();
AreaInterchangeTargetAction action3 = new AreaInterchangeTargetActionBuilder().withId("id2")
.withAreaId("area1")
.withTarget(1.0)
.build();
AreaInterchangeTargetAction action4 = new AreaInterchangeTargetActionBuilder().withId("id")
.withAreaId("area2")
.withTarget(1.0)
.build();
AreaInterchangeTargetAction action5 = new AreaInterchangeTargetActionBuilder().withId("id")
.withAreaId("area1")
.withTarget(2.0)
.build();
AreaInterchangeTargetAction action6 = new AreaInterchangeTargetActionBuilder().withId("id")
.withAreaId("area1")
.withTarget(Double.NaN)
.build();
AreaInterchangeTargetAction action7 = new AreaInterchangeTargetActionBuilder().withId("id")
.withAreaId("area1")
.withTarget(Double.NaN)
.build();
new EqualsTester()
.addEqualityGroup(action1, action2)
.addEqualityGroup(action3)
.addEqualityGroup(action4)
.addEqualityGroup(action5)
.addEqualityGroup(action6, action7)
.testEquals();
}
}