diff --git a/.gitignore b/.gitignore index 785c09b535592bba74f802f6d97c3e97f0e557f8..c2098da4dae9a32993e264c6bd5dbf8109b165a7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,11 @@ # Ignore compiled files *.pyc +# Ignore test files +/.coverage +/tests/.pytest_cache/ +/tests/sample_data/ +/tests/reference_results/ + # Ignore package build directory /toarstats.egg-info/ diff --git a/tests/.gitignore b/tests/.gitignore deleted file mode 100644 index be54f2bcb3b5f6e21ecf8a1d092f19810915bc58..0000000000000000000000000000000000000000 --- a/tests/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Ignore sample and reference data -/sample_data/ -/reference_results/ diff --git a/tests/create_data_metadata.py b/tests/create_data_metadata.py new file mode 100644 index 0000000000000000000000000000000000000000..e05782d3022ca7daf920db69678724424159c9c1 --- /dev/null +++ b/tests/create_data_metadata.py @@ -0,0 +1,57 @@ +from collections import namedtuple +from configparser import ConfigParser +from pathlib import Path + +import numpy as np +import pandas as pd +import pytest + + +def create_sample_data(sample_data_dir): + sample_data_dir.mkdir(exist_ok=True) + datetime_index = pd.date_range(start="2011-04-17 09:00", periods=100000, + freq="H") + values = np.random.default_rng().uniform(13.4, 61.7, len(datetime_index)) + values[np.random.default_rng().choice(values.size, + size=int(0.085*values.size), + replace=False)] = np.nan + pd.Series(values, datetime_index).dropna().to_csv( + Path(sample_data_dir, "sample_data.csv"), header=False + ) + Path(sample_data_dir, "sample_metadata.cfg").write_text( + "[METADATA]\n" + "station_lat: 50.906389\n" + "station_lon: 6.403889\n" + "station_climatic_zone: 3\n", + encoding="utf-8" + ) + + +@pytest.fixture +def sample_data(): + sample_data_file = Path( + Path(__file__).resolve().parent, "sample_data/sample_data.csv" + ) + if not sample_data_file.is_file(): + create_sample_data(sample_data_file.parent) + return pd.read_csv( + sample_data_file, + header=None, index_col=0, parse_dates=True + ) + + +@pytest.fixture +def sample_metadata(): + sample_metadata_file = Path( + Path(__file__).resolve().parent, "sample_data/sample_metadata.cfg" + ) + if not sample_metadata_file.is_file(): + create_sample_data(sample_metadata_file.parent) + parser = ConfigParser() + with open(sample_metadata_file, encoding="utf-8") as file: + parser.read_file(file) + Metadata = namedtuple("Metadata", ["station_lat", "station_lon", + "station_climatic_zone"]) + return Metadata(parser.getfloat("METADATA", "station_lat"), + parser.getfloat("METADATA", "station_lon"), + parser.getint("METADATA", "station_climatic_zone")) diff --git a/tests/test_metrics/test_metrics.py b/tests/test_metrics/test_metrics.py index e5020b5f997d16b4573a59b139cadb18338da6c5..3cb78c7258275891c221298162f8739affecc242 100644 --- a/tests/test_metrics/test_metrics.py +++ b/tests/test_metrics/test_metrics.py @@ -1,36 +1,15 @@ import ast -from collections import namedtuple -from configparser import ConfigParser from pathlib import Path import numpy as np import pandas as pd import pytest +from tests.create_data_metadata import sample_data, sample_metadata from toarstats.metrics.interface import calculate_statistics from toarstats.metrics.stats_utils import STATS_LIST -def create_sample_data(sample_data_dir): - sample_data_dir.mkdir(exist_ok=True) - datetime_index = pd.date_range(start="2011-04-17 09:00", periods=100000, - freq="H") - values = np.random.default_rng().uniform(13.4, 61.7, len(datetime_index)) - values[np.random.default_rng().choice(values.size, - size=int(0.085*values.size), - replace=False)] = np.nan - pd.Series(values, datetime_index).dropna().to_csv( - Path(sample_data_dir, "sample_data.csv"), header=False - ) - Path(sample_data_dir, "sample_metadata.cfg").write_text( - "[METADATA]\n" - "station_lat: 50.906389\n" - "station_lon: 6.403889\n" - "station_climatic_zone: 3\n", - encoding="utf-8" - ) - - def get_all_statistics(): return set(STATS_LIST) @@ -50,33 +29,6 @@ def get_all_samplings(): return samplings -@pytest.fixture -def sample_data(): - sample_data_file = Path( - Path(__file__).resolve().parent, "sample_data/sample_data.csv" - ) - if not sample_data_file.is_file(): - create_sample_data(sample_data_file.parent) - return pd.read_csv( - sample_data_file, - header=None, index_col=0, parse_dates=True - ) - - -@pytest.fixture -def sample_metadata(): - parser = ConfigParser() - with open(Path(Path(__file__).resolve().parent, - "sample_data/sample_metadata.cfg"), - encoding="utf-8") as file: - parser.read_file(file) - Metadata = namedtuple("Metadata", ["station_lat", "station_lon", - "station_climatic_zone"]) - return Metadata(parser.getfloat("METADATA", "station_lat"), - parser.getfloat("METADATA", "station_lon"), - parser.getint("METADATA", "station_climatic_zone")) - - def test_all_statistics_and_samplings_from_old_versions_implemented(): old_statistics = set() old_samplings = set()