Add spike_classifier/tests/test_core.py

This commit is contained in:
Mika 2026-01-12 11:39:21 +00:00
parent 6d3e66951d
commit 4177b8a40b

View file

@ -0,0 +1,43 @@
import json
import os
import pytest
from spike_classifier import core
def load_test_data():
data_path = os.path.join(os.path.dirname(__file__), 'data', 'test_spikes.json')
with open(data_path, 'r', encoding='utf-8') as f:
return json.load(f)
def test_classify_spikes_returns_list():
json_data = load_test_data()
result = core.classify_spikes(json_data)
assert isinstance(result, list), 'Ergebnis sollte eine Liste sein.'
for item in result:
assert isinstance(item, dict), 'Jedes Element in der Liste sollte ein Dict sein.'
def test_spike_fields_present_and_types():
json_data = load_test_data()
results = core.classify_spikes(json_data)
required_fields = {'spike_id': str, 'cpu_path': str, 'reorder_score': float, 'timestamp': str, 'signature': str}
for spike in results:
for field, expected_type in required_fields.items():
assert field in spike, f"Feld {field} fehlt im Ergebnis."
assert isinstance(spike[field], expected_type), f"Feld {field} hat falschen Typ: {type(spike[field])} statt {expected_type}."
def test_reorder_score_range():
json_data = load_test_data()
results = core.classify_spikes(json_data)
for spike in results:
score = spike.get('reorder_score')
assert 0.0 <= score <= 1.0, 'reorder_score sollte zwischen 0.0 und 1.0 liegen.'
def test_unique_spike_ids():
json_data = load_test_data()
results = core.classify_spikes(json_data)
spike_ids = [s['spike_id'] for s in results]
assert len(spike_ids) == len(set(spike_ids)), 'spike_id-Werte sollten eindeutig sein.'