use super::*;
use audio_source::*;
#[tokio::test]
async fn test_file_track_audio_source_switching() {
let mut track = FileTrack::new("test-track".to_string())
.with_path("/tmp/hold-music.wav".to_string())
.with_loop(true);
let result = track.switch_audio_source("/tmp/ringback.wav".to_string(), false);
assert!(result.is_ok() || result.is_err()); }
#[tokio::test]
async fn test_audio_source_manager_file_switching() {
let manager = AudioSourceManager::new(8000);
manager.switch_to_silence();
assert!(manager.has_active_source());
let mut buffer = vec![0i16; 160];
let samples_read = manager.read_samples(&mut buffer);
assert_eq!(samples_read, 160);
assert!(buffer.iter().all(|&s| s == 0)); }
#[test]
fn test_resampling_audio_source_8k_to_16k() {
let silence = SilenceSource::new(8000);
let mut resampling = ResamplingAudioSource::new(Box::new(silence), 16000);
assert_eq!(resampling.sample_rate(), 16000);
assert_eq!(resampling.channels(), 1);
let mut buffer = vec![0i16; 320]; let samples_read = resampling.read_samples(&mut buffer);
assert!(samples_read > 0);
}
#[test]
fn test_file_audio_source_codec_detection() {
let result = FileAudioSource::new("/tmp/test.pcmu".to_string(), false);
assert!(result.is_ok() || result.is_err());
let result = FileAudioSource::new("/tmp/test.g722".to_string(), false);
assert!(result.is_ok() || result.is_err());
}
#[tokio::test]
async fn test_unified_pc_no_reinvite_needed() {
let track =
FileTrack::new("unified-pc-test".to_string()).with_path("/tmp/hold.wav".to_string());
let sdp1 = track.local_description().await;
assert!(sdp1.is_ok());
assert_eq!(track.id(), "unified-pc-test");
}
#[test]
fn test_audio_source_has_data() {
let mut silence = SilenceSource::new(8000);
assert!(silence.has_data());
assert_eq!(silence.sample_rate(), 8000);
assert_eq!(silence.channels(), 1);
let mut buffer = vec![0i16; 160];
let samples_read = silence.read_samples(&mut buffer);
assert_eq!(samples_read, 160);
}