NetworkElementTest.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.iidm.criteria.translation;

import com.powsybl.iidm.criteria.NetworkElementCriterion;
import com.powsybl.iidm.network.Country;
import com.powsybl.iidm.network.ThreeSides;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

import java.util.Optional;

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

/**
 * @author Olivier Perrin {@literal <olivier.perrin at rte-france.com>}
 */
class NetworkElementTest {

    private static NetworkElement networkElement;

    @BeforeAll
    public static void init() {
        networkElement = new NetworkElement() {
            @Override
            public String getId() {
                return "id";
            }

            @Override
            public Optional<Country> getCountry1() {
                return Optional.of(Country.DE);
            }

            @Override
            public Optional<Country> getCountry2() {
                return Optional.of(Country.ES);
            }

            @Override
            public Optional<Country> getCountry3() {
                return Optional.of(Country.BE);
            }

            @Override
            public Optional<Country> getCountry() {
                return getCountry1();
            }

            @Override
            public Optional<Double> getNominalVoltage1() {
                return Optional.of(400.);
            }

            @Override
            public Optional<Double> getNominalVoltage2() {
                return Optional.of(225.);
            }

            @Override
            public Optional<Double> getNominalVoltage3() {
                return Optional.of(90.);
            }

            @Override
            public Optional<Double> getNominalVoltage() {
                return getNominalVoltage1();
            }

            @Override
            public boolean isValidFor(NetworkElementCriterion.NetworkElementCriterionType networkElementCriterionType) {
                return false;
            }
        };
    }

    @Test
    void testCountries() {
        assertEquals(Country.DE, networkElement.getCountry(ThreeSides.ONE).orElse(null));
        assertEquals(Country.ES, networkElement.getCountry(ThreeSides.TWO).orElse(null));
        assertEquals(Country.BE, networkElement.getCountry(ThreeSides.THREE).orElse(null));
    }

    @Test
    void testVoltageLevels() {
        assertEquals(400., networkElement.getNominalVoltage(ThreeSides.ONE).orElse(Double.NaN), 0.01);
        assertEquals(225., networkElement.getNominalVoltage(ThreeSides.TWO).orElse(Double.NaN), 0.01);
        assertEquals(90., networkElement.getNominalVoltage(ThreeSides.THREE).orElse(Double.NaN), 0.01);
    }
}