use rsp::database::{extract_metadata, is_audio_file}; use std::path::PathBuf; #[test] fn test_is_audio_file_mp3() { let path = PathBuf::from("/music/song.mp3"); assert!(is_audio_file(&path)); } #[test] fn test_is_audio_file_flac() { let path = PathBuf::from("/music/song.flac"); assert!(is_audio_file(&path)); } #[test] fn test_is_audio_file_ogg() { let path = PathBuf::from("/music/song.ogg"); assert!(is_audio_file(&path)); } #[test] fn test_is_audio_file_m4a() { let path = PathBuf::from("/music/song.m4a"); assert!(is_audio_file(&path)); } #[test] fn test_is_audio_file_wav() { let path = PathBuf::from("/music/song.wav"); assert!(is_audio_file(&path)); } #[test] fn test_is_audio_file_opus() { let path = PathBuf::from("/music/song.opus"); assert!(is_audio_file(&path)); } #[test] fn test_is_audio_file_uppercase() { let path = PathBuf::from("/music/song.MP3"); assert!(is_audio_file(&path)); } #[test] fn test_is_audio_file_non_audio() { let path = PathBuf::from("/music/song.txt"); assert!(!is_audio_file(&path)); } #[test] fn test_is_audio_file_no_extension() { let path = PathBuf::from("/music/songfile"); assert!(!is_audio_file(&path)); } #[test] fn test_extract_metadata_standard_path() { let path = PathBuf::from("/music/Artist/Album/Track.mp3"); let (artist, album, title, track_num, duration) = extract_metadata(&path); assert_eq!(artist, "Artist"); assert_eq!(album, "Album"); assert_eq!(title, "Track"); assert_eq!(track_num, None); assert_eq!(duration, None); } #[test] fn test_extract_metadata_deep_path() { let path = PathBuf::from("/music/Artist/Album/Disc1/Track.mp3"); let (artist, album, title, _, _) = extract_metadata(&path); assert_eq!(artist, "Album"); assert_eq!(album, "Disc1"); assert_eq!(title, "Track"); } #[test] fn test_extract_metadata_no_parent() { let path = PathBuf::from("/song.mp3"); let (artist, album, title, _, _) = extract_metadata(&path); assert_eq!(artist, "Unknown"); assert_eq!(album, "Unknown"); assert_eq!(title, "song"); }