ParallelLoadFlowActionSimulatorTest.java

/**
 * Copyright (c) 2018, 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.ial.simulator.loadflow;

import com.powsybl.computation.ComputationManager;
import com.powsybl.iidm.network.Network;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import java.util.Collections;
import java.util.List;

import static org.mockito.Mockito.*;

class ParallelLoadFlowActionSimulatorTest {

    private ComputationManager computationManager;

    private ParallelLoadFlowActionSimulator parallelLoadFlowActionSimulator;

    private List<String> contingencies;

    @BeforeEach
    void setup() {
        Network network = mock(Network.class);
        computationManager = mock(ComputationManager.class);

        LoadFlowActionSimulatorConfig config = mock(LoadFlowActionSimulatorConfig.class);

        parallelLoadFlowActionSimulator = new ParallelLoadFlowActionSimulator(network, computationManager, 7, config, false, Collections.emptyList());

        contingencies = mock(List.class);
    }

    @Test
    void test() {
        when(contingencies.size()).thenReturn(11);

        String script = "";
        try {
            parallelLoadFlowActionSimulator.run(script, contingencies);
        } catch (Exception e) {
            // do nothing
        }
        verify(computationManager, times(1)).execute(any(), any());
    }

    @Test
    void testContingencySizeSmallerThanTasks() {
        when(contingencies.size()).thenReturn(3);

        String script = "";
        try {
            parallelLoadFlowActionSimulator.run(script, contingencies);
        } catch (Exception e) {
            // do nothing
        }
        verify(computationManager, times(1)).execute(any(), any());
    }
}