NamingStrategyTest.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.ucte.converter;

import com.powsybl.commons.datasource.ResourceDataSource;
import com.powsybl.commons.datasource.ResourceSet;
import com.powsybl.iidm.network.*;
import com.powsybl.ucte.network.UcteCountryCode;
import com.powsybl.ucte.network.UcteElementId;
import com.powsybl.ucte.network.UcteNodeCode;
import com.powsybl.ucte.network.UcteVoltageLevelCode;
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.assertSame;

/**
 * @author Mathieu Bague {@literal <mathieu.bague@rte-france.com>}
 */
class NamingStrategyTest {

    @Test
    void testUcteCode() {
        NamingStrategy strategy = new DefaultNamingStrategy();

        UcteNodeCode code = strategy.getUcteNodeCode("FABCDE12");
        assertEquals(UcteCountryCode.FR, code.getUcteCountryCode());
        assertEquals("ABCDE", code.getGeographicalSpot());
        assertEquals(UcteVoltageLevelCode.VL_380, code.getVoltageLevelCode());
        assertEquals(Character.valueOf('2'), code.getBusbar());

        UcteNodeCode code2 = strategy.getUcteNodeCode("FABCDE12");
        assertSame(code, code2);
    }

    @Test
    void testUcteElementId() {
        NamingStrategy strategy = new DefaultNamingStrategy();

        UcteElementId elementId = strategy.getUcteElementId("FABCDE12 BFGHIJ2A 1");
        UcteNodeCode node1 = strategy.getUcteNodeCode("FABCDE12");
        assertEquals(node1, elementId.getNodeCode1());

        UcteNodeCode node2 = strategy.getUcteNodeCode("BFGHIJ2A");
        assertEquals(node2, elementId.getNodeCode2());

        assertEquals('1', elementId.getOrderCode());
    }

    @Test
    void testWithNetwork() {
        ResourceDataSource dataSource = new ResourceDataSource("expectedExport", new ResourceSet("/", "expectedExport.uct"));

        UcteImporter importer = new UcteImporter();
        Network network = importer.importData(dataSource, NetworkFactory.findDefault(), new Properties());

        NamingStrategy strategy = new DefaultNamingStrategy();
        UcteNodeCode code1 = strategy.getUcteNodeCode("B_SU1_11");
        Bus bus1 = network.getVoltageLevel("B_SU1_1").getBusBreakerView().getBus("B_SU1_11");
        assertEquals(code1, strategy.getUcteNodeCode(bus1));

        DanglingLine danglingLine = network.getDanglingLine("XG__F_21 F_SU1_21 1");
        UcteNodeCode code2 = strategy.getUcteNodeCode("XG__F_21");
        assertEquals(code2, strategy.getUcteNodeCode(danglingLine));

        UcteElementId elementId1 = strategy.getUcteElementId("XG__F_21 F_SU1_21 1");
        assertEquals(elementId1, strategy.getUcteElementId(danglingLine));

        UcteElementId elementId2 = strategy.getUcteElementId("B_SU1_11 B_SU1_21 1");
        Branch branch = network.getBranch("B_SU1_11 B_SU1_21 1");
        assertEquals(elementId2, strategy.getUcteElementId(branch));

        UcteElementId elementId3 = strategy.getUcteElementId("F_SU1_12 F_SU1_11 1");
        Switch sw = network.getSwitch("F_SU1_12 F_SU1_11 1");
        assertEquals(elementId3, strategy.getUcteElementId(sw));
    }
}