-
Notifications
You must be signed in to change notification settings - Fork 3
/
02-playback.t
149 lines (105 loc) · 4.12 KB
/
02-playback.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#! /usr/bin/env perl6
use v6.c;
use lib "lib";
use Test;
plan 10;
use MPD::Client;
use MPD::Client::Playback;
use MPD::Client::Status;
use MPD::Client::Exceptions::ArgumentException;
my $conn = mpd-connect(host => "localhost");
subtest "consume" => {
plan 4;
ok mpd-consume(True, $conn), "Consume state set without error";
is mpd-status("consume", $conn), True, "Consume state is set";
ok mpd-consume( $conn), "Consume state toggled without error";
is mpd-status("consume", $conn), False, "Consume state is not set";
}
subtest "crossfade" => {
plan 4;
ok mpd-crossfade(10, $conn), "Crossfade state set without error";
is mpd-status("xfade", $conn), 10, "Check wether crossfade is applied properly";
ok mpd-crossfade($conn), "Crossfade state toggled without error";
is mpd-status("xfade", $conn), 0, "Check wether crossfade has been removed";
}
subtest "mixrampdb" => {
plan 7;
throws-like { mpd-mixrampdb(17, $conn) }, MPD::Client::Exceptions::ArgumentException, "Throws ArgumentException on positive decibel value";
ok mpd-mixrampdb(-17, $conn);
is mpd-status("mixrampdb", $conn), -17, "Check wether mixrampdb is applied properly";
ok mpd-mixrampdb(-17.7, $conn);
is-approx mpd-status("mixrampdb", $conn), -17.7, "Check wether mixrampdb is applied properly with a Rat";
ok mpd-mixrampdb($conn);
is mpd-status("mixrampdb", $conn), 0, "Check wether mixrampdb has been removed";
}
subtest "mixrampdelay" => {
plan 2;
mpd-mixrampdelay(5, $conn);
is mpd-status("mixrampdelay", $conn), 5, "Check wether mixrampdb is applied properly";
mpd-mixrampdelay($conn);
is mpd-status("mixrampdelay", $conn), 0, "Check wether mixrampdb has been removed";
}
subtest "random" => {
plan 3;
mpd-random(True, $conn);
is mpd-status("random", $conn), True, "Random state is set";
mpd-random(False, $conn);
is mpd-status("random", $conn), False, "Random state is not set";
mpd-random($conn);
is mpd-status("random", $conn), True, "Random state has been toggled";
}
subtest "repeat" => {
plan 3;
mpd-repeat(True, $conn);
is mpd-status("repeat", $conn), True, "Repeat state is set";
mpd-repeat(False, $conn);
is mpd-status("repeat", $conn), False, "Repeat state is not set";
mpd-repeat($conn);
is mpd-status("repeat", $conn), True, "Repeat state has been toggled";
}
subtest "setvol" => {
plan 5;
throws-like { mpd-setvol(-1, $conn) }, MPD::Client::Exceptions::ArgumentException, "Throws ArgumentException when negative";
throws-like { mpd-setvol(101, $conn) }, MPD::Client::Exceptions::ArgumentException, "Throws ArgumentException when above 100";
if (mpd-status("volume", $conn) < 0) {
skip-rest "volume control is not available";
} else {
mpd-setvol(0, $conn);
is mpd-status("volume", $conn), 0, "Set volume to 0";
mpd-setvol(100, $conn);
is mpd-status("volume", $conn), 100, "Set volume to 100";
mpd-setvol(42, $conn);
is mpd-status("volume", $conn), 42, "Set volume to 42";
}
}
subtest "single" => {
plan 3;
mpd-single(True, $conn);
is mpd-status("single", $conn), True, "Single state is set";
mpd-single(False, $conn);
is mpd-status("single", $conn), False, "Single state is not set";
mpd-single($conn);
is mpd-status("single", $conn), True, "Single state has been toggled";
}
subtest "replay-gain-mode" => {
plan 5;
mpd-replay-gain-mode("off", $conn);
is mpd-replay-gain-status("replay_gain_mode", $conn), "off", "Replay gain mode is turned off";
mpd-replay-gain-mode("track", $conn);
is mpd-replay-gain-status("replay_gain_mode", $conn), "track", "Replay gain mode is set to track";
mpd-replay-gain-mode("album", $conn);
is mpd-replay-gain-status("replay_gain_mode", $conn), "album", "Replay gain mode is set to album";
mpd-replay-gain-mode("auto", $conn);
is mpd-replay-gain-status("replay_gain_mode", $conn), "auto", "Replay gain mode is set to auto";
throws-like { mpd-replay-gain-mode("none", $conn); }, MPD::Client::Exceptions::ArgumentException, "Throws ArgumentException when given incorrect mode";
}
subtest "replay-gain-status" => {
my %response = mpd-replay-gain-status($conn);
my @keys = [
"replay_gain_mode",
];
plan (@keys.end + 1);
for @keys -> $key {
ok %response{$key}:exists, "$key exists";
}
}