Add log_handler/tests/test_core.py
This commit is contained in:
parent
198cc9bb85
commit
7c9eb24db9
1 changed files with 64 additions and 0 deletions
64
log_handler/tests/test_core.py
Normal file
64
log_handler/tests/test_core.py
Normal file
|
|
@ -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
|
||||||
Loading…
Reference in a new issue