import numpy as np from unittest.mock import patch, MagicMock def test_recorder_starts_and_stops(): from audio import AudioRecorder with patch("sounddevice.InputStream") as MockStream: mock_stream = MagicMock() MockStream.return_value.start = MagicMock() MockStream.return_value.stop = MagicMock() MockStream.return_value.close = MagicMock() recorder = AudioRecorder(sample_rate=16000) assert not recorder.is_recording recorder._stream = MockStream.return_value recorder.is_recording = True recorder.stop() assert not recorder.is_recording def test_recorder_save_wav(tmp_path): import wave from audio import AudioRecorder recorder = AudioRecorder(sample_rate=16000) recorder._buffer = [np.zeros(1600, dtype=np.int16)] out = str(tmp_path / "test.wav") recorder.save_wav(out) with wave.open(out) as wf: assert wf.getframerate() == 16000 assert wf.getnchannels() == 1