From 5f2d1897b245fbee12d17b5910eaf5233ca6802b Mon Sep 17 00:00:00 2001 From: salmonik Date: Tue, 5 May 2026 23:29:39 +0200 Subject: Add unit tests in /tests directory for config, database, playback, and scrobbler modules --- tests/database.rs | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 tests/database.rs (limited to 'tests/database.rs') diff --git a/tests/database.rs b/tests/database.rs new file mode 100644 index 0000000..67fe0ed --- /dev/null +++ b/tests/database.rs @@ -0,0 +1,85 @@ +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"); +} -- cgit v1.2.3