JsonVirtualHubsConfigurationTest.java
/*
* Copyright (c) 2020, 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 https://mozilla.org/MPL/2.0/.
*/
package com.powsybl.openrao.virtualhubs.json;
import com.powsybl.openrao.virtualhubs.BorderDirection;
import com.powsybl.openrao.virtualhubs.MarketArea;
import com.powsybl.openrao.virtualhubs.VirtualHub;
import com.powsybl.openrao.virtualhubs.VirtualHubsConfiguration;
import org.junit.jupiter.api.Test;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.StringWriter;
import static org.junit.jupiter.api.Assertions.*;
/**
* @author Sebastien Murgey {@literal <sebastien.murgey@rte-france.com>}
*/
class JsonVirtualHubsConfigurationTest {
@Test
void checkThatCorrectConfigurationFileImportsCorrectly() {
VirtualHubsConfiguration configuration = JsonVirtualHubsConfiguration.importConfiguration(getClass().getResourceAsStream("/virtualHubsConfigurationFile.json"));
assertEquals(3, configuration.getMarketAreas().size());
assertEquals(4, configuration.getVirtualHubs().size());
}
@Test
void checkThatConfigurationExportsCorrectlyOnOutputStream() {
VirtualHubsConfiguration configuration = new VirtualHubsConfiguration();
MarketArea marketArea = new MarketArea("AreaCode", "AreaEic", true, true);
configuration.addMarketArea(marketArea);
configuration.addMarketArea(new MarketArea("OtherAreaCode", "OtherAreaEic", false, false));
configuration.addVirtualHub(new VirtualHub("HubCode", "HubEic", true, false, "HubNodeName", marketArea, "OppositeHub"));
configuration.addBorderDirection(new BorderDirection("From", "To", false));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JsonVirtualHubsConfiguration.exportConfiguration(baos, configuration);
assertEquals("{\"marketAreas\":[{\"code\":\"AreaCode\",\"eic\":\"AreaEic\",\"isMcParticipant\":true,\"isAhc\":true},{\"code\":\"OtherAreaCode\",\"eic\":\"OtherAreaEic\",\"isMcParticipant\":false,\"isAhc\":false}],\"virtualHubs\":[{\"code\":\"HubCode\",\"eic\":\"HubEic\",\"isMcParticipant\":true,\"isAhc\":false,\"nodeName\":\"HubNodeName\",\"marketArea\":\"AreaCode\",\"oppositeHub\":\"OppositeHub\"}],\"borderDirections\":[{\"from\":\"From\",\"to\":\"To\",\"isAhc\":false}]}", new String(baos.toByteArray()));
}
@Test
void checkThatConfigurationExportsCorrectlyOnWriter() {
VirtualHubsConfiguration configuration = new VirtualHubsConfiguration();
MarketArea marketArea = new MarketArea("AreaCode", "AreaEic", true, false);
configuration.addMarketArea(marketArea);
configuration.addMarketArea(new MarketArea("OtherAreaCode", "OtherAreaEic", false, true));
configuration.addVirtualHub(new VirtualHub("HubCode", "HubEic", true, true, "HubNodeName", marketArea, "OppositeHub"));
configuration.addBorderDirection(new BorderDirection("From", "To", true));
StringWriter writer = new StringWriter();
JsonVirtualHubsConfiguration.exportConfiguration(writer, configuration);
assertEquals("{\"marketAreas\":[{\"code\":\"AreaCode\",\"eic\":\"AreaEic\",\"isMcParticipant\":true,\"isAhc\":false},{\"code\":\"OtherAreaCode\",\"eic\":\"OtherAreaEic\",\"isMcParticipant\":false,\"isAhc\":true}],\"virtualHubs\":[{\"code\":\"HubCode\",\"eic\":\"HubEic\",\"isMcParticipant\":true,\"isAhc\":true,\"nodeName\":\"HubNodeName\",\"marketArea\":\"AreaCode\",\"oppositeHub\":\"OppositeHub\"}],\"borderDirections\":[{\"from\":\"From\",\"to\":\"To\",\"isAhc\":true}]}", writer.toString());
}
@Test
void checkThatIncorrectConfigurationImportThrows() {
InputStream inputStream = getClass().getResourceAsStream("/invalidConfiguration.json");
VirtualHubsConfigurationDeserializationException thrown = assertThrows(
VirtualHubsConfigurationDeserializationException.class,
() -> JsonVirtualHubsConfiguration.importConfiguration(inputStream),
"Invalid parameter in configuration should throw"
);
assertEquals("Attribute 'brokenParam' invalid for configuration", thrown.getMessage());
}
@Test
void checkThatIncorrectMarketAreaImportThrows() {
InputStream inputStream = getClass().getResourceAsStream("/invalidMarketArea.json");
VirtualHubsConfigurationDeserializationException thrown = assertThrows(
VirtualHubsConfigurationDeserializationException.class,
() -> JsonVirtualHubsConfiguration.importConfiguration(inputStream),
"Invalid parameter in market area should throw"
);
assertEquals("Attribute 'brokenParam' invalid for market area", thrown.getMessage());
}
@Test
void checkThatIncorrectVirtualHubImportThrows() {
InputStream inputStream = getClass().getResourceAsStream("/invalidVirtualHub.json");
VirtualHubsConfigurationDeserializationException thrown = assertThrows(
VirtualHubsConfigurationDeserializationException.class,
() -> JsonVirtualHubsConfiguration.importConfiguration(inputStream),
"Invalid parameter in virtual hub should throw"
);
assertEquals("Attribute 'brokenParam' invalid for virtual hub", thrown.getMessage());
}
}