aboutsummaryrefslogtreecommitdiffstats
path: root/tests/database.rs
diff options
context:
space:
mode:
authorsalmonik <raisersoft@proton.me>2026-05-05 23:29:39 +0200
committersalmonik <raisersoft@proton.me>2026-05-05 23:29:39 +0200
commit5f2d1897b245fbee12d17b5910eaf5233ca6802b (patch)
tree551b8855ade2f31e0f24539504b0f9b66cdba75f /tests/database.rs
parentAdd dev/release config separation and volume query command (diff)
downloadrsplayer-5f2d1897b245fbee12d17b5910eaf5233ca6802b.tar.gz
rsplayer-5f2d1897b245fbee12d17b5910eaf5233ca6802b.zip
Add unit tests in /tests directory for config, database, playback, and scrobbler modules
Diffstat (limited to '')
-rw-r--r--tests/database.rs85
1 files changed, 85 insertions, 0 deletions
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 @@
1use rsp::database::{extract_metadata, is_audio_file};
2use std::path::PathBuf;
3
4#[test]
5fn test_is_audio_file_mp3() {
6 let path = PathBuf::from("/music/song.mp3");
7 assert!(is_audio_file(&path));
8}
9
10#[test]
11fn test_is_audio_file_flac() {
12 let path = PathBuf::from("/music/song.flac");
13 assert!(is_audio_file(&path));
14}
15
16#[test]
17fn test_is_audio_file_ogg() {
18 let path = PathBuf::from("/music/song.ogg");
19 assert!(is_audio_file(&path));
20}
21
22#[test]
23fn test_is_audio_file_m4a() {
24 let path = PathBuf::from("/music/song.m4a");
25 assert!(is_audio_file(&path));
26}
27
28#[test]
29fn test_is_audio_file_wav() {
30 let path = PathBuf::from("/music/song.wav");
31 assert!(is_audio_file(&path));
32}
33
34#[test]
35fn test_is_audio_file_opus() {
36 let path = PathBuf::from("/music/song.opus");
37 assert!(is_audio_file(&path));
38}
39
40#[test]
41fn test_is_audio_file_uppercase() {
42 let path = PathBuf::from("/music/song.MP3");
43 assert!(is_audio_file(&path));
44}
45
46#[test]
47fn test_is_audio_file_non_audio() {
48 let path = PathBuf::from("/music/song.txt");
49 assert!(!is_audio_file(&path));
50}
51
52#[test]
53fn test_is_audio_file_no_extension() {
54 let path = PathBuf::from("/music/songfile");
55 assert!(!is_audio_file(&path));
56}
57
58#[test]
59fn test_extract_metadata_standard_path() {
60 let path = PathBuf::from("/music/Artist/Album/Track.mp3");
61 let (artist, album, title, track_num, duration) = extract_metadata(&path);
62 assert_eq!(artist, "Artist");
63 assert_eq!(album, "Album");
64 assert_eq!(title, "Track");
65 assert_eq!(track_num, None);
66 assert_eq!(duration, None);
67}
68
69#[test]
70fn test_extract_metadata_deep_path() {
71 let path = PathBuf::from("/music/Artist/Album/Disc1/Track.mp3");
72 let (artist, album, title, _, _) = extract_metadata(&path);
73 assert_eq!(artist, "Album");
74 assert_eq!(album, "Disc1");
75 assert_eq!(title, "Track");
76}
77
78#[test]
79fn test_extract_metadata_no_parent() {
80 let path = PathBuf::from("/song.mp3");
81 let (artist, album, title, _, _) = extract_metadata(&path);
82 assert_eq!(artist, "Unknown");
83 assert_eq!(album, "Unknown");
84 assert_eq!(title, "song");
85}