From e22f644d22ca0b9b3d72d4c80139b3757135e575 Mon Sep 17 00:00:00 2001 From: Mika Date: Sun, 31 May 2026 02:06:41 +0000 Subject: [PATCH] Add data_analysis/tests/test_core.py --- data_analysis/tests/test_core.py | 57 ++++++++++++++++++++++++++++++++ 1 file changed, 57 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..d802ecb --- /dev/null +++ b/data_analysis/tests/test_core.py @@ -0,0 +1,57 @@ +import json +import pandas as pd +import pytest +from pathlib import Path + +import src.data_analysis.core as core + + +@pytest.fixture() +def sample_data(tmp_path): + # Create a temporary CSV to simulate realistic temperature data + csv_path = tmp_path / "test_temperature_data.csv" + data = [ + ["Beton", 18.5, 0.95, "2024-08-01T22:00:00"], + ["Wasser", 17.1, 0.98, "2024-08-01T22:00:00"], + ["Luft", 19.0, 0.99, "2024-08-01T22:00:00"], + ["Beton", 17.8, 0.95, "2024-08-01T23:00:00"], + ["Wasser", 16.9, 0.98, "2024-08-01T23:00:00"], + ["Luft", 19.3, 0.99, "2024-08-01T23:00:00"], + ] + df = pd.DataFrame(data, columns=["surface", "temperature_c", "emissivity", "timestamp"]) + df.to_csv(csv_path, index=False) + return pd.read_csv(csv_path) + + +def test_analyze_temperature_data_returns_analysisresult(sample_data): + result = core.analyze_temperature_data(sample_data) + assert isinstance(result, core.AnalysisResult) + assert hasattr(result, "temperature_differences") + assert hasattr(result, "pattern_recognition") + + +def test_analysisresult_to_json_valid(sample_data): + result = core.analyze_temperature_data(sample_data) + json_output = result.to_json() + parsed = json.loads(json_output) + assert isinstance(parsed, dict) + assert "temperature_differences" in parsed + assert "pattern_recognition" in parsed + + +def test_analyze_temperature_data_edge_empty_dataframe(): + empty_df = pd.DataFrame(columns=["surface", "temperature_c", "emissivity", "timestamp"]) + with pytest.raises(ValueError): + core.analyze_temperature_data(empty_df) + + +def test_analysisresult_strict_type_validation(): + # Ensure that AnalysisResult enforces correct types or fails gracefully + with pytest.raises((TypeError, ValueError)): + _ = core.AnalysisResult(temperature_differences="wrong_type", pattern_recognition=123) + + +def test_pattern_recognition_nonempty(sample_data): + result = core.analyze_temperature_data(sample_data) + assert isinstance(result.pattern_recognition, str) + assert len(result.pattern_recognition) > 0