aboutsummaryrefslogtreecommitdiffstats
path: root/tests/playback.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/playback.rs175
1 files changed, 175 insertions, 0 deletions
diff --git a/tests/playback.rs b/tests/playback.rs
new file mode 100644
index 0000000..80ecf58
--- /dev/null
+++ b/tests/playback.rs
@@ -0,0 +1,175 @@
1use rsp::playback::{PlaybackState, Player, ShuffleMode, Track};
2use std::path::PathBuf;
3
4fn dummy_track(title: &str) -> Track {
5 Track {
6 path: PathBuf::from(format!("/music/{}", title)),
7 title: title.to_string(),
8 artist: "Test Artist".to_string(),
9 album: "Test Album".to_string(),
10 duration: Some(180000),
11 }
12}
13
14#[test]
15fn test_player_default_state() {
16 let player = Player::new();
17 assert_eq!(player.state(), &PlaybackState::Stopped);
18 assert_eq!(player.volume(), 70);
19}
20
21#[test]
22fn test_player_play_with_track_in_queue() {
23 let mut player = Player::new();
24 player.queue_track(dummy_track("Test Track"), "last");
25 player.play();
26 assert_eq!(player.state(), &PlaybackState::Playing);
27 assert!(player.current_track.is_some());
28 assert!(player.queue.is_empty());
29}
30
31#[test]
32fn test_player_play_with_no_track() {
33 let mut player = Player::new();
34 player.play();
35 assert_eq!(player.state(), &PlaybackState::Stopped);
36}
37
38#[test]
39fn test_player_play_track() {
40 let mut player = Player::new();
41 player.play_track(dummy_track("Test Track"));
42 assert_eq!(player.state(), &PlaybackState::Playing);
43 assert!(player.current_track.is_some());
44}
45
46#[test]
47fn test_player_pause() {
48 let mut player = Player::new();
49 player.play_track(dummy_track("Test Track"));
50 player.pause();
51 assert_eq!(player.state(), &PlaybackState::Paused);
52}
53
54#[test]
55fn test_player_pause_when_stopped() {
56 let mut player = Player::new();
57 player.pause();
58 assert_eq!(player.state(), &PlaybackState::Stopped);
59}
60
61#[test]
62fn test_player_resume() {
63 let mut player = Player::new();
64 player.play_track(dummy_track("Test Track"));
65 player.pause();
66 player.resume();
67 assert_eq!(player.state(), &PlaybackState::Playing);
68}
69
70#[test]
71fn test_player_resume_when_stopped() {
72 let mut player = Player::new();
73 player.resume();
74 assert_eq!(player.state(), &PlaybackState::Stopped);
75}
76
77#[test]
78fn test_player_stop() {
79 let mut player = Player::new();
80 player.play_track(dummy_track("Test Track"));
81 player.stop();
82 assert_eq!(player.state(), &PlaybackState::Stopped);
83 assert!(player.current_track.is_none());
84}
85
86#[test]
87fn test_player_next_with_queue() {
88 let mut player = Player::new();
89 player.queue_track(dummy_track("Track 1"), "last");
90 player.queue_track(dummy_track("Track 2"), "last");
91 player.next();
92 assert_eq!(player.current_track.as_ref().unwrap().title, "Track 1");
93}
94
95#[test]
96fn test_player_next_empty_queue() {
97 let mut player = Player::new();
98 player.next();
99 assert_eq!(player.state(), &PlaybackState::Stopped);
100 assert!(player.current_track.is_none());
101}
102
103#[test]
104fn test_player_previous() {
105 let mut player = Player::new();
106 player.play_track(dummy_track("Test Track"));
107 player.previous();
108 assert_eq!(player.state(), &PlaybackState::Playing);
109}
110
111#[test]
112fn test_player_set_volume() {
113 let mut player = Player::new();
114 player.set_volume(50);
115 assert_eq!(player.volume(), 50);
116}
117
118#[test]
119fn test_player_set_volume_caps_at_100() {
120 let mut player = Player::new();
121 player.set_volume(150);
122 assert_eq!(player.volume(), 100);
123}
124
125#[test]
126fn test_player_set_shuffle() {
127 let mut player = Player::new();
128 player.set_shuffle(ShuffleMode::All);
129 assert_eq!(player.shuffle, ShuffleMode::All);
130}
131
132#[test]
133fn test_player_queue_track_now() {
134 let mut player = Player::new();
135 player.queue_track(dummy_track("Track 1"), "now");
136 assert_eq!(player.queue.len(), 1);
137 assert_eq!(player.queue[0].title, "Track 1");
138}
139
140#[test]
141fn test_player_queue_track_next() {
142 let mut player = Player::new();
143 player.queue_track(dummy_track("Track 1"), "last");
144 player.queue_track(dummy_track("Track 2"), "next");
145 assert_eq!(player.queue.len(), 2);
146 assert_eq!(player.queue[0].title, "Track 1");
147 assert_eq!(player.queue[1].title, "Track 2");
148}
149
150#[test]
151fn test_player_queue_track_last() {
152 let mut player = Player::new();
153 player.queue_track(dummy_track("Track 1"), "last");
154 player.queue_track(dummy_track("Track 2"), "last");
155 assert_eq!(player.queue.len(), 2);
156 assert_eq!(player.queue[0].title, "Track 1");
157 assert_eq!(player.queue[1].title, "Track 2");
158}
159
160#[test]
161fn test_player_dequeue_next() {
162 let mut player = Player::new();
163 player.queue_track(dummy_track("Track 1"), "last");
164 let track = player.dequeue_next();
165 assert!(track.is_some());
166 assert_eq!(track.unwrap().title, "Track 1");
167 assert!(player.queue.is_empty());
168}
169
170#[test]
171fn test_player_dequeue_next_empty() {
172 let mut player = Player::new();
173 let track = player.dequeue_next();
174 assert!(track.is_none());
175}