Add audio_signal_analysis/tests/test_core.py

This commit is contained in:
Mika 2026-06-21 02:07:25 +00:00
parent 77844d8849
commit a14528ed83

View file

@ -0,0 +1,51 @@
import pytest
import numpy as np
from audio_signal_analysis import core
def make_audio_data(sample_count=10):
# Erzeugt synthetische Audiodaten mit gleichmäßig verteilten Timestamps
return [{
'timestamp': f'2024-06-01T00:{i:02d}:00Z',
'audio_level': float(i)
} for i in range(sample_count)]
def test_analyze_audio_signal_returns_float(mocker):
# Mock der Temperaturdaten (internes Lesen wird ggf. innerhalb core realisiert)
audio_data = make_audio_data(20)
result = core.analyze_audio_signal(audio_data)
assert isinstance(result, float), 'Rückgabewert muss float sein.'
def test_analyze_audio_signal_value_range():
audio_data = make_audio_data(15)
corr = core.analyze_audio_signal(audio_data)
# Erwartung: Wert liegt typischerweise zwischen -1 und 1
assert -1.0 <= corr <= 1.0, 'Korrelationskoeffizient außerhalb des gültigen Bereichs.'
def test_analyze_audio_signal_with_minimal_input():
# Edge Case: Nur zwei Datenpunkte minimale sinnvolle Menge zur Korrelation
audio_data = make_audio_data(2)
result = core.analyze_audio_signal(audio_data)
assert isinstance(result, float)
def test_analyze_audio_signal_invalid_input():
# Fehlerhafte Eingabe (kein numerischer Pegel)
invalid_data = [{'timestamp': '2024-06-01T00:00:00Z', 'audio_level': 'not_a_number'}]
with pytest.raises((TypeError, ValueError)):
core.analyze_audio_signal(invalid_data)
def test_analyze_audio_signal_randomized():
# Test mit zufallig generierten Audiopegeln, Erwartung: Ergebnis berechenbar
np.random.seed(42)
audio_data = [{
'timestamp': f'2024-06-01T00:{i:02d}:00Z',
'audio_level': float(val)
} for i, val in enumerate(np.random.randn(50))]
corr_val = core.analyze_audio_signal(audio_data)
assert isinstance(corr_val, float)
assert not np.isnan(corr_val)