IdentifierActionListTest.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.action;

import com.powsybl.commons.PowsyblException;
import com.powsybl.iidm.network.Network;
import com.powsybl.iidm.network.ThreeSides;
import com.powsybl.iidm.network.identifiers.IdBasedNetworkElementIdentifier;
import com.powsybl.iidm.network.identifiers.NetworkElementIdentifier;
import com.powsybl.iidm.network.identifiers.NetworkElementIdentifierContingencyList;
import com.powsybl.iidm.network.identifiers.VoltageLevelAndOrderNetworkElementIdentifier;
import com.powsybl.iidm.network.test.EurostagTutorialExample1Factory;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.util.*;

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

/**
 * @author Etienne Lesot {@literal <etienne.lesot at rte-france.com>}
 */
class IdentifierActionListTest {

    @Test
    void test() {
        Network network = EurostagTutorialExample1Factory.create();
        Map<ActionBuilder, NetworkElementIdentifier> elementIdentifierMap = new HashMap<>();
        elementIdentifierMap.put(new TerminalsConnectionActionBuilder().withId("lineConnectionAction").withOpen(true)
                .withSide(ThreeSides.ONE),
            new VoltageLevelAndOrderNetworkElementIdentifier("VLHV1", "VLHV2", '1'));
        IdentifierActionList identifierActionList = new IdentifierActionList(Collections.emptyList(), elementIdentifierMap);
        List<Action> actionsCreated = identifierActionList.getActions(network);
        assertEquals(1, actionsCreated.size());
        assertEquals("lineConnectionAction", actionsCreated.get(0).getId());
        assertEquals("NHV1_NHV2_1", ((TerminalsConnectionAction) actionsCreated.get(0)).getElementId());
    }

    @Test
    void testSeveralIdentifiablesFound() {
        Network network = EurostagTutorialExample1Factory.create();
        Map<ActionBuilder, NetworkElementIdentifier> elementIdentifierMap = new HashMap<>();
        List<NetworkElementIdentifier> networkElementIdentifiers = new ArrayList<>();
        networkElementIdentifiers.add(new IdBasedNetworkElementIdentifier("NHV1_NHV2_1"));
        networkElementIdentifiers.add(new IdBasedNetworkElementIdentifier("NHV1_NHV2_2"));
        elementIdentifierMap.put(new TerminalsConnectionActionBuilder().withId("lineConnectionAction").withOpen(true)
                .withSide(ThreeSides.ONE),
            new NetworkElementIdentifierContingencyList(networkElementIdentifiers));
        IdentifierActionList identifierActionList = new IdentifierActionList(Collections.emptyList(), elementIdentifierMap);
        String message = Assertions.assertThrows(PowsyblException.class, () -> identifierActionList.getActions(network)).getMessage();
        Assertions.assertEquals("for identifier in action builder more than one or none network element was found", message);
    }
}