From 2c63ae3712bec3389570bd00408d0bcfc44a64c3 Mon Sep 17 00:00:00 2001 From: s-weigand Date: Mon, 29 Mar 2021 03:15:07 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=B9=20Moved=20'dummy=5Fresult'=20fixtu?= =?UTF-8?q?re=20to=20'glotaran/project/test/test=5Fresult.py'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit That way it can be imported and by tests and there is less code duplication. --- .../io/folder/test/test_folder_plugin.py | 42 +++-------- .../builtin/io/yml/test/test_save_result.py | 71 ++++++++----------- glotaran/project/test/test_result.py | 36 ++++++++++ 3 files changed, 73 insertions(+), 76 deletions(-) create mode 100644 glotaran/project/test/test_result.py diff --git a/glotaran/builtin/io/folder/test/test_folder_plugin.py b/glotaran/builtin/io/folder/test/test_folder_plugin.py index 9dc90bb55..282178f2a 100644 --- a/glotaran/builtin/io/folder/test/test_folder_plugin.py +++ b/glotaran/builtin/io/folder/test/test_folder_plugin.py @@ -5,50 +5,22 @@ import pytest -from glotaran.analysis.optimize import optimize -from glotaran.analysis.simulation import simulate -from glotaran.analysis.test.models import ThreeDatasetDecay as suite from glotaran.io import save_result -from glotaran.project import Scheme -from glotaran.project.result import Result +from glotaran.project.test.test_result import dummy_result # noqa: F401 if TYPE_CHECKING: from typing import Literal from py.path import local as TmpDir - -@pytest.fixture(scope="module") -def dummy_result(): - """Dummy result for testing.""" - - model = suite.model - - model.is_grouped = False - model.is_index_dependent = False - - wanted_parameters = suite.wanted_parameters - data = {} - for i in range(3): - e_axis = getattr(suite, "e_axis" if i == 0 else f"e_axis{i+1}") - c_axis = getattr(suite, "c_axis" if i == 0 else f"c_axis{i+1}") - - data[f"dataset{i+1}"] = simulate( - suite.sim_model, f"dataset{i+1}", wanted_parameters, {"e": e_axis, "c": c_axis} - ) - scheme = Scheme( - model=suite.model, - parameters=suite.initial_parameters, - data=data, - maximum_number_function_evaluations=1, - ) - - yield optimize(scheme) + from glotaran.project.result import Result @pytest.mark.parametrize("format_name", ("folder", "legacy")) def test_save_result_folder( - tmpdir: TmpDir, dummy_result: Result, format_name: Literal["folder", "legacy"] + tmpdir: TmpDir, + dummy_result: Result, # noqa: F811 + format_name: Literal["folder", "legacy"], ): """Check all files exist.""" @@ -64,7 +36,9 @@ def test_save_result_folder( @pytest.mark.parametrize("format_name", ("folder", "legacy")) def test_save_result_folder_error_path_is_file( - tmpdir: TmpDir, dummy_result: Result, format_name: Literal["folder", "legacy"] + tmpdir: TmpDir, + dummy_result: Result, # noqa: F811 + format_name: Literal["folder", "legacy"], ): """Raise error if result_path is a file without extension and overwrite is true.""" diff --git a/glotaran/builtin/io/yml/test/test_save_result.py b/glotaran/builtin/io/yml/test/test_save_result.py index a83e2e2a0..08b96b0f2 100644 --- a/glotaran/builtin/io/yml/test/test_save_result.py +++ b/glotaran/builtin/io/yml/test/test_save_result.py @@ -1,44 +1,31 @@ -import os +from __future__ import annotations + +from pathlib import Path +from typing import TYPE_CHECKING -from glotaran.analysis.optimize import optimize -from glotaran.analysis.simulation import simulate -from glotaran.analysis.test.models import ThreeDatasetDecay as suite from glotaran.io import save_result -from glotaran.project import Scheme - - -def test_optimization(tmpdir): - model = suite.model - - model.is_grouped = False - model.is_index_dependent = False - - wanted_parameters = suite.wanted_parameters - data = {} - for i in range(3): - e_axis = getattr(suite, "e_axis" if i == 0 else f"e_axis{i+1}") - c_axis = getattr(suite, "c_axis" if i == 0 else f"c_axis{i+1}") - - data[f"dataset{i+1}"] = simulate( - suite.sim_model, f"dataset{i+1}", wanted_parameters, {"e": e_axis, "c": c_axis} - ) - scheme = Scheme( - model=suite.model, - parameters=suite.initial_parameters, - data=data, - maximum_number_function_evaluations=1, - ) - - result = optimize(scheme) - - result_dir = os.path.join(tmpdir, "testresult") - save_result(result_path=result_dir, format_name="yml", result=result) - - assert os.path.exists(os.path.join(result_dir, "result.md")) - assert os.path.exists(os.path.join(result_dir, "scheme.yml")) - assert os.path.exists(os.path.join(result_dir, "result.yml")) - assert os.path.exists(os.path.join(result_dir, "initial_parameters.csv")) - assert os.path.exists(os.path.join(result_dir, "optimized_parameters.csv")) - assert os.path.exists(os.path.join(result_dir, "dataset1.nc")) - assert os.path.exists(os.path.join(result_dir, "dataset2.nc")) - assert os.path.exists(os.path.join(result_dir, "dataset3.nc")) +from glotaran.project.test.test_result import dummy_result # noqa: F401 + +if TYPE_CHECKING: + from py.path import local as TmpDir + + from glotaran.project.result import Result + + +def test_save_result_yml( + tmpdir: TmpDir, + dummy_result: Result, # noqa: F811 +): + """Check all files exist.""" + + result_dir = Path(tmpdir / "testresult") + save_result(result_path=str(result_dir), format_name="yml", result=dummy_result) + + assert (result_dir / "result.md").exists() + assert (result_dir / "scheme.yml").exists() + assert (result_dir / "result.yml").exists() + assert (result_dir / "initial_parameters.csv").exists() + assert (result_dir / "optimized_parameters.csv").exists() + assert (result_dir / "dataset1.nc").exists() + assert (result_dir / "dataset2.nc").exists() + assert (result_dir / "dataset3.nc").exists() diff --git a/glotaran/project/test/test_result.py b/glotaran/project/test/test_result.py new file mode 100644 index 000000000..8466d94cc --- /dev/null +++ b/glotaran/project/test/test_result.py @@ -0,0 +1,36 @@ +from __future__ import annotations + +import pytest + +from glotaran.analysis.optimize import optimize +from glotaran.analysis.simulation import simulate +from glotaran.analysis.test.models import ThreeDatasetDecay as suite +from glotaran.project import Scheme + + +@pytest.fixture(scope="session") +def dummy_result(): + """Dummy result for testing.""" + + model = suite.model + + model.is_grouped = False + model.is_index_dependent = False + + wanted_parameters = suite.wanted_parameters + data = {} + for i in range(3): + e_axis = getattr(suite, "e_axis" if i == 0 else f"e_axis{i+1}") + c_axis = getattr(suite, "c_axis" if i == 0 else f"c_axis{i+1}") + + data[f"dataset{i+1}"] = simulate( + suite.sim_model, f"dataset{i+1}", wanted_parameters, {"e": e_axis, "c": c_axis} + ) + scheme = Scheme( + model=suite.model, + parameters=suite.initial_parameters, + data=data, + maximum_number_function_evaluations=1, + ) + + yield optimize(scheme)