GlobalRangeActionActivationResultTest.java
/*
* Copyright (c) 2025, 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.searchtreerao.marmot.results;
import com.powsybl.openrao.commons.TemporalDataImpl;
import com.powsybl.openrao.data.crac.api.State;
import com.powsybl.openrao.data.crac.api.rangeaction.PstRangeAction;
import com.powsybl.openrao.searchtreerao.marmot.TestsUtils;
import com.powsybl.openrao.searchtreerao.result.api.RangeActionActivationResult;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import java.util.Map;
import java.util.Set;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* @author Thomas Bouquet {@literal <thomas.bouquet at rte-france.com>}
*/
class GlobalRangeActionActivationResultTest {
private State stateTimestamp1;
private State stateTimestamp2;
private State stateTimestamp3;
private PstRangeAction pstRangeActionTimestamp1;
private PstRangeAction pstRangeActionTimestamp2;
private PstRangeAction pstRangeActionTimestamp3;
private RangeActionActivationResult globalRangeActionActivationResult;
@BeforeEach
void setUp() {
stateTimestamp1 = TestsUtils.mockState(TestsUtils.TIMESTAMP_1);
stateTimestamp2 = TestsUtils.mockState(TestsUtils.TIMESTAMP_2);
stateTimestamp3 = TestsUtils.mockState(TestsUtils.TIMESTAMP_3);
pstRangeActionTimestamp1 = Mockito.mock(PstRangeAction.class);
pstRangeActionTimestamp2 = Mockito.mock(PstRangeAction.class);
pstRangeActionTimestamp3 = Mockito.mock(PstRangeAction.class);
RangeActionActivationResult rangeActionActivationResultTimestamp1 = TestsUtils.mockRangeActionActivationResult(stateTimestamp1, pstRangeActionTimestamp1, 5, 6.22);
RangeActionActivationResult rangeActionActivationResultTimestamp2 = TestsUtils.mockRangeActionActivationResult(stateTimestamp2, pstRangeActionTimestamp2, 8, 12.11);
RangeActionActivationResult rangeActionActivationResultTimestamp3 = TestsUtils.mockRangeActionActivationResult(stateTimestamp3, pstRangeActionTimestamp3, 1, 0.55);
globalRangeActionActivationResult = new GlobalRangeActionActivationResult(new TemporalDataImpl<>(Map.of(TestsUtils.TIMESTAMP_1, rangeActionActivationResultTimestamp1, TestsUtils.TIMESTAMP_2, rangeActionActivationResultTimestamp2, TestsUtils.TIMESTAMP_3, rangeActionActivationResultTimestamp3)));
}
@Test
void testRangeActions() {
assertEquals(Set.of(pstRangeActionTimestamp1, pstRangeActionTimestamp2, pstRangeActionTimestamp3), globalRangeActionActivationResult.getRangeActions());
}
@Test
void testActivatedRangeActions() {
assertEquals(Set.of(pstRangeActionTimestamp1), globalRangeActionActivationResult.getActivatedRangeActions(stateTimestamp1));
assertEquals(Set.of(pstRangeActionTimestamp2), globalRangeActionActivationResult.getActivatedRangeActions(stateTimestamp2));
assertEquals(Set.of(pstRangeActionTimestamp3), globalRangeActionActivationResult.getActivatedRangeActions(stateTimestamp3));
}
@Test
void testOptimalTap() {
assertEquals(5, globalRangeActionActivationResult.getOptimizedTap(pstRangeActionTimestamp1, stateTimestamp1));
assertEquals(8, globalRangeActionActivationResult.getOptimizedTap(pstRangeActionTimestamp2, stateTimestamp2));
assertEquals(1, globalRangeActionActivationResult.getOptimizedTap(pstRangeActionTimestamp3, stateTimestamp3));
}
@Test
void testTapVariation() {
assertEquals(5, globalRangeActionActivationResult.getTapVariation(pstRangeActionTimestamp1, stateTimestamp1));
assertEquals(8, globalRangeActionActivationResult.getTapVariation(pstRangeActionTimestamp2, stateTimestamp2));
assertEquals(1, globalRangeActionActivationResult.getTapVariation(pstRangeActionTimestamp3, stateTimestamp3));
}
@Test
void testOptimizedTapsOnState() {
assertEquals(Map.of(pstRangeActionTimestamp1, 5), globalRangeActionActivationResult.getOptimizedTapsOnState(stateTimestamp1));
assertEquals(Map.of(pstRangeActionTimestamp2, 8), globalRangeActionActivationResult.getOptimizedTapsOnState(stateTimestamp2));
assertEquals(Map.of(pstRangeActionTimestamp3, 1), globalRangeActionActivationResult.getOptimizedTapsOnState(stateTimestamp3));
}
@Test
void testOptimalSetPoint() {
assertEquals(6.22, globalRangeActionActivationResult.getOptimizedSetpoint(pstRangeActionTimestamp1, stateTimestamp1));
assertEquals(12.11, globalRangeActionActivationResult.getOptimizedSetpoint(pstRangeActionTimestamp2, stateTimestamp2));
assertEquals(0.55, globalRangeActionActivationResult.getOptimizedSetpoint(pstRangeActionTimestamp3, stateTimestamp3));
}
@Test
void testSetPointVariation() {
assertEquals(6.22, globalRangeActionActivationResult.getSetPointVariation(pstRangeActionTimestamp1, stateTimestamp1));
assertEquals(12.11, globalRangeActionActivationResult.getSetPointVariation(pstRangeActionTimestamp2, stateTimestamp2));
assertEquals(0.55, globalRangeActionActivationResult.getSetPointVariation(pstRangeActionTimestamp3, stateTimestamp3));
}
@Test
void testOptimizedSetPointsOnState() {
assertEquals(Map.of(pstRangeActionTimestamp1, 6.22), globalRangeActionActivationResult.getOptimizedSetpointsOnState(stateTimestamp1));
assertEquals(Map.of(pstRangeActionTimestamp2, 12.11), globalRangeActionActivationResult.getOptimizedSetpointsOnState(stateTimestamp2));
assertEquals(Map.of(pstRangeActionTimestamp3, 0.55), globalRangeActionActivationResult.getOptimizedSetpointsOnState(stateTimestamp3));
}
}