From 5efdd533199971c1eb12dd60bdd9471c02a7d61c Mon Sep 17 00:00:00 2001 From: Bert Palm <bert.palm@ufz.de> Date: Mon, 30 May 2022 13:00:09 +0200 Subject: [PATCH] added ts_operator test --- tests/lib/test_ts_operators.py | 60 ++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/tests/lib/test_ts_operators.py b/tests/lib/test_ts_operators.py index 369c8f35c..4b6afaa81 100644 --- a/tests/lib/test_ts_operators.py +++ b/tests/lib/test_ts_operators.py @@ -6,6 +6,7 @@ import pytest import saqc.lib.ts_operators as tsops import pandas as pd +from pandas.testing import assert_series_equal def test_butterFilter(): @@ -45,3 +46,62 @@ F = False def test__exceedConsecutiveNanLimit(arr, maxc, expected): result = tsops._exceedConsecutiveNanLimit(arr, maxc) assert result is expected + + +def dtSeries(data, freq="1d"): + index = pd.date_range(start="2020", periods=len(data), freq=freq) + return pd.Series(data=data, index=index, dtype=float) + + +@pytest.mark.parametrize( + "func,data,expected", + [ + ("identity", dtSeries([1, 2]), dtSeries([1, 2])), + ("count", dtSeries([0, 0]), dtSeries([2])), + pytest.param( + "first", + dtSeries([1, 2]), + dtSeries([1, 1]), + marks=pytest.mark.xfail(reason="BUG (the inner ts.first need an argument)"), + ), + pytest.param( + "last", + dtSeries([1, 2]), + dtSeries([1, 1]), + marks=pytest.mark.xfail(reason="BUG (the inner ts.last need an argument)"), + ), + ( + "zeroLog", + dtSeries([1, 2, np.inf, np.nan]), + dtSeries([np.log(1), np.log(2), np.inf, np.nan]), + ), + pytest.param( + "zeroLog", + dtSeries( + [ + # 0, + -2, + -1, + -np.inf, + ] + ), + dtSeries([np.nan, np.nan, np.nan]), + marks=pytest.mark.xfail(reason="zeroLog(0) did not return NaN"), + ), + ], +) +def test_tsop_functions(func, data, expected): + f = getattr(tsops, func) + + resampler = data.resample("2d") + + result = resampler.apply(f) + assert isinstance(result, pd.Series) + + print() + print(result) + print() + print(expected) + assert_series_equal( + result, expected, check_names=False, check_freq=False, check_dtype=False + ) -- GitLab