#[cfg(test)]
mod test_audio_frames_utils {
use crate::player;
use tokio::fs::File;
#[tokio::test]
async fn load_file() {
let mut player = player::Player::new();
let path = "assets/audio_1.mp3";
let file = File::open(&path).await.unwrap();
assert!(player.load_file(file).await.is_ok());
assert!(player.is_file_loaded());
assert_eq!(player.duration().unwrap().as_secs_f32().round(), 238.0);
}
#[tokio::test]
async fn load_path() {
let mut player = player::Player::new();
let path = "assets/audio_1.mp3";
assert!(player.load_path(path).await.is_ok());
assert!(player.is_file_loaded());
assert_eq!(player.duration().unwrap().as_secs_f32().round(), 238.0);
}
#[tokio::test]
async fn volume() {
let mut player = player::Player::new();
let path = "assets/audio_1.mp3";
player.load_path(path).await.unwrap();
player.set_volume(0.5);
assert_eq!(player.volume(), 0.5);
}
#[tokio::test]
async fn play() {
let mut player = player::Player::new();
let path = "assets/audio_1.mp3";
player.load_path(path).await.unwrap();
player.set_volume(0.0);
player.play();
std::thread::sleep(std::time::Duration::from_secs(1));
let elapsed_1 = player.elapsed().unwrap().as_secs_f32();
std::thread::sleep(std::time::Duration::from_secs(2));
let elapsed_2 = player.elapsed().unwrap().as_secs_f32();
assert!(elapsed_1 < elapsed_2);
assert!(elapsed_2 > 1.0);
assert!(elapsed_2 > 3.0);
}
#[tokio::test]
async fn seek() {
let mut player = player::Player::new();
let path = "assets/audio_1.mp3";
player.load_path(path).await.unwrap();
player.set_volume(0.0);
player.play();
std::thread::sleep(std::time::Duration::from_secs(1));
player.seek(std::time::Duration::from_secs(10)).unwrap();
std::thread::sleep(std::time::Duration::from_secs(1));
let elapsed = player.elapsed().unwrap().as_secs_f32();
assert!(elapsed > 10.0);
assert!(elapsed < 12.0);
}
#[tokio::test]
async fn pause() {
let mut player = player::Player::new();
let path = "assets/audio_1.mp3";
player.load_path(path).await.unwrap();
player.set_volume(0.0);
player.play();
std::thread::sleep(std::time::Duration::from_secs(1));
player.pause();
std::thread::sleep(std::time::Duration::from_secs(1));
let elapsed_1 = player.elapsed().unwrap().as_secs_f32();
std::thread::sleep(std::time::Duration::from_secs(2));
let elapsed_2 = player.elapsed().unwrap().as_secs_f32();
assert_eq!(elapsed_1, elapsed_2);
}
#[tokio::test]
async fn stop() {
let mut player = player::Player::new();
let path = "assets/audio_1.mp3";
player.load_path(path).await.unwrap();
player.set_volume(0.0);
player.play();
player.stop();
assert!(player.elapsed().is_err());
assert!(player.duration().is_none());
assert!(!player.is_seekable());
assert!(!player.is_file_loaded());
}
}