CgmesGLImportPostProcessorTest.java

/**
 * Copyright (c) 2019, 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.cgmes.gl;

import com.powsybl.commons.PowsyblException;
import com.powsybl.commons.datasource.ReadOnlyDataSource;
import com.powsybl.commons.datasource.ResourceDataSource;
import com.powsybl.commons.datasource.ResourceSet;
import com.powsybl.iidm.network.Line;
import com.powsybl.iidm.network.Network;
import com.powsybl.iidm.network.Substation;
import com.powsybl.iidm.network.extensions.LinePosition;
import com.powsybl.iidm.network.extensions.SubstationPosition;
import org.junit.jupiter.api.Test;

import java.util.Properties;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

/**
 *
 * @author Massimo Ferraro {@literal <massimo.ferraro@techrain.eu>}
 */
class CgmesGLImportPostProcessorTest {

    @Test
    void test() {
        Properties properties = new Properties();
        properties.put("iidm.import.cgmes.post-processors", "cgmesGLImport");
        ReadOnlyDataSource ds = new ResourceDataSource("importGL", new ResourceSet("/", "importGL_EQ.xml", "importGL_GL.xml"));
        Network network = Network.read(ds, properties);

        Substation substation1 = network.getSubstation("Substation1");
        SubstationPosition substation1Position = substation1.getExtension(SubstationPosition.class);
        assertEquals(48.7123755, substation1Position.getCoordinate().getLatitude(), 0);
        assertEquals(-1.8468419, substation1Position.getCoordinate().getLongitude(), 0);

        Substation substation2 = network.getSubstation("Substation2");
        SubstationPosition substation2Position = substation2.getExtension(SubstationPosition.class);
        assertEquals(49.224448, substation2Position.getCoordinate().getLatitude(), 0);
        assertEquals(-2.136596, substation2Position.getCoordinate().getLongitude(), 0);

        Substation substation3 = network.getSubstation("Substation3");
        SubstationPosition substation3Position = substation3.getExtension(SubstationPosition.class);
        assertEquals(49.2092905, substation3Position.getCoordinate().getLatitude(), 1e-11);
        assertEquals(-2.19941, substation3Position.getCoordinate().getLongitude(), 0);

        Line line = network.getLine("ACLine");
        LinePosition<Line> linePosition = line.getExtension(LinePosition.class);
        assertEquals(48.7123755, linePosition.getCoordinates().get(0).getLatitude(), 0);
        assertEquals(-1.8468419, linePosition.getCoordinates().get(0).getLongitude(), 0);

        assertEquals(48.8725425, linePosition.getCoordinates().get(1).getLatitude(), 0);
        assertEquals(-1.8330389, linePosition.getCoordinates().get(1).getLongitude(), 0);

        assertEquals(49.1703925, linePosition.getCoordinates().get(2).getLatitude(), 0);
        assertEquals(-2.1263669, linePosition.getCoordinates().get(2).getLongitude(), 0);

        assertEquals(49.224448, linePosition.getCoordinates().get(3).getLatitude(), 0);
        assertEquals(-2.136596, linePosition.getCoordinates().get(3).getLongitude(), 0);
    }

    @Test
    void testUnsupportedCoordinateSystem() {
        Properties properties = new Properties();
        properties.put("iidm.import.cgmes.post-processors", "cgmesGLImport");
        ReadOnlyDataSource ds1 = new ResourceDataSource("importGL", new ResourceSet("/", "importGL_EQ.xml", "unsupportedSubstationCrs_GL.xml"));
        PowsyblException e1 = assertThrows(PowsyblException.class, () -> Network.read(ds1, properties));
        assertEquals("Unsupported coordinates system: urn:ogc:def:crs:OGC:2:84", e1.getMessage());

        ReadOnlyDataSource ds2 = new ResourceDataSource("importGL", new ResourceSet("/", "importGL_EQ.xml", "unsupportedLineCrs_GL.xml"));
        PowsyblException e2 = assertThrows(PowsyblException.class, () -> Network.read(ds2, properties));
        assertEquals("Unsupported coordinates system: urn:ogc:def:crs:OGC:2:84", e2.getMessage());
    }
}