From 7c9eb24db921f046b4879dbbd5c1a590b63d1aaa Mon Sep 17 00:00:00 2001 From: Mika Date: Sun, 15 Mar 2026 03:07:37 +0000 Subject: [PATCH] Add log_handler/tests/test_core.py --- log_handler/tests/test_core.py | 64 ++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 log_handler/tests/test_core.py diff --git a/log_handler/tests/test_core.py b/log_handler/tests/test_core.py new file mode 100644 index 0000000..ff5f6b8 --- /dev/null +++ b/log_handler/tests/test_core.py @@ -0,0 +1,64 @@ +import pytest +import tempfile +from pathlib import Path +from log_handler import core + + +@pytest.fixture +def sample_log_file(tmp_path: Path) -> Path: + sample_content = ("""2024-05-01 23:45:01, Temp=14.5C, SensorTemp=36.2C\n""" + "2024-05-01 23:50:01, Temp=14.7C, SensorTemp=36.4C\n""" + "Irrelevante Zeile ohne Daten\n""" + "2024-05-01 23:55:01, Temp=14.8C, SensorTemp=36.6C\n") + file_path = tmp_path / "sample_log.log" + file_path.write_text(sample_content) + return file_path + + +def test_parse_log_file_returns_list(sample_log_file: Path): + result = core.parse_log_file(str(sample_log_file)) + assert isinstance(result, list) + assert all(hasattr(r, "timestamp") for r in result) + assert all(hasattr(r, "temperature") for r in result) + assert all(hasattr(r, "sensor_temp") for r in result) + + +def test_parse_log_file_correct_values(sample_log_file: Path): + result = core.parse_log_file(str(sample_log_file)) + assert len(result) == 3 + first = result[0] + assert first.timestamp.startswith("2024-05-01 23:45") + assert 10.0 < first.temperature < 20.0 + assert 30.0 < first.sensor_temp < 40.0 + + +def test_parse_log_file_handles_invalid_lines(tmp_path: Path): + corrupted_file = tmp_path / "bad.log" + corrupted_file.write_text("no valid data here\n") + result = core.parse_log_file(str(corrupted_file)) + assert isinstance(result, list) + assert result == [] + + +def test_parse_log_file_invalid_input_type(): + with pytest.raises((TypeError, FileNotFoundError)): + core.parse_log_file(None) # type: ignore + + +def test_parse_log_file_nonexistent_file(): + with pytest.raises(FileNotFoundError): + core.parse_log_file("./does_not_exist.log") + + +def test_data_integrity_fields(sample_log_file: Path): + result = core.parse_log_file(str(sample_log_file)) + for entry in result: + assert isinstance(entry.timestamp, str) + assert isinstance(entry.temperature, float) + assert isinstance(entry.sensor_temp, float) + + +def test_parse_log_file_output_consistency(sample_log_file: Path): + result1 = core.parse_log_file(str(sample_log_file)) + result2 = core.parse_log_file(str(sample_log_file)) + assert result1 == result2 \ No newline at end of file