Skip to content

Commit f9479b5

Browse files
committed
[IMG-2474] add test on losses
Signed-off-by: marifunf <[email protected]>
1 parent 9a25322 commit f9479b5

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
/*
2+
* Copyright (c) 2021, RTE (http://www.rte-france.com)
3+
* This Source Code Form is subject to the terms of the Mozilla Public
4+
* License, v. 2.0. If a copy of the MPL was not distributed with this
5+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
6+
* SPDX-License-Identifier: MPL-2.0
7+
*/
8+
package com.powsybl.metrix.integration;
9+
10+
import com.powsybl.iidm.network.Network;
11+
import com.powsybl.iidm.serde.NetworkSerDe;
12+
import com.powsybl.metrix.mapping.TimeSeriesMappingConfig;
13+
import com.powsybl.timeseries.*;
14+
import com.powsybl.timeseries.ast.BinaryOperation;
15+
import com.powsybl.timeseries.ast.NodeCalc;
16+
import com.powsybl.timeseries.ast.TimeSeriesNameNodeCalc;
17+
import org.junit.jupiter.api.BeforeEach;
18+
import org.junit.jupiter.api.Test;
19+
import org.mockito.Mockito;
20+
import org.threeten.extra.Interval;
21+
22+
import java.time.Duration;
23+
import java.util.Map;
24+
import java.util.Objects;
25+
import java.util.Set;
26+
27+
import static com.powsybl.metrix.integration.MetrixLossesPostProcessingTimeSeries.LOSSES_COST_PREFIX;
28+
import static com.powsybl.metrix.integration.dataGenerator.MetrixOutputData.LOSSES;
29+
import static org.junit.jupiter.api.Assertions.assertEquals;
30+
import static org.mockito.Mockito.mock;
31+
import static org.mockito.Mockito.when;
32+
33+
/**
34+
* @author Marianne Funfrock {@literal <marianne.funfrock at rte-france.com>}
35+
*/
36+
class MetrixLossesPostProcessingTimeSeriesTest {
37+
38+
private Network network;
39+
40+
private final MetrixParameters parameters = new MetrixParameters();
41+
42+
private final String metrixConfigurationScript = String.join(System.lineSeparator(),
43+
"losses() {",
44+
" costs 'tsCost'",
45+
"}"
46+
);
47+
48+
Map<String, NodeCalc> postProcessingTimeSeries;
49+
50+
@BeforeEach
51+
public void setUp() {
52+
network = NetworkSerDe.read(Objects.requireNonNull(getClass().getResourceAsStream("/simpleNetwork.xml")));
53+
}
54+
55+
@Test
56+
void postProcessingTimeSeriesTest() {
57+
TimeSeriesIndex index = RegularTimeSeriesIndex.create(Interval.parse("1970-01-01T00:00:00Z/1970-01-02T00:00:00Z"), Duration.ofDays(1));
58+
59+
ReadOnlyTimeSeriesStore metrixResultTimeSeries = mock(ReadOnlyTimeSeriesStore.class);
60+
when(metrixResultTimeSeries.getTimeSeriesNames(Mockito.any())).thenReturn(Set.of(LOSSES));
61+
62+
ReadOnlyTimeSeriesStore store = new ReadOnlyTimeSeriesStoreCache(
63+
TimeSeries.createDouble("tsCost", index, 1000d, 1000d)
64+
);
65+
66+
TimeSeriesMappingConfig mappingConfig = new TimeSeriesMappingConfig();
67+
MetrixDslDataLoader metrixDslDataLoader = new MetrixDslDataLoader(metrixConfigurationScript);
68+
metrixDslDataLoader.load(network, parameters, store, mappingConfig, null);
69+
70+
MetrixLossesPostProcessingTimeSeries lossesProcessing = new MetrixLossesPostProcessingTimeSeries(mappingConfig, null);
71+
postProcessingTimeSeries = lossesProcessing.createPostProcessingTimeSeries();
72+
assertEquals(1, postProcessingTimeSeries.size());
73+
74+
NodeCalc tsCost = new TimeSeriesNameNodeCalc("tsCost");
75+
NodeCalc metrixOutputNode = new TimeSeriesNameNodeCalc(LOSSES);
76+
NodeCalc expectedLossesCost = BinaryOperation.multiply(metrixOutputNode, tsCost);
77+
assertEquals(expectedLossesCost, postProcessingTimeSeries.get(LOSSES_COST_PREFIX));
78+
}
79+
}

0 commit comments

Comments
 (0)