test: bunch of tests
Written with AI, still need to check them ref: N25B-449
This commit is contained in:
@@ -5,6 +5,7 @@ import pytest
|
||||
import zmq
|
||||
|
||||
from control_backend.agents.perception.vad_agent import VADAgent
|
||||
from control_backend.core.config import settings
|
||||
|
||||
|
||||
# We don't want to use real ZMQ in unit tests, for example because it can give errors when sockets
|
||||
@@ -135,6 +136,54 @@ async def test_no_data(audio_out_socket, vad_agent):
|
||||
assert len(vad_agent.audio_buffer) == 0
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_streaming_loop_reset_needed(audio_out_socket, vad_agent):
|
||||
"""Test that _reset_needed branch works as expected."""
|
||||
vad_agent._reset_needed = True
|
||||
vad_agent._ready.set()
|
||||
vad_agent._paused.set()
|
||||
vad_agent._running = True
|
||||
vad_agent.audio_buffer = np.array([1.0], dtype=np.float32)
|
||||
vad_agent.i_since_speech = 0
|
||||
|
||||
# Mock _reset_stream to stop the loop by setting _running=False
|
||||
async def mock_reset():
|
||||
vad_agent._running = False
|
||||
|
||||
vad_agent._reset_stream = mock_reset
|
||||
|
||||
# Needs a poller to avoid AssertionError
|
||||
vad_agent.audio_in_poller = AsyncMock()
|
||||
vad_agent.audio_in_poller.poll.return_value = None
|
||||
|
||||
await vad_agent._streaming_loop()
|
||||
|
||||
assert vad_agent._reset_needed is False
|
||||
assert len(vad_agent.audio_buffer) == 0
|
||||
assert vad_agent.i_since_speech == settings.behaviour_settings.vad_initial_since_speech
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_streaming_loop_no_data_clears_buffer(audio_out_socket, vad_agent):
|
||||
"""Test that if poll returns None, buffer is cleared if not empty."""
|
||||
vad_agent.audio_buffer = np.array([1.0], dtype=np.float32)
|
||||
vad_agent._ready.set()
|
||||
vad_agent._paused.set()
|
||||
vad_agent._running = True
|
||||
|
||||
class MockPoller:
|
||||
async def poll(self, timeout_ms=None):
|
||||
vad_agent._running = False # stop after one poll
|
||||
return None
|
||||
|
||||
vad_agent.audio_in_poller = MockPoller()
|
||||
|
||||
await vad_agent._streaming_loop()
|
||||
|
||||
assert len(vad_agent.audio_buffer) == 0
|
||||
assert vad_agent.i_since_speech == settings.behaviour_settings.vad_initial_since_speech
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_vad_model_load_failure_stops_agent(vad_agent):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user