ruby-mpd 0.2.6 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ea50c78be2957c3c8baa9a4f5dfb7fde0f789c16
4
- data.tar.gz: 4f42a33ba182a33ebfeeeb1b969c03510051fb38
3
+ metadata.gz: abe8c832ca9a5b9254a92bfe8927b132c3bbe498
4
+ data.tar.gz: dbb36caae0622e63cc70149924911dec0d1abde1
5
5
  SHA512:
6
- metadata.gz: 394b4830f32257749942a3a01faf8b41a2ef69dd3292430883956f34ff39d4f1298c78262c1039f7a45c5dc941a0d7ffbb8ab9780af37dfedd06fb63aebb5e4d
7
- data.tar.gz: 02c228eec5ab7e2d1ce4014c761a1e3fdeca8ae12051f4457d68e9c7d777dc4ee6abf2993f1c8b4fa9e27ff3a105426ef3a7bb76aae0fa2562abc16e1b9260c8
6
+ metadata.gz: 861e3e63f0a6faeff4794b226e38475ea404c20d1f9a3fcb2b9eb37b0394f090aa6a933c134f2e2d389b8134107a859df94e26f86ab56e93e352e30bd416b12c
7
+ data.tar.gz: 35d40fc9e2b6ee08d6b564c7ec1f7b301699bec390248fc0bc270a1a1b68d56b3906a2010c9734efeb31363c5b64b5f4b8ea566c6a08da0c594b6fd967c5b873
@@ -39,9 +39,9 @@ When you are done, disconnect by calling disconnect.
39
39
 
40
40
  mpd.disconnect
41
41
 
42
- *Note*: The server may disconnect you at any time due to inactivity. This can
43
- be fixed by enabling callbacks (see the Callbacks section) or by issuing a
44
- `ping` command at certain intervals.
42
+ *Note*: In the past, one had to tackle the issue of the server possibly disconnecting
43
+ the client at any time due to inactivity. Since 0.3.0, this is handled automatically
44
+ via a reconnect mechanism.
45
45
 
46
46
  Once connected, you can issue commands to talk to the server.
47
47
 
@@ -143,14 +143,12 @@ certain connection.
143
143
  Callbacks are a simple way to make your client respond to events, rather that
144
144
  have to continuously ask the server for updates. This allows you to focus on
145
145
  displaying the data, rather that working overly hard to get it. This is done
146
- by having a background thread continuously check the server for changes. Because
147
- of this thead, enabling callbacks also means your client will stay connected to
148
- the server without having to worry about timeouts.
146
+ by having a background thread continuously check the server for changes.
149
147
 
150
148
  To make use of callbacks, we need to:
151
149
 
152
150
  1. Setup a callback to be called when something happens.
153
- 2. Connect to the server with callbacks enabled.
151
+ 2. Create a MPD client instance with callbacks enabled.
154
152
 
155
153
  Firstly, we need to create a callback block and subscribe it, so that will get
156
154
  triggered whenever a specific event happens. When the callback is triggered,
@@ -217,16 +215,14 @@ in order to recieve those values:
217
215
  puts args.join(',')
218
216
  end
219
217
 
220
- Finally, the easiest step. In order for callbacks to work, connect to the server
218
+ Finally, the easiest step. In order for callbacks to work, create a MPD instance
221
219
  with callbacks enabled:
222
220
 
223
- mpd.connect(callbacks: true)
221
+ MPD.new('localhost', 6600, {callbacks: true})
224
222
 
225
223
  Easy as pie. The above will connect to the server like normal, but this time it will
226
224
  create a new thread that loops until you issue a `disconnect`. This loop checks the
227
- server, then sleeps for two tenths of a second, then loops. Because it's continuously
228
- polling the server, there's the added benefit of your client not being disconnected
229
- due to inactivity.
225
+ server, then sleeps for two tenths of a second, then loops.
230
226
 
231
227
  == Not yet implemented
232
228
 
@@ -0,0 +1,6 @@
1
+ require 'rake/testtask'
2
+ Rake::TestTask.new(:test) do |test|
3
+ test.verbose = true
4
+ end
5
+
6
+ task :default => :test
@@ -44,9 +44,17 @@ class MPD
44
44
 
45
45
  # Initialize an MPD object with the specified hostname and port.
46
46
  # When called without arguments, 'localhost' and 6600 are used.
47
- def initialize(hostname = 'localhost', port = 6600)
47
+ #
48
+ # When called with +callbacks: true+ as an optional argument,
49
+ # callbacks will be enabled by starting a separate polling thread.
50
+ #
51
+ # @param [String] hostname Hostname of the daemon
52
+ # @param [Integer] port Port of the daemon
53
+ # @param [Hash] opts Optional parameters. Currently accepts +callbacks+
54
+ def initialize(hostname = 'localhost', port = 6600, opts = {})
48
55
  @hostname = hostname
49
56
  @port = port
57
+ @options = {callbacks: false}.merge(opts)
50
58
  reset_vars
51
59
 
52
60
  @mutex = Mutex.new
@@ -105,14 +113,12 @@ class MPD
105
113
  status[:time] = [nil, nil] if !status[:time] # elapsed, total
106
114
  status[:audio] = [nil, nil, nil] if !status[:audio] # samp, bits, chans
107
115
 
116
+ status[:song] = mpd.current_song
117
+
108
118
  status.each do |key, val|
109
119
  next if val == old_status[key] # skip unchanged keys
110
-
111
- if key == :song
112
- emit(:song, mpd.current_song)
113
- else # convert arrays to splat arguments
114
- val.is_a?(Array) ? emit(key, *val) : emit(key, val)
115
- end
120
+ # convert arrays to splat arguments
121
+ val.is_a?(Array) ? emit(key, *val) : emit(key, val)
116
122
  end
117
123
 
118
124
  old_status = status
@@ -136,13 +142,9 @@ class MPD
136
142
  # When called without any arguments, this will just connect to the server
137
143
  # and wait for your commands.
138
144
  #
139
- # When called with +callbacks: true+ as an argument, this will enable callbacks by starting
140
- # a seperate polling thread, which will also automatically reconnect if disconnected
141
- # for whatever reason.
142
- #
143
145
  # @return [true] Successfully connected.
144
146
  # @raise [MPDError] If connect is called on an already connected instance.
145
- def connect(opts = {callbacks: false})
147
+ def connect(callbacks = nil)
146
148
  raise ConnectionError, 'Already connected!' if self.connected?
147
149
 
148
150
  @socket = File.exists?(@hostname) ? UNIXSocket.new(@hostname) : TCPSocket.new(@hostname, @port)
@@ -156,12 +158,12 @@ class MPD
156
158
  raise ConnectionError, 'Unable to connect (possibly too many connections open)'
157
159
  end
158
160
 
159
- if opts == true || opts == false
160
- warn "Using 'true' or 'false' as an argument to #connect has been deprecated, and will be removed in the future!"
161
- opts = {callbacks: opts}
161
+ if callbacks
162
+ warn "Using 'true' or 'false' as an argument to MPD#connect has been deprecated, and will be removed in the future!"
163
+ @options.merge!(callbacks: callbacks)
162
164
  end
163
165
 
164
- callback_thread if opts[:callbacks]
166
+ callback_thread if @options[:callbacks]
165
167
  return true
166
168
  end
167
169
 
@@ -184,12 +186,24 @@ class MPD
184
186
 
185
187
  return false if !@socket
186
188
 
187
- @socket.puts 'close'
188
- @socket.close
189
+ begin
190
+ @socket.puts 'close'
191
+ @socket.close
192
+ rescue Errno::EPIPE
193
+ # socket was forcefully closed
194
+ end
195
+
189
196
  reset_vars
190
197
  return true
191
198
  end
192
199
 
200
+ # Attempts to reconnect to the MPD daemon.
201
+ # @return [Boolean] True if successfully reconnected, false otherwise.
202
+ def reconnect
203
+ disconnect
204
+ connect
205
+ end
206
+
193
207
  # Kills the MPD process.
194
208
  # @macro returnraise
195
209
  def kill
@@ -227,8 +241,8 @@ class MPD
227
241
  response = handle_server_response
228
242
  return parse_response(command, response)
229
243
  rescue Errno::EPIPE
230
- reset_vars # kill the socket and reset
231
- raise ConnectionError, 'Broken pipe (got disconnected)'
244
+ reconnect
245
+ retry
232
246
  end
233
247
  end
234
248
  end
@@ -44,7 +44,6 @@ class MPD
44
44
  FLOAT_KEYS = [:mixrampdb, :elapsed]
45
45
  BOOL_KEYS = [:repeat, :random, :single, :consume, :outputenabled]
46
46
 
47
-
48
47
  # Commands, where it makes sense to always explicitly return an array.
49
48
  RETURN_ARRAY = [:channels, :outputs, :readmessages, :list,
50
49
  :listallinfo, :find, :search, :listplaylists, :listplaylist, :playlistfind,
@@ -20,7 +20,7 @@ class MPD::Song
20
20
 
21
21
  # Two songs are the same when they are the same file.
22
22
  def ==(another)
23
- self.file == another.file
23
+ self.class == another.class && self.file == another.file
24
24
  end
25
25
 
26
26
  # @return [String] A formatted representation of the song length ("1:02")
@@ -1,3 +1,3 @@
1
1
  class MPD
2
- VERSION = '0.2.6'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -0,0 +1,52 @@
1
+ require_relative '../lib/ruby-mpd'
2
+ require 'minitest/autorun'
3
+
4
+ Parser = Class.new do
5
+ include MPD::Parser
6
+ end
7
+ Parser.send(:public, *MPD::Parser.private_instance_methods)
8
+
9
+ class TestParser < MiniTest::Test
10
+
11
+ def setup
12
+ @parser = Parser.new
13
+ end
14
+
15
+ def teardown
16
+
17
+ end
18
+
19
+ # Conversions for commands to the server
20
+ def test_convert_bool
21
+ assert_equal @parser.convert_command(:pause, true), 'pause 1'
22
+ assert_equal @parser.convert_command(:pause, false), 'pause 0'
23
+ end
24
+
25
+ def test_convert_range
26
+ # inclusive range
27
+ assert_equal @parser.convert_command(:playlistinfo, 1..10), 'playlistinfo 1:11'
28
+ # exclusive range
29
+ assert_equal @parser.convert_command(:playlistinfo, 2...5), 'playlistinfo 2:5'
30
+
31
+ # negative means "till end of range"
32
+ assert_equal @parser.convert_command(:playlistinfo, 2...-1), 'playlistinfo 2:'
33
+ end
34
+
35
+ def test_convert_escape_whitespace
36
+ assert_equal @parser.convert_command(:lsinfo, '/media/Storage/epic music'), 'lsinfo "/media/Storage/epic music"'
37
+ end
38
+
39
+ # Parse replies from server
40
+ def test_parse_empty_listall_command
41
+ assert_equal @parser.parse_response(:listall, ''), {}
42
+ end
43
+
44
+ def test_parse_playlist_uint
45
+ assert_equal @parser.parse_key(:playlist, '31'), 31
46
+ end
47
+
48
+ def test_parse_playlist_name
49
+ assert_equal @parser.parse_key(:playlist, 'leftover/classics.m3u'), 'leftover/classics.m3u'
50
+ end
51
+
52
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-mpd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blaž Hrastnik
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-23 00:00:00.000000000 Z
11
+ date: 2013-09-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A powerful, modern and feature complete library for the Music Player
14
14
  Daemon.
@@ -21,6 +21,7 @@ files:
21
21
  - .gitignore
22
22
  - COPYING
23
23
  - README.rdoc
24
+ - Rakefile
24
25
  - lib/ruby-mpd.rb
25
26
  - lib/ruby-mpd/exceptions.rb
26
27
  - lib/ruby-mpd/parser.rb
@@ -38,7 +39,7 @@ files:
38
39
  - lib/ruby-mpd/song.rb
39
40
  - lib/ruby-mpd/version.rb
40
41
  - ruby-mpd.gemspec
41
- - test/libtests.rb
42
+ - test/test_parser.rb
42
43
  homepage: https://github.com/archSeer/ruby-mpd
43
44
  licenses: []
44
45
  metadata: {}
@@ -63,5 +64,5 @@ signing_key:
63
64
  specification_version: 4
64
65
  summary: Modern client library for MPD
65
66
  test_files:
66
- - test/libtests.rb
67
+ - test/test_parser.rb
67
68
  has_rdoc:
@@ -1,1134 +0,0 @@
1
- #
2
- # Unit tests for ruby-mpd
3
- #
4
-
5
- require '../lib/ruby-mpd'
6
- require 'test/unit'
7
-
8
- class MPDTester < Test::Unit::TestCase
9
-
10
- def setup
11
- begin
12
- @mpd = MPD.new 'localhost', 94942
13
- end
14
-
15
- def teardown
16
- @mpd.disconnect
17
- end
18
-
19
- def test_connect
20
- ret = @mpd.connect
21
- assert ret
22
- end
23
-
24
- def test_connected?
25
- # test a good connection
26
- @mpd.connect
27
- assert @mpd.connected?
28
-
29
- # Test a disconnect
30
- @server.stop
31
- assert !@mpd.connected?
32
-
33
- # test a bad connection
34
- bad = MPD.new 'no-connection', 6600
35
- assert !bad.connected?
36
- end
37
-
38
- def test_disconnect
39
- # test a good connection
40
- @mpd.connect
41
- assert @mpd.connected?
42
- @mpd.disconnect
43
- assert !@mpd.connected?
44
- @mpd.disconnect
45
- assert !@mpd.connected?
46
-
47
- # test a bad connection
48
- bad = MPD.new 'no-connection'
49
- bad.disconnect
50
- assert !bad.connected?
51
- end
52
-
53
- def test_add
54
- @mpd.connect
55
- assert @mpd.connected?
56
-
57
- assert @mpd.add('Shpongle/Are_You_Shpongled/1.Shpongle_Falls.ogg')
58
-
59
- pls = @mpd.playlist
60
- assert_equal 1, pls.size
61
- assert_equal 'Shpongle', pls[0].artist
62
- assert_equal 'Are You Shpongled?', pls[0].album
63
- assert_equal 'Shpongle Falls', pls[0].title
64
-
65
- assert_raise(MPD::ServerError) {@mpd.add('Does/Not/Exist')}
66
-
67
- @mpd.disconnect
68
- assert_raise(MPD::ServerError) {@mpd.add('Shpongle')}
69
- end
70
-
71
- def test_clear
72
- @mpd.connect
73
- assert @mpd.connected?
74
-
75
- assert @mpd.add('Shpongle')
76
-
77
- pls = @mpd.playlist
78
- assert_equal 27, pls.size
79
-
80
- assert @mpd.clear
81
-
82
- pls = @mpd.playlist
83
- assert_equal 0, pls.size
84
-
85
- @mpd.disconnect
86
- assert_raise(MPD::ServerError) {@mpd.clear}
87
- end
88
-
89
- def test_clearerror
90
- @mpd.connect
91
- assert @mpd.connected?
92
-
93
- assert @mpd.clearerror
94
-
95
- @mpd.disconnect
96
- assert_raise(MPD::ServerError) {@mpd.clearerror}
97
- end
98
-
99
- def test_crossfade
100
- @mpd.connect
101
-
102
- @mpd.crossfade = 40
103
-
104
- assert_equal 40, @mpd.crossfade
105
- assert_equal '40', @mpd.status['xfade']
106
-
107
- @mpd.disconnect
108
- assert_raise(MPD::ServerError) {@mpd.crossfade = 20}
109
- assert_raise(MPD::ServerError) {@mpd.crossfade}
110
- end
111
-
112
- def test_current_song
113
- @mpd.connect
114
-
115
- s = @mpd.current_song
116
- assert_nil s
117
-
118
- assert @mpd.add('Shpongle/Are_You_Shpongled/1.Shpongle_Falls.ogg')
119
-
120
- assert @mpd.play
121
-
122
- sleep 2
123
-
124
- assert @mpd.playing?
125
-
126
- s = @mpd.current_song
127
-
128
- assert_equal 'Shpongle', s.artist
129
- assert_equal 'Are You Shpongled?', s.album
130
- assert_equal 'Shpongle Falls', s.title
131
- assert_equal '1', s.track
132
-
133
- @mpd.stop
134
-
135
- sleep 2
136
-
137
- assert !@mpd.playing?
138
-
139
- s = @mpd.current_song
140
-
141
- assert_equal 'Shpongle', s.artist
142
- assert_equal 'Are You Shpongled?', s.album
143
- assert_equal 'Shpongle Falls', s.title
144
- assert_equal '1', s.track
145
-
146
- @mpd.disconnect
147
- assert_raise(MPD::ServerError) {@mpd.current_song}
148
- end
149
-
150
- def test_delete
151
- @mpd.connect
152
-
153
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
154
-
155
- assert @mpd.delete(3)
156
-
157
- pls = @mpd.playlist
158
- assert_equal 7, pls.size
159
- pls.each do |song|
160
- assert_not_equal 'No On Ever Dreams', song.title
161
- end
162
-
163
- assert_raise(MPD::ServerError) {@mpd.delete(999)}
164
-
165
- @mpd.disconnect
166
- assert_raise(MPD::ServerError) {@mpd.delete(3)}
167
- end
168
-
169
- def test_deleteid
170
- @mpd.connect
171
-
172
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
173
-
174
- assert @mpd.deleteid(10)
175
-
176
- pls = @mpd.playlist
177
- assert_equal 7, pls.size
178
- pls.each do |song|
179
- assert_not_equal 'No One Ever Dreams', song.title
180
- end
181
-
182
- assert_raise(MPD::ServerError) {@mpd.deleteid(999)}
183
-
184
- @mpd.disconnect
185
- assert_raise(MPD::ServerError) {@mpd.deleteid(11)}
186
- end
187
-
188
- def test_find
189
- @mpd.connect
190
-
191
- a = @mpd.find 'album', 'Are You Shpongled?'
192
- assert_equal 7, a.size
193
- assert_equal 'Shpongle Falls', a[0].title
194
- assert_equal 'Monster Hit', a[1].title
195
- assert_equal 'Vapour Rumours', a[2].title
196
- assert_equal 'Shpongle Spores', a[3].title
197
- assert_equal 'Behind Closed Eyelids', a[4].title
198
- assert_equal 'Divine Moments of Truth', a[5].title
199
- assert_equal '... and the Day Turned to Night', a[6].title
200
-
201
- b = @mpd.find 'artist', 'Carbon Based Lifeforms'
202
- assert_equal 11, b.size
203
- assert_equal 'Central Plains', b[0].title
204
- assert_equal 'Tensor', b[1].title
205
- assert_equal 'MOS 6581 (Album Version)', b[2].title
206
- assert_equal 'Silent Running', b[3].title
207
- assert_equal 'Neurotransmitter', b[4].title
208
- assert_equal 'Hydroponic Garden', b[5].title
209
- assert_equal 'Exosphere', b[6].title
210
- assert_equal 'Comsat', b[7].title
211
- assert_equal 'Epicentre (First Movement)', b[8].title
212
- assert_equal 'Artificial Island', b[9].title
213
- assert_equal 'Refraction 1.33', b[10].title
214
-
215
- c = @mpd.find 'title', 'Silent Running'
216
- assert_equal 1, c.size
217
- assert_equal 'Silent Running', c[0].title
218
-
219
- d = @mpd.find 'artist', 'no artist'
220
- assert_equal 0, d.size
221
-
222
- assert_raise(MPD::ServerError) {@mpd.find('error', 'no-such')}
223
-
224
- @mpd.disconnect
225
- assert_raise(MPD::ServerError) {@mpd.find('album', 'Are You Shpongled')}
226
- end
227
-
228
- def test_kill
229
- @mpd.connect
230
-
231
- assert @mpd.kill
232
-
233
- assert !@mpd.connected?
234
-
235
- assert_raise(MPD::ServerError) {@mpd.kill}
236
- end
237
-
238
- def test_albums
239
- @mpd.connect
240
-
241
- albums = @mpd.albums
242
-
243
- assert_equal 4, albums.size
244
- assert_equal 'Are You Shpongled?', albums[0]
245
- assert_equal 'Dancing Galaxy', albums[1]
246
- assert_equal 'Hydroponic Garden', albums[2]
247
- assert_equal 'Nothing Lasts... But Nothing Is Lost', albums[3]
248
-
249
- sh = @mpd.albums 'Shpongle'
250
-
251
- assert_equal 2, sh.size
252
- assert_equal 'Are You Shpongled?', sh[0]
253
- assert_equal 'Nothing Lasts... But Nothing Is Lost', sh[1]
254
-
255
- @mpd.disconnect
256
- assert_raise(MPD::ServerError) {@mpd.albums}
257
- end
258
-
259
- def test_artists
260
- @mpd.connect
261
-
262
- artists = @mpd.artists
263
-
264
- assert_equal 3, artists.size
265
- assert_equal 'Astral Projection', artists[0]
266
- assert_equal 'Carbon Based Lifeforms', artists[1]
267
- assert_equal 'Shpongle', artists[2]
268
-
269
- @mpd.disconnect
270
- assert_raise(MPD::ServerError) {@mpd.artists}
271
- end
272
-
273
- def test_list
274
- @mpd.connect
275
-
276
- albums = @mpd.list 'album'
277
-
278
- assert_equal 4, albums.size
279
- assert_equal 'Are You Shpongled?', albums[0]
280
- assert_equal 'Dancing Galaxy', albums[1]
281
- assert_equal 'Hydroponic Garden', albums[2]
282
- assert_equal 'Nothing Lasts... But Nothing Is Lost', albums[3]
283
-
284
- artists = @mpd.list 'artist'
285
-
286
- assert_equal 3, artists.size
287
- assert_equal 'Astral Projection', artists[0]
288
- assert_equal 'Carbon Based Lifeforms', artists[1]
289
- assert_equal 'Shpongle', artists[2]
290
-
291
- arg = @mpd.list 'album', 'Shpongle'
292
-
293
- assert_equal 2, arg.size
294
- assert_equal 'Are You Shpongled?', arg[0]
295
- assert_equal 'Nothing Lasts... But Nothing Is Lost', arg[1]
296
-
297
- assert_raise(MPD::ServerError) {@mpd.list('fail')}
298
- assert_raise(MPD::ServerError) {@mpd.list('fail', 'Shpongle')}
299
-
300
- @mpd.disconnect
301
- assert_raise(MPD::ServerError) {@mpd.artists}
302
- end
303
-
304
- def test_directories
305
- @mpd.connect
306
-
307
- dirs = @mpd.directories
308
-
309
- assert_equal 7, dirs.size
310
- assert_equal 'Astral_Projection', dirs[0]
311
- assert_equal 'Astral_Projection/Dancing_Galaxy', dirs[1]
312
- assert_equal 'Carbon_Based_Lifeforms', dirs[2]
313
- assert_equal 'Carbon_Based_Lifeforms/Hydroponic_Garden', dirs[3]
314
- assert_equal 'Shpongle', dirs[4]
315
- assert_equal 'Shpongle/Are_You_Shpongled', dirs[5]
316
- assert_equal 'Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost', dirs[6]
317
-
318
- shpongle = @mpd.directories 'Shpongle'
319
-
320
- assert_equal 3, shpongle.size
321
- assert_equal 'Shpongle', shpongle[0]
322
- assert_equal 'Shpongle/Are_You_Shpongled', shpongle[1]
323
- assert_equal 'Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost', shpongle[2]
324
-
325
- assert_raise(MPD::ServerError) {@mpd.directories('no-dirs')}
326
-
327
- @mpd.disconnect
328
- assert_raise(MPD::ServerError) {@mpd.directories}
329
- end
330
-
331
- def test_files
332
- @mpd.connect
333
-
334
- files = @mpd.files
335
-
336
- assert_equal 46, files.size
337
-
338
- assert_equal 'Astral_Projection/Dancing_Galaxy/1.Dancing_Galaxy.ogg', files[0]
339
- assert_equal 'Astral_Projection/Dancing_Galaxy/8.Ambient_Galaxy_(Disco_Valley_Mix).ogg', files[7]
340
- assert_equal 'Carbon_Based_Lifeforms/Hydroponic_Garden/01.Central_Plains.ogg', files[8]
341
- assert_equal 'Carbon_Based_Lifeforms/Hydroponic_Garden/11.Refraction_1.33.ogg', files[18]
342
- assert_equal 'Shpongle/Are_You_Shpongled/1.Shpongle_Falls.ogg', files[19]
343
- assert_equal 'Shpongle/Are_You_Shpongled/7...._and_the_Day_Turned_to_Night.ogg', files[25]
344
- assert_equal 'Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/01.Botanical_Dimensions.ogg', files[26]
345
- assert_equal 'Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/20.Falling_Awake.ogg', files[45]
346
-
347
- sh = @mpd.files 'Shpongle'
348
-
349
- assert_equal 27, sh.size
350
-
351
- assert_equal 'Shpongle/Are_You_Shpongled/1.Shpongle_Falls.ogg', sh[0]
352
- assert_equal 'Shpongle/Are_You_Shpongled/7...._and_the_Day_Turned_to_Night.ogg', sh[6]
353
- assert_equal 'Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/01.Botanical_Dimensions.ogg', sh[7]
354
- assert_equal 'Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/20.Falling_Awake.ogg', sh[26]
355
-
356
- assert_raise(MPD::ServerError) {@mpd.files('no-files')}
357
-
358
- @mpd.disconnect
359
- assert_raise(MPD::ServerError) {@mpd.files}
360
- end
361
-
362
- def test_playlists
363
- @mpd.connect
364
-
365
- pls = @mpd.playlists
366
-
367
- assert_equal 2, pls.size
368
-
369
- assert_equal 'Shpongle_-_Are_You_Shpongled', pls[0]
370
- assert_equal 'Astral_Projection_-_Dancing_Galaxy', pls[1]
371
-
372
- @mpd.disconnect
373
- assert_raise(MPD::ServerError) {@mpd.playlists}
374
- end
375
-
376
- def test_songs
377
- @mpd.connect
378
-
379
- songs = @mpd.songs
380
-
381
- assert_equal 46, songs.size
382
-
383
- assert_equal 'Dancing Galaxy', songs[0].title
384
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', songs[7].title
385
- assert_equal 'Central Plains', songs[8].title
386
- assert_equal 'Refraction 1.33', songs[18].title
387
- assert_equal 'Shpongle Falls', songs[19].title
388
- assert_equal '... and the Day Turned to Night', songs[25].title
389
- assert_equal 'Botanical Dimensions', songs[26].title
390
- assert_equal 'Falling Awake', songs[45].title
391
-
392
- sh = @mpd.songs 'Shpongle'
393
-
394
- assert_equal 27, sh.size
395
-
396
- sh.each do |s|
397
- assert_equal 'Shpongle', s.artist
398
- end
399
-
400
- assert_equal 'Shpongle Falls', sh[0].title
401
- assert_equal '... and the Day Turned to Night', sh[6].title
402
- assert_equal 'Botanical Dimensions', sh[7].title
403
- assert_equal 'Falling Awake', sh[26].title
404
-
405
- assert_raise(MPD::ServerError) {@mpd.songs('no-songs')}
406
-
407
- @mpd.disconnect
408
- assert_raise(MPD::ServerError) {@mpd.songs}
409
- end
410
-
411
- def test_songs_by_artist
412
- @mpd.connect
413
-
414
- songs = @mpd.songs_by_artist 'Shpongle'
415
-
416
- assert_equal 27, songs.size
417
-
418
- songs.each do |s|
419
- assert_equal 'Shpongle', s.artist
420
- end
421
-
422
- assert_equal 'Shpongle Falls', songs[0].title
423
- assert_equal '... and the Day Turned to Night', songs[6].title
424
- assert_equal 'Botanical Dimensions', songs[7].title
425
- assert_equal 'Falling Awake', songs[26].title
426
-
427
- songs = @mpd.songs_by_artist 'no-songs'
428
- assert_equal 0, songs.size
429
-
430
- @mpd.disconnect
431
- assert_raise(MPD::ServerError) {@mpd.songs_by_artist('Shpongle')}
432
- end
433
-
434
- def test_load
435
- @mpd.connect
436
-
437
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
438
-
439
- pls = @mpd.playlist
440
-
441
- assert_equal 8, pls.size
442
-
443
- pls.each do |song|
444
- assert_equal 'Astral Projection', song.artist
445
- assert_equal 'Dancing Galaxy', song.album
446
- end
447
-
448
- assert_equal 'Dancing Galaxy', pls[0].title
449
- assert_equal 'Soundform', pls[1].title
450
- assert_equal 'Flying Into A Star', pls[2].title
451
- assert_equal 'No One Ever Dreams', pls[3].title
452
- assert_equal 'Cosmic Ascension (ft. DJ Jorg)', pls[4].title
453
- assert_equal 'Life On Mars', pls[5].title
454
- assert_equal 'Liquid Sun', pls[6].title
455
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', pls[7].title
456
-
457
- assert_raise(MPD::ServerError) {@mpd.load('No-PLS')}
458
-
459
- @mpd.disconnect
460
- assert_raise(MPD::ServerError) {@mpd.load('Astral_Projection_-_Dancing_Galaxy')}
461
- end
462
-
463
- def test_move
464
- @mpd.connect
465
-
466
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
467
-
468
- assert @mpd.move( 3, 1 )
469
-
470
- pls = @mpd.playlist
471
-
472
- assert_equal 'Dancing Galaxy', pls[0].title
473
- assert_equal 'No One Ever Dreams', pls[1].title
474
- assert_equal 'Soundform', pls[2].title
475
- assert_equal 'Flying Into A Star', pls[3].title
476
-
477
- assert @mpd.move( 2, 7 )
478
-
479
- pls = @mpd.playlist
480
-
481
- assert_equal 'No One Ever Dreams', pls[1].title
482
- assert_equal 'Flying Into A Star', pls[2].title
483
- assert_equal 'Cosmic Ascension (ft. DJ Jorg)', pls[3].title
484
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', pls[6].title
485
- assert_equal 'Soundform', pls[7].title
486
-
487
- assert_raise(MPD::ServerError) {@mpd.move(999,1)}
488
-
489
- @mpd.disconnect
490
- assert_raise(MPD::ServerError) {@mpd.move(3,1)}
491
- end
492
-
493
- def test_moveid
494
- @mpd.connect
495
-
496
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
497
-
498
- assert @mpd.moveid( 10, 1 )
499
-
500
- pls = @mpd.playlist
501
-
502
- assert_equal 'Dancing Galaxy', pls[0].title
503
- assert_equal 'No One Ever Dreams', pls[1].title
504
- assert_equal 'Soundform', pls[2].title
505
- assert_equal 'Flying Into A Star', pls[3].title
506
-
507
- assert @mpd.moveid( 8, 7 )
508
-
509
- pls = @mpd.playlist
510
-
511
- assert_equal 'No One Ever Dreams', pls[1].title
512
- assert_equal 'Flying Into A Star', pls[2].title
513
- assert_equal 'Cosmic Ascension (ft. DJ Jorg)', pls[3].title
514
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', pls[6].title
515
- assert_equal 'Soundform', pls[7].title
516
-
517
- assert_raise(MPD::ServerError) {@mpd.moveid(999,1)}
518
-
519
- @mpd.disconnect
520
- assert_raise(MPD::ServerError) {@mpd.moveid(10,1)}
521
-
522
- end
523
-
524
- def test_next
525
- @mpd.connect
526
-
527
- @mpd.load 'Astral_Projection_-_Dancing_Galaxy'
528
-
529
- @mpd.play 3
530
-
531
- pos = @mpd.status['song'].to_i
532
-
533
- assert @mpd.next
534
-
535
- assert_equal pos + 1, @mpd.status['song'].to_i
536
-
537
- @mpd.disconnect
538
- assert_raise(MPD::ServerError) {@mpd.next}
539
- end
540
-
541
- def test_pause
542
- @mpd.connect
543
- assert @mpd.connected?
544
-
545
- @mpd.load 'Astral_Projection_-_Dancing_Galaxy'
546
-
547
- assert @mpd.play
548
- assert @mpd.playing?
549
-
550
- @mpd.pause = true
551
- assert @mpd.paused?
552
-
553
- @mpd.pause = false
554
- assert !@mpd.paused?
555
-
556
- assert @mpd.stop
557
- assert @mpd.stopped?
558
-
559
- @mpd.pause = true
560
- assert @mpd.stopped?
561
-
562
- assert !@mpd.paused?
563
-
564
- @mpd.disconnect
565
- assert_raise(MPD::ServerError) {@mpd.pause = true}
566
- assert_raise(MPD::ServerError) {@mpd.paused?}
567
- end
568
-
569
- def test_password
570
- @mpd.connect
571
-
572
- assert_raise(MPD::ServerError) {@mpd.password('wrong')}
573
-
574
- assert @mpd.password('test')
575
-
576
- @mpd.disconnect
577
- assert_raise(MPD::ServerError) {@mpd.password('test')}
578
- end
579
-
580
- def test_ping
581
- @mpd.connect
582
-
583
- assert @mpd.ping
584
-
585
- @mpd.disconnect
586
- assert_raise(MPD::ServerError) {@mpd.ping}
587
- end
588
-
589
- def test_play
590
- @mpd.connect
591
- assert @mpd.connected?
592
-
593
- @mpd.load 'Astral_Projection_-_Dancing_Galaxy'
594
-
595
- assert @mpd.play
596
-
597
- sleep 2
598
-
599
- assert @mpd.playing?
600
-
601
- song = @mpd.current_song
602
-
603
- assert_equal 'Dancing Galaxy', song.title
604
-
605
- assert @mpd.play(2)
606
-
607
- sleep 2
608
-
609
- assert @mpd.playing?
610
-
611
- song = @mpd.current_song
612
-
613
- assert_equal 'Flying Into A Star', song.title
614
-
615
- @mpd.disconnect
616
- assert_raise(MPD::ServerError) {@mpd.play}
617
- assert_raise(MPD::ServerError) {@mpd.playing?}
618
- end
619
-
620
- def test_playid
621
- @mpd.connect
622
- assert @mpd.connected?
623
-
624
- @mpd.load 'Astral_Projection_-_Dancing_Galaxy'
625
-
626
- assert @mpd.playid
627
-
628
- sleep 2
629
-
630
- assert @mpd.playing?
631
-
632
- song = @mpd.current_song
633
-
634
- assert_equal 'Dancing Galaxy', song.title
635
-
636
- assert @mpd.playid(9)
637
-
638
- sleep 2
639
-
640
- assert @mpd.playing?
641
-
642
- song = @mpd.current_song
643
-
644
- assert_equal 'Flying Into A Star', song.title
645
-
646
- @mpd.disconnect
647
- assert_raise(MPD::ServerError) {@mpd.playid}
648
- assert_raise(MPD::ServerError) {@mpd.playing?}
649
-
650
- end
651
-
652
- def test_playlist_version
653
- @mpd.connect
654
-
655
- ver = @mpd.playlist_version
656
-
657
- assert_equal 1, ver
658
-
659
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
660
-
661
- ver = @mpd.playlist_version
662
-
663
- assert_equal 9, ver
664
-
665
- @mpd.disconnect
666
- assert_raise(MPD::ServerError) {@mpd.playlist_version}
667
- end
668
-
669
- def test_playlist
670
- @mpd.connect
671
-
672
- pls = @mpd.playlist
673
-
674
- assert_equal 0, pls.size
675
-
676
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
677
-
678
- pls = @mpd.playlist
679
-
680
- assert_equal 8, pls.size
681
-
682
- assert_equal 'Dancing Galaxy', pls[0].title
683
- assert_equal 'Soundform', pls[1].title
684
- assert_equal 'Flying Into A Star', pls[2].title
685
- assert_equal 'No One Ever Dreams', pls[3].title
686
- assert_equal 'Cosmic Ascension (ft. DJ Jorg)', pls[4].title
687
- assert_equal 'Life On Mars', pls[5].title
688
- assert_equal 'Liquid Sun', pls[6].title
689
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', pls[7].title
690
-
691
- @mpd.disconnect
692
- assert_raise(MPD::ServerError) {@mpd.playlist}
693
- end
694
-
695
- def test_song_at_pos
696
- @mpd.connect
697
-
698
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
699
-
700
- assert_equal 'Dancing Galaxy', @mpd.song_at_pos(0).title
701
- assert_equal 'Soundform', @mpd.song_at_pos(1).title
702
- assert_equal 'Flying Into A Star', @mpd.song_at_pos(2).title
703
- assert_equal 'No One Ever Dreams', @mpd.song_at_pos(3).title
704
- assert_equal 'Cosmic Ascension (ft. DJ Jorg)', @mpd.song_at_pos(4).title
705
- assert_equal 'Life On Mars', @mpd.song_at_pos(5).title
706
- assert_equal 'Liquid Sun', @mpd.song_at_pos(6).title
707
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', @mpd.song_at_pos(7).title
708
-
709
- assert_raise(MPD::ServerError) {@mpd.song_at_pos(999)}
710
-
711
- @mpd.disconnect
712
- assert_raise(MPD::ServerError) {@mpd.song_at_pos(0)}
713
- end
714
-
715
- def test_song_with_id
716
- @mpd.connect
717
-
718
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
719
-
720
- assert_equal 'Dancing Galaxy', @mpd.song_with_id(7).title
721
- assert_equal 'Soundform', @mpd.song_with_id(8).title
722
- assert_equal 'Flying Into A Star', @mpd.song_with_id(9).title
723
- assert_equal 'No One Ever Dreams', @mpd.song_with_id(10).title
724
- assert_equal 'Cosmic Ascension (ft. DJ Jorg)', @mpd.song_with_id(11).title
725
- assert_equal 'Life On Mars', @mpd.song_with_id(12).title
726
- assert_equal 'Liquid Sun', @mpd.song_with_id(13).title
727
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', @mpd.song_with_id(14).title
728
-
729
- assert_raise(MPD::ServerError) {@mpd.song_with_id(999)}
730
-
731
- @mpd.disconnect
732
- assert_raise(MPD::ServerError) {@mpd.song_with_id(10)}
733
- end
734
-
735
- def test_playlist_changes
736
- @mpd.connect
737
-
738
- assert @mpd.add('Astral_Projection')
739
-
740
- changes = @mpd.playlist_changes 8
741
-
742
- assert_equal 1, changes.size
743
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', changes[0].title
744
-
745
- changes = @mpd.playlist_changes 1
746
-
747
- assert_equal 8, changes.size
748
- assert_equal 'Dancing Galaxy', changes[0].title
749
- assert_equal 'Soundform', changes[1].title
750
- assert_equal 'Flying Into A Star', changes[2].title
751
- assert_equal 'No One Ever Dreams', changes[3].title
752
- assert_equal 'Cosmic Ascension (ft. DJ Jorg)', changes[4].title
753
- assert_equal 'Life On Mars', changes[5].title
754
- assert_equal 'Liquid Sun', changes[6].title
755
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', changes[7].title
756
-
757
- changes = @mpd.playlist_changes 999
758
-
759
- assert_equal 8, changes.size
760
-
761
- @mpd.disconnect
762
- assert_raise(MPD::ServerError) {@mpd.playlist_changes(9)}
763
- end
764
-
765
- def test_previous
766
- @mpd.connect
767
-
768
- @mpd.load 'Astral_Projection_-_Dancing_Galaxy'
769
-
770
- @mpd.play 3
771
-
772
- sleep 2
773
-
774
- assert @mpd.playing?
775
-
776
- pos = @mpd.status['song'].to_i
777
-
778
- assert @mpd.previous
779
-
780
- assert_equal pos - 1, @mpd.status['song'].to_i
781
-
782
- @mpd.disconnect
783
- assert_raise(MPD::ServerError) {@mpd.previous}
784
- end
785
-
786
- def test_random
787
- @mpd.connect
788
-
789
- @mpd.random = true
790
- assert @mpd.random?
791
-
792
- @mpd.random = false
793
- assert !@mpd.random?
794
-
795
- @mpd.disconnect
796
- assert_raise(MPD::ServerError) {@mpd.random = false}
797
- assert_raise(MPD::ServerError) {@mpd.random?}
798
- end
799
-
800
- def test_repeat
801
- @mpd.connect
802
-
803
- @mpd.repeat = true
804
- assert @mpd.repeat?
805
-
806
- @mpd.repeat = false
807
- assert !@mpd.repeat?
808
-
809
- @mpd.disconnect
810
- assert_raise(MPD::ServerError) {@mpd.repeat = false}
811
- assert_raise(MPD::ServerError) {@mpd.repeat?}
812
- end
813
-
814
- def test_rm
815
- @mpd.connect
816
-
817
- assert @mpd.rm('Astral_Projection_-_Dancing_Galaxy')
818
-
819
- pls = @mpd.playlists
820
-
821
- assert 1, pls.size
822
-
823
- assert_equal 'Shpongle_-_Are_You_Shpongled', pls[0]
824
-
825
- assert_raise(MPD::ServerError) {@mpd.rm('Not-Exist')}
826
-
827
- @mpd.disconnect
828
- assert_raise(MPD::ServerError) {@mpd.rm('Astral_Projection_-_Dancing_Galaxy')}
829
- end
830
-
831
- def test_save
832
- @mpd.connect
833
-
834
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
835
- assert @mpd.load('Shpongle_-_Are_You_Shpongled')
836
-
837
- assert @mpd.save('UnitTests')
838
-
839
- assert @mpd.clear
840
-
841
- assert @mpd.load('UnitTests')
842
-
843
- pls = @mpd.playlist
844
-
845
- assert_equal 15, pls.size
846
-
847
- assert_equal 'Dancing Galaxy', pls[0].title
848
- assert_equal 'Soundform', pls[1].title
849
- assert_equal 'Flying Into A Star', pls[2].title
850
- assert_equal 'No One Ever Dreams', pls[3].title
851
- assert_equal 'Cosmic Ascension (ft. DJ Jorg)', pls[4].title
852
- assert_equal 'Life On Mars', pls[5].title
853
- assert_equal 'Liquid Sun', pls[6].title
854
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', pls[7].title
855
- assert_equal 'Shpongle Falls', pls[8].title
856
- assert_equal 'Monster Hit', pls[9].title
857
- assert_equal 'Vapour Rumours', pls[10].title
858
- assert_equal 'Shpongle Spores', pls[11].title
859
- assert_equal 'Behind Closed Eyelids', pls[12].title
860
- assert_equal 'Divine Moments of Truth', pls[13].title
861
- assert_equal '... and the Day Turned to Night', pls[14].title
862
-
863
- @mpd.disconnect
864
- assert_raise(MPD::ServerError) {@mpd.save('test')}
865
- end
866
-
867
- def test_search
868
- @mpd.connect
869
-
870
- a = @mpd.search 'album', 'ydroponic gar'
871
-
872
- assert_equal 11, a.size
873
- a.each do |song|
874
- assert_equal 'Carbon Based Lifeforms', song.artist
875
- assert_equal 'Hydroponic Garden', song.album
876
- end
877
-
878
- b = @mpd.search 'artist', 'hpon'
879
-
880
- assert_equal 27, b.size
881
- b.each do |song|
882
- assert_equal 'Shpongle', song.artist
883
- end
884
-
885
- c = @mpd.search 'title', 'falls'
886
- assert_equal 1, c.size
887
- assert_equal 'Shpongle', c[0].artist
888
- assert_equal 'Shpongle Falls', c[0].title
889
- assert_equal 'Are You Shpongled?', c[0].album
890
-
891
- d = @mpd.search 'filename', 'disco_valley'
892
- assert_equal 1, d.size
893
- assert_equal 'Astral Projection', d[0].artist
894
- assert_equal 'Dancing Galaxy', d[0].album
895
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', d[0].title
896
-
897
- z = @mpd.search 'title', 'no-title'
898
- assert_equal 0, z.size
899
-
900
- assert_raise(MPD::ServerError) {@mpd.search('error', 'nosuch')}
901
-
902
- @mpd.disconnect
903
- assert_raise(MPD::ServerError) {@mpd.search('artist','searching')}
904
- end
905
-
906
- def test_seek
907
- @mpd.connect
908
-
909
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
910
-
911
- assert @mpd.play
912
-
913
- sleep 2
914
-
915
- assert @mpd.pause = true
916
-
917
- sleep 2
918
-
919
- assert @mpd.seek(2, 200)
920
-
921
- sleep 2
922
-
923
- song = @mpd.current_song
924
-
925
- assert_equal 'Flying Into A Star', song.title
926
-
927
- status = @mpd.status
928
-
929
- assert_equal '200:585', status['time']
930
-
931
- @mpd.disconnect
932
- assert_raise(MPD::ServerError) {@mpd.seek(1, 100)}
933
- end
934
-
935
- def test_seekid
936
- @mpd.connect
937
-
938
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
939
-
940
- assert @mpd.play
941
-
942
- sleep 2
943
-
944
- assert @mpd.pause = true
945
-
946
- sleep 2
947
-
948
- assert @mpd.seekid(9, 200)
949
-
950
- sleep 2
951
-
952
- song = @mpd.current_song
953
-
954
- assert_equal 'Flying Into A Star', song.title
955
-
956
- status = @mpd.status
957
-
958
- assert_equal '200:585', status['time']
959
-
960
- @mpd.disconnect
961
- assert_raise(MPD::ServerError) {@mpd.seekid(1, 100)}
962
- end
963
-
964
- def test_volume
965
- @mpd.connect
966
-
967
- vol = @mpd.volume
968
-
969
- @mpd.volume = 30
970
- assert_equal 30, @mpd.volume
971
-
972
- @mpd.volume = vol
973
- assert_equal vol, @mpd.volume
974
-
975
- @mpd.disconnect
976
- assert_raise(MPD::ServerError) {@mpd.volume = 10}
977
- assert_raise(MPD::ServerError) {@mpd.volume}
978
- end
979
-
980
- def test_shuffle
981
- @mpd.connect
982
-
983
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
984
-
985
- assert @mpd.shuffle
986
-
987
- pls = @mpd.playlist
988
-
989
- assert_equal 8, pls.size
990
- assert_not_equal 'Dancing Galaxy', pls[0].title
991
-
992
- @mpd.disconnect
993
- assert_raise(MPD::ServerError) {@mpd.shuffle}
994
- end
995
-
996
- def test_stats
997
- @mpd.connect
998
-
999
- stats = @mpd.stats
1000
-
1001
- assert_equal '3', stats['artists']
1002
- assert_equal '4', stats['albums']
1003
- assert_equal '46', stats['songs']
1004
- assert_equal '500', stats['uptime']
1005
-
1006
- @mpd.disconnect
1007
- assert_raise(MPD::ServerError) {@mpd.stats}
1008
- end
1009
-
1010
- def test_status
1011
- @mpd.connect
1012
-
1013
- status = @mpd.status
1014
-
1015
- assert_equal 'stop', status['state']
1016
- assert_equal '0', status['repeat']
1017
- assert_equal '0', status['random']
1018
-
1019
- @mpd.disconnect
1020
- assert_raise(MPD::ServerError) {@mpd.status}
1021
- end
1022
-
1023
- def test_stop
1024
- @mpd.connect
1025
- assert @mpd.connected?
1026
-
1027
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
1028
-
1029
- assert @mpd.play
1030
- assert @mpd.playing?
1031
-
1032
- assert @mpd.stop
1033
- assert @mpd.stopped?
1034
-
1035
- assert !@mpd.playing?
1036
-
1037
- @mpd.disconnect
1038
- assert_raise(MPD::ServerError) {@mpd.stop}
1039
- assert_raise(MPD::ServerError) {@mpd.stopped?}
1040
- end
1041
-
1042
- def test_swap
1043
- @mpd.connect
1044
-
1045
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
1046
-
1047
- assert @mpd.swap(2,5)
1048
-
1049
- pls = @mpd.playlist
1050
-
1051
- assert_equal 'Dancing Galaxy', pls[0].title
1052
- assert_equal 'Soundform', pls[1].title
1053
- assert_equal 'Flying Into A Star', pls[5].title
1054
- assert_equal 'No One Ever Dreams', pls[3].title
1055
- assert_equal 'Cosmic Ascension (ft. DJ Jorg)', pls[4].title
1056
- assert_equal 'Life On Mars', pls[2].title
1057
- assert_equal 'Liquid Sun', pls[6].title
1058
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', pls[7].title
1059
-
1060
- assert @mpd.swap(7,1)
1061
-
1062
- pls = @mpd.playlist
1063
-
1064
- assert_equal 'Dancing Galaxy', pls[0].title
1065
- assert_equal 'Soundform', pls[7].title
1066
- assert_equal 'Flying Into A Star', pls[5].title
1067
- assert_equal 'No One Ever Dreams', pls[3].title
1068
- assert_equal 'Cosmic Ascension (ft. DJ Jorg)', pls[4].title
1069
- assert_equal 'Life On Mars', pls[2].title
1070
- assert_equal 'Liquid Sun', pls[6].title
1071
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', pls[1].title
1072
-
1073
- assert_raise(MPD::ServerError) {@mpd.swap(999,1)}
1074
-
1075
- @mpd.disconnect
1076
- assert_raise(MPD::ServerError) {@mpd.swap(2, 5)}
1077
- end
1078
-
1079
- def test_swapid
1080
- @mpd.connect
1081
-
1082
- assert @mpd.load('Astral_Projection_-_Dancing_Galaxy')
1083
-
1084
- assert @mpd.swapid(9,12)
1085
-
1086
- pls = @mpd.playlist
1087
-
1088
- assert_equal 'Dancing Galaxy', pls[0].title
1089
- assert_equal 'Soundform', pls[1].title
1090
- assert_equal 'Flying Into A Star', pls[5].title
1091
- assert_equal 'No One Ever Dreams', pls[3].title
1092
- assert_equal 'Cosmic Ascension (ft. DJ Jorg)', pls[4].title
1093
- assert_equal 'Life On Mars', pls[2].title
1094
- assert_equal 'Liquid Sun', pls[6].title
1095
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', pls[7].title
1096
-
1097
- assert @mpd.swapid(14,8)
1098
-
1099
- pls = @mpd.playlist
1100
-
1101
- assert_equal 'Dancing Galaxy', pls[0].title
1102
- assert_equal 'Soundform', pls[7].title
1103
- assert_equal 'Flying Into A Star', pls[5].title
1104
- assert_equal 'No One Ever Dreams', pls[3].title
1105
- assert_equal 'Cosmic Ascension (ft. DJ Jorg)', pls[4].title
1106
- assert_equal 'Life On Mars', pls[2].title
1107
- assert_equal 'Liquid Sun', pls[6].title
1108
- assert_equal 'Ambient Galaxy (Disco Valley Mix)', pls[1].title
1109
-
1110
- assert_raise(MPD::ServerError) {@mpd.swapid(999,8)}
1111
-
1112
- @mpd.disconnect
1113
- assert_raise(MPD::ServerError) {@mpd.swapid(9, 12)}
1114
- end
1115
-
1116
- def test_update
1117
- @mpd.connect
1118
-
1119
- ret = @mpd.update
1120
-
1121
- assert_equal 1, ret
1122
-
1123
- status = @mpd.status
1124
-
1125
- assert_equal '1', status['updating_db']
1126
-
1127
- status = @mpd.status
1128
-
1129
- assert_nil status['updating_db']
1130
-
1131
- @mpd.disconnect
1132
- assert_raise(MPD::ServerError) {@mpd.update}
1133
- end
1134
- end