Esempio n. 1
0
    PATHS_TO_PLOTS: {
        PLOTS_BUSSES: [],
        PLOTS_DEMANDS: [],
        PLOTS_RESOURCES: [],
        PLOTS_ES: [],
        PLOTS_PERFORMANCE: [],
        PLOTS_COSTS: [],
    }
}

SECTOR = "Electricity"
INTERVAL = 2

OUTPUT_PATH = os.path.join(TEST_REPO_PATH, "test_outputs")

PARSER = initializing.mvs_arg_parser()

TEST_INPUT_PATH = os.path.join(TEST_REPO_PATH, TEST_INPUT_DIRECTORY,
                               "inputs_F1_plot_es_graph")

TEST_OUTPUT_PATH = os.path.join(TEST_REPO_PATH, "F1_outputs")

# Data for test_if_plot_of_all_energy_flows_for_all_sectors_are_stored_for_14_days
USER_INPUT = {PATH_OUTPUT_FOLDER: OUTPUT_PATH}
PROJECT_DATA = {PROJECT_NAME: "a_project", SCENARIO_NAME: "a_scenario"}

RESULTS_TIMESERIES = pd.read_csv(
    os.path.join(DUMMY_CSV_PATH, "plot_data_for_F1.csv"),
    sep=";",
    header=0,
    index_col=0,
        },
    }
    B0.retrieve_date_time_info(simulation_settings)
    for k in (START_DATE, END_DATE, TIME_INDEX):
        assert (k in simulation_settings.keys()
                ), f"Function does not add {k} to the simulation settings."
    assert simulation_settings[START_DATE] == pd.Timestamp(
        "2020-01-01 00:00:00"), f"Function incorrectly parses the timestamp."
    assert simulation_settings[END_DATE] == pd.Timestamp(
        "2020-01-01 23:00:00"), f"Function incorrectly parses the timestamp."
    assert (
        simulation_settings[PERIODS] == 24
    ), f"Function incorrectly identifies the number of evaluated periods."


PARSER = A0.mvs_arg_parser()


class TestTemporaryJsonFileDisposal:

    test_in_path = os.path.join(TEST_REPO_PATH, "inputs")
    test_out_path = os.path.join(TEST_REPO_PATH, "MVS_outputs")

    @mock.patch(
        "argparse.ArgumentParser.parse_args",
        return_value=PARSER.parse_args([
            "-f",
            "-log",
            "warning",
            "-i",
            test_in_path,
class TestCommandLineInput:

    parser = A0.mvs_arg_parser()

    def test_input_folder(self):
        parsed = self.parser.parse_args(["-i", "input_folder"])
        assert parsed.path_input_folder == "input_folder"

    def test_default_input_folder(self):
        parsed = self.parser.parse_args([])
        assert parsed.path_input_folder == DEFAULT_INPUT_PATH

    def test_input_json_ext(self):
        parsed = self.parser.parse_args(["-ext", JSON_EXT])
        assert parsed.input_type == JSON_EXT

    def test_input_csv_ext(self):
        parsed = self.parser.parse_args(["-ext", CSV_EXT])
        assert parsed.input_type == CSV_EXT

    def test_default_input_type(self):
        parsed = self.parser.parse_args([])
        assert parsed.input_type == JSON_EXT

    def test_ext_not_accepting_other_choices(self):
        with pytest.raises(SystemExit) as argparse_error:
            parsed = self.parser.parse_args(["-ext", "something"])
        assert str(argparse_error.value) == "2"

    def test_output_folder(self):
        parsed = self.parser.parse_args(["-o", "output_folder"])
        assert parsed.path_output_folder == "output_folder"

    def test_default_output_folder(self):
        parsed = self.parser.parse_args([])
        assert parsed.path_output_folder == DEFAULT_OUTPUT_PATH

    def test_overwrite_false_by_default(self):
        parsed = self.parser.parse_args([])
        assert parsed.overwrite is False

    def test_overwrite_activation(self):
        parsed = self.parser.parse_args(["-f"])
        assert parsed.overwrite is True

    def test_pdf_report_false_by_default(self):
        parsed = self.parser.parse_args([])
        assert parsed.pdf_report is False

    def test_pdf_report_activation(self):
        parsed = self.parser.parse_args(["-pdf"])
        assert parsed.pdf_report is True

    def test_png_activation(self):
        parsed = self.parser.parse_args(["-png"])
        assert parsed.save_png is True

    def test_log_assignation(self):
        parsed = self.parser.parse_args(["-log", "debug"])
        assert parsed.display_output == "debug"

    def test_log_default(self):
        parsed = self.parser.parse_args([])
        assert parsed.display_output == "info"

    def test_log_not_accepting_other_choices(self):
        with pytest.raises(SystemExit) as argparse_error:
            parsed = self.parser.parse_args(["-log", "something"])
        assert str(argparse_error.value) == "2"

    # this ensure that the test is only ran if explicitly executed,
    # ie not when the `pytest` command alone it called
    @pytest.mark.skipif(
        EXECUTE_TESTS_ON not in (TESTS_ON_MASTER),
        reason="Benchmark test deactivated, set env variable "
        "EXECUTE_TESTS_ON to 'master' to run this test",
    )
    @mock.patch(
        "argparse.ArgumentParser.parse_args",
        return_value=PARSER.parse_args([
            "-f",
            "-log",
            "warning",
            "-i",
            os.path.join(TEST_REPO_PATH, INPUT_FOLDER),
            "-o",
            TEST_OUTPUT_PATH,
        ]),
    )
    def test_user_defined_output_path(self, mock_args):
        main()
        assert os.path.exists(TEST_OUTPUT_PATH)

    def teardown_method(self):
        if os.path.exists(TEST_OUTPUT_PATH):
            shutil.rmtree(TEST_OUTPUT_PATH, ignore_errors=True)