From 4b6ded265485687513b128ba780c2ae737e6ff6d Mon Sep 17 00:00:00 2001 From: Mika Date: Sun, 15 Feb 2026 03:06:27 +0000 Subject: [PATCH] Add data_analysis/tests/test_core.py --- data_analysis/tests/test_core.py | 38 ++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 data_analysis/tests/test_core.py diff --git a/data_analysis/tests/test_core.py b/data_analysis/tests/test_core.py new file mode 100644 index 0000000..568861a --- /dev/null +++ b/data_analysis/tests/test_core.py @@ -0,0 +1,38 @@ +import pytest +from data_analysis import core +from types import SimpleNamespace + +@pytest.fixture +def sample_data(): + return [ + SimpleNamespace(timestamp='2024-06-14T00:00:00', voltage_mv=100.0, temperature_c=20.0, humidity_percent=50.0), + SimpleNamespace(timestamp='2024-06-14T00:10:00', voltage_mv=200.0, temperature_c=21.0, humidity_percent=52.0), + SimpleNamespace(timestamp='2024-06-14T00:20:00', voltage_mv=300.0, temperature_c=22.0, humidity_percent=55.0) + ] + +def test_analyze_data_return_type(sample_data): + report = core.analyze_data(sample_data) + assert isinstance(report, dict), 'SummaryReport sollte ein dict sein' + for key in ['max_voltage', 'min_voltage', 'average_voltage', 'correlation_with_weather']: + assert key in report, f'{key} fehlt im SummaryReport' + +def test_analyze_data_values(sample_data): + report = core.analyze_data(sample_data) + assert pytest.approx(report['max_voltage'], rel=1e-5) == 300.0 + assert pytest.approx(report['min_voltage'], rel=1e-5) == 100.0 + assert pytest.approx(report['average_voltage'], rel=1e-5) == 200.0 + assert isinstance(report['correlation_with_weather'], float) + +def test_analyze_data_empty_list(): + empty_data = [] + with pytest.raises(ValueError): + core.analyze_data(empty_data) + +def test_analyze_data_invalid_input(): + invalid_data = [1, 2, 3] + with pytest.raises(TypeError): + core.analyze_data(invalid_data) + +def test_analyze_data_float_precision(sample_data): + report = core.analyze_data(sample_data) + assert all(isinstance(v, float) for v in report.values()), 'Alle Werte im Report müssen floats sein' \ No newline at end of file