From 4177b8a40b6faeec10c469bfbbf893054d250fd2 Mon Sep 17 00:00:00 2001 From: Mika Date: Mon, 12 Jan 2026 11:39:21 +0000 Subject: [PATCH] Add spike_classifier/tests/test_core.py --- spike_classifier/tests/test_core.py | 43 +++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 spike_classifier/tests/test_core.py diff --git a/spike_classifier/tests/test_core.py b/spike_classifier/tests/test_core.py new file mode 100644 index 0000000..679570e --- /dev/null +++ b/spike_classifier/tests/test_core.py @@ -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.'