Add audio_signal_analysis/tests/test_core.py
This commit is contained in:
parent
77844d8849
commit
a14528ed83
1 changed files with 51 additions and 0 deletions
51
audio_signal_analysis/tests/test_core.py
Normal file
51
audio_signal_analysis/tests/test_core.py
Normal 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)
|
||||||
Loading…
Reference in a new issue