mp3file 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,140 +8,583 @@ describe Mp3file::MP3File do
8
8
  path = fixture_file("bret_96_no_xing.mp3")
9
9
  subject { Mp3file::MP3File.new(path) }
10
10
 
11
- its(:id3v2tag?) { should == false }
12
- its(:id3v1tag?) { should == false }
13
- its("file.path") { should == path.to_s }
14
- its("file.closed?") { should == true }
15
- its(:file_size) { should == path.size }
16
- its(:audio_size) { should == path.size }
17
- its(:first_header_offset) { should == 0 }
18
- its(:mpeg_version) { should == 'MPEG 1' }
19
- its(:layer) { should == 'Layer III' }
20
- its(:bitrate) { should == 96 }
21
- its(:samplerate) { should == 32000 }
22
- its(:mode) { should == 'Joint Stereo' }
23
- its(:num_frames) { should == 140 }
24
- its(:total_samples) { should == 161280 }
25
- its(:length) { should == 5.04 }
26
- its(:vbr?) { should == false }
11
+ describe '#id3v2tag?' do
12
+ subject { super().id3v2tag? }
13
+ it { is_expected.to eq(false) }
14
+ end
15
+
16
+ describe '#id3v1tag?' do
17
+ subject { super().id3v1tag? }
18
+ it { is_expected.to eq(false) }
19
+ end
20
+
21
+ describe '#file' do
22
+ subject { super().file }
23
+ describe '#path' do
24
+ subject { super().path }
25
+ it { is_expected.to eq(path.to_s) }
26
+ end
27
+ end
28
+
29
+ describe '#file' do
30
+ subject { super().file }
31
+ describe '#closed?' do
32
+ subject { super().closed? }
33
+ it { is_expected.to eq(true) }
34
+ end
35
+ end
36
+
37
+ describe '#file_size' do
38
+ subject { super().file_size }
39
+ it { is_expected.to eq(path.size) }
40
+ end
41
+
42
+ describe '#audio_size' do
43
+ subject { super().audio_size }
44
+ it { is_expected.to eq(path.size) }
45
+ end
46
+
47
+ describe '#first_header_offset' do
48
+ subject { super().first_header_offset }
49
+ it { is_expected.to eq(0) }
50
+ end
51
+
52
+ describe '#mpeg_version' do
53
+ subject { super().mpeg_version }
54
+ it { is_expected.to eq('MPEG 1') }
55
+ end
56
+
57
+ describe '#layer' do
58
+ subject { super().layer }
59
+ it { is_expected.to eq('Layer III') }
60
+ end
61
+
62
+ describe '#bitrate' do
63
+ subject { super().bitrate }
64
+ it { is_expected.to eq(96) }
65
+ end
66
+
67
+ describe '#samplerate' do
68
+ subject { super().samplerate }
69
+ it { is_expected.to eq(32000) }
70
+ end
71
+
72
+ describe '#mode' do
73
+ subject { super().mode }
74
+ it { is_expected.to eq('Joint Stereo') }
75
+ end
76
+
77
+ describe '#num_frames' do
78
+ subject { super().num_frames }
79
+ it { is_expected.to eq(140) }
80
+ end
81
+
82
+ describe '#total_samples' do
83
+ subject { super().total_samples }
84
+ it { is_expected.to eq(161280) }
85
+ end
86
+
87
+ describe '#length' do
88
+ subject { super().length }
89
+ it { is_expected.to eq(5.04) }
90
+ end
91
+
92
+ describe '#vbr?' do
93
+ subject { super().vbr? }
94
+ it { is_expected.to eq(false) }
95
+ end
27
96
  end
28
97
 
29
98
  describe "A 96 kbps 32 kHz Joint Stereo CBR file with a Xing \"Info\" header and no ID3 tags" do
30
99
  path = fixture_file("bret_96.mp3")
31
100
  subject { Mp3file::MP3File.new(path) }
32
101
 
33
- its(:id3v2tag?) { should == false }
34
- its(:id3v1tag?) { should == false }
35
- its("file.path") { should == path.to_s }
36
- its("file.closed?") { should == true }
37
- its(:file_size) { should == path.size }
38
- its(:audio_size) { should == path.size }
39
- its(:first_header_offset) { should == 0 }
40
- its(:mpeg_version) { should == 'MPEG 1' }
41
- its(:layer) { should == 'Layer III' }
42
- its(:bitrate) { should == 96 }
43
- its(:samplerate) { should == 32000 }
44
- its(:mode) { should == 'Joint Stereo' }
45
- its(:num_frames) { should == 140 }
46
- its(:total_samples) { should == 161280 }
47
- its(:length) { should == 5.04 }
48
- its(:vbr?) { should == false }
102
+ describe '#id3v2tag?' do
103
+ subject { super().id3v2tag? }
104
+ it { is_expected.to eq(false) }
105
+ end
106
+
107
+ describe '#id3v1tag?' do
108
+ subject { super().id3v1tag? }
109
+ it { is_expected.to eq(false) }
110
+ end
111
+
112
+ describe '#file' do
113
+ subject { super().file }
114
+ describe '#path' do
115
+ subject { super().path }
116
+ it { is_expected.to eq(path.to_s) }
117
+ end
118
+ end
119
+
120
+ describe '#file' do
121
+ subject { super().file }
122
+ describe '#closed?' do
123
+ subject { super().closed? }
124
+ it { is_expected.to eq(true) }
125
+ end
126
+ end
127
+
128
+ describe '#file_size' do
129
+ subject { super().file_size }
130
+ it { is_expected.to eq(path.size) }
131
+ end
132
+
133
+ describe '#audio_size' do
134
+ subject { super().audio_size }
135
+ it { is_expected.to eq(path.size) }
136
+ end
137
+
138
+ describe '#first_header_offset' do
139
+ subject { super().first_header_offset }
140
+ it { is_expected.to eq(0) }
141
+ end
142
+
143
+ describe '#mpeg_version' do
144
+ subject { super().mpeg_version }
145
+ it { is_expected.to eq('MPEG 1') }
146
+ end
147
+
148
+ describe '#layer' do
149
+ subject { super().layer }
150
+ it { is_expected.to eq('Layer III') }
151
+ end
152
+
153
+ describe '#bitrate' do
154
+ subject { super().bitrate }
155
+ it { is_expected.to eq(96) }
156
+ end
157
+
158
+ describe '#samplerate' do
159
+ subject { super().samplerate }
160
+ it { is_expected.to eq(32000) }
161
+ end
162
+
163
+ describe '#mode' do
164
+ subject { super().mode }
165
+ it { is_expected.to eq('Joint Stereo') }
166
+ end
167
+
168
+ describe '#num_frames' do
169
+ subject { super().num_frames }
170
+ it { is_expected.to eq(140) }
171
+ end
172
+
173
+ describe '#total_samples' do
174
+ subject { super().total_samples }
175
+ it { is_expected.to eq(161280) }
176
+ end
177
+
178
+ describe '#length' do
179
+ subject { super().length }
180
+ it { is_expected.to eq(5.04) }
181
+ end
182
+
183
+ describe '#vbr?' do
184
+ subject { super().vbr? }
185
+ it { is_expected.to eq(false) }
186
+ end
49
187
  end
50
188
 
51
189
  describe "a 44.1 kHz Stereo VBR file with an average bitrate of 130 kbps without any ID3 tags" do
52
190
  path = fixture_file("bret_vbr_6.mp3")
53
191
  subject { Mp3file::MP3File.new(path) }
54
192
 
55
- its(:id3v2tag?) { should == false }
56
- its(:id3v1tag?) { should == false }
57
- its("file.path") { should == path.to_s }
58
- its("file.closed?") { should == true }
59
- its(:file_size) { should == path.size }
60
- its(:audio_size) { should == 81853 }
61
- its(:first_header_offset) { should == 0 }
62
- its(:mpeg_version) { should == 'MPEG 1' }
63
- its(:layer) { should == 'Layer III' }
64
- its(:bitrate) { should be_within(0.005).of(129.88) }
65
- its(:samplerate) { should == 44100 }
66
- its(:mode) { should == 'Stereo' }
67
- its(:num_frames) { should == 193 }
68
- its(:total_samples) { should == 222336 }
69
- its(:length) { should be_within(0.005).of(5.04) }
70
- its(:vbr?) { should == true }
193
+ describe '#id3v2tag?' do
194
+ subject { super().id3v2tag? }
195
+ it { is_expected.to eq(false) }
196
+ end
197
+
198
+ describe '#id3v1tag?' do
199
+ subject { super().id3v1tag? }
200
+ it { is_expected.to eq(false) }
201
+ end
202
+
203
+ describe '#file' do
204
+ subject { super().file }
205
+ describe '#path' do
206
+ subject { super().path }
207
+ it { is_expected.to eq(path.to_s) }
208
+ end
209
+ end
210
+
211
+ describe '#file' do
212
+ subject { super().file }
213
+ describe '#closed?' do
214
+ subject { super().closed? }
215
+ it { is_expected.to eq(true) }
216
+ end
217
+ end
218
+
219
+ describe '#file_size' do
220
+ subject { super().file_size }
221
+ it { is_expected.to eq(path.size) }
222
+ end
223
+
224
+ describe '#audio_size' do
225
+ subject { super().audio_size }
226
+ it { is_expected.to eq(81853) }
227
+ end
228
+
229
+ describe '#first_header_offset' do
230
+ subject { super().first_header_offset }
231
+ it { is_expected.to eq(0) }
232
+ end
233
+
234
+ describe '#mpeg_version' do
235
+ subject { super().mpeg_version }
236
+ it { is_expected.to eq('MPEG 1') }
237
+ end
238
+
239
+ describe '#layer' do
240
+ subject { super().layer }
241
+ it { is_expected.to eq('Layer III') }
242
+ end
243
+
244
+ describe '#bitrate' do
245
+ subject { super().bitrate }
246
+ it { is_expected.to be_within(0.005).of(129.88) }
247
+ end
248
+
249
+ describe '#samplerate' do
250
+ subject { super().samplerate }
251
+ it { is_expected.to eq(44100) }
252
+ end
253
+
254
+ describe '#mode' do
255
+ subject { super().mode }
256
+ it { is_expected.to eq('Stereo') }
257
+ end
258
+
259
+ describe '#num_frames' do
260
+ subject { super().num_frames }
261
+ it { is_expected.to eq(193) }
262
+ end
263
+
264
+ describe '#total_samples' do
265
+ subject { super().total_samples }
266
+ it { is_expected.to eq(222336) }
267
+ end
268
+
269
+ describe '#length' do
270
+ subject { super().length }
271
+ it { is_expected.to be_within(0.005).of(5.04) }
272
+ end
273
+
274
+ describe '#vbr?' do
275
+ subject { super().vbr? }
276
+ it { is_expected.to eq(true) }
277
+ end
71
278
  end
72
279
 
73
280
  describe "A 96 kbps 32 kHz CBR file with no Xing header and only an ID3v1 tag" do
74
281
  subject { Mp3file::MP3File.new(fixture_file('bret_id3v1_no_xing.mp3')) }
75
- its(:id3v2tag?) { should == false }
76
- its(:id3v1tag?) { should == true }
77
- its(:audio_size) { should == 60480 }
78
- its(:first_header_offset) { should == 0 }
79
- its(:mpeg_version) { should == 'MPEG 1' }
80
- its(:layer) { should == 'Layer III' }
81
- its(:bitrate) { should == 96 }
82
- its(:samplerate) { should == 32000 }
83
- its(:mode) { should == 'Joint Stereo' }
84
- its(:num_frames) { should == 140 }
85
- its(:total_samples) { should == 161280 }
86
- its(:length) { should be_within(0.005).of(5.04) }
87
- its(:vbr?) { should == false }
88
- its('id3v1_tag.artist') { should == 'Cracker' }
89
- its(:title) { should == 'Hey Bret (You Know What Time I' }
90
- its(:album) { should == 'Sunrise in the Land of Milk an' }
91
- its(:comment) { should == 'For testing the mp3file gem' }
92
- its(:year) { should == '2009' }
93
- its(:track) { should == 9 }
94
- its(:genre) { should == 'Rock' }
282
+
283
+ describe '#id3v2tag?' do
284
+ subject { super().id3v2tag? }
285
+ it { is_expected.to eq(false) }
286
+ end
287
+
288
+ describe '#id3v1tag?' do
289
+ subject { super().id3v1tag? }
290
+ it { is_expected.to eq(true) }
291
+ end
292
+
293
+ describe '#audio_size' do
294
+ subject { super().audio_size }
295
+ it { is_expected.to eq(60480) }
296
+ end
297
+
298
+ describe '#first_header_offset' do
299
+ subject { super().first_header_offset }
300
+ it { is_expected.to eq(0) }
301
+ end
302
+
303
+ describe '#mpeg_version' do
304
+ subject { super().mpeg_version }
305
+ it { is_expected.to eq('MPEG 1') }
306
+ end
307
+
308
+ describe '#layer' do
309
+ subject { super().layer }
310
+ it { is_expected.to eq('Layer III') }
311
+ end
312
+
313
+ describe '#bitrate' do
314
+ subject { super().bitrate }
315
+ it { is_expected.to eq(96) }
316
+ end
317
+
318
+ describe '#samplerate' do
319
+ subject { super().samplerate }
320
+ it { is_expected.to eq(32000) }
321
+ end
322
+
323
+ describe '#mode' do
324
+ subject { super().mode }
325
+ it { is_expected.to eq('Joint Stereo') }
326
+ end
327
+
328
+ describe '#num_frames' do
329
+ subject { super().num_frames }
330
+ it { is_expected.to eq(140) }
331
+ end
332
+
333
+ describe '#total_samples' do
334
+ subject { super().total_samples }
335
+ it { is_expected.to eq(161280) }
336
+ end
337
+
338
+ describe '#length' do
339
+ subject { super().length }
340
+ it { is_expected.to be_within(0.005).of(5.04) }
341
+ end
342
+
343
+ describe '#vbr?' do
344
+ subject { super().vbr? }
345
+ it { is_expected.to eq(false) }
346
+ end
347
+
348
+ describe '#id3v1_tag' do
349
+ subject { super().id3v1_tag }
350
+ describe '#artist' do
351
+ subject { super().artist }
352
+ it { is_expected.to eq('Cracker') }
353
+ end
354
+ end
355
+
356
+ describe '#title' do
357
+ subject { super().title }
358
+ it { is_expected.to eq('Hey Bret (You Know What Time I') }
359
+ end
360
+
361
+ describe '#album' do
362
+ subject { super().album }
363
+ it { is_expected.to eq('Sunrise in the Land of Milk an') }
364
+ end
365
+
366
+ describe '#comment' do
367
+ subject { super().comment }
368
+ it { is_expected.to eq('For testing the mp3file gem') }
369
+ end
370
+
371
+ describe '#year' do
372
+ subject { super().year }
373
+ it { is_expected.to eq('2009') }
374
+ end
375
+
376
+ describe '#track' do
377
+ subject { super().track }
378
+ it { is_expected.to eq(9) }
379
+ end
380
+
381
+ describe '#genre' do
382
+ subject { super().genre }
383
+ it { is_expected.to eq('Rock') }
384
+ end
95
385
  end
96
386
 
97
387
  describe "A 96 kbps 32 kHz CBR file with a Xing \"Info\" header and only an ID3v1 tag" do
98
388
  subject { Mp3file::MP3File.new(fixture_file('bret_id3v1.mp3')) }
99
- its(:id3v2tag?) { should == false }
100
- its(:id3v1tag?) { should == true }
101
- its(:audio_size) { should == 60912 }
102
- its(:first_header_offset) { should == 0 }
103
- its(:mpeg_version) { should == 'MPEG 1' }
104
- its(:layer) { should == 'Layer III' }
105
- its(:bitrate) { should == 96 }
106
- its(:samplerate) { should == 32000 }
107
- its(:mode) { should == 'Joint Stereo' }
108
- its(:num_frames) { should == 140 }
109
- its(:total_samples) { should == 161280 }
110
- its(:length) { should be_within(0.005).of(5.04) }
111
- its(:vbr?) { should == false }
112
- its('id3v1_tag.artist') { should == 'Cracker' }
113
- its(:title) { should == 'Hey Bret (You Know What Time I' }
114
- its(:album) { should == 'Sunrise in the Land of Milk an' }
115
- its(:comment) { should == 'For testing the mp3file gem' }
116
- its(:year) { should == '2009' }
117
- its(:track) { should == 9 }
118
- its(:genre) { should == 'Rock' }
389
+
390
+ describe '#id3v2tag?' do
391
+ subject { super().id3v2tag? }
392
+ it { is_expected.to eq(false) }
393
+ end
394
+
395
+ describe '#id3v1tag?' do
396
+ subject { super().id3v1tag? }
397
+ it { is_expected.to eq(true) }
398
+ end
399
+
400
+ describe '#audio_size' do
401
+ subject { super().audio_size }
402
+ it { is_expected.to eq(60912) }
403
+ end
404
+
405
+ describe '#first_header_offset' do
406
+ subject { super().first_header_offset }
407
+ it { is_expected.to eq(0) }
408
+ end
409
+
410
+ describe '#mpeg_version' do
411
+ subject { super().mpeg_version }
412
+ it { is_expected.to eq('MPEG 1') }
413
+ end
414
+
415
+ describe '#layer' do
416
+ subject { super().layer }
417
+ it { is_expected.to eq('Layer III') }
418
+ end
419
+
420
+ describe '#bitrate' do
421
+ subject { super().bitrate }
422
+ it { is_expected.to eq(96) }
423
+ end
424
+
425
+ describe '#samplerate' do
426
+ subject { super().samplerate }
427
+ it { is_expected.to eq(32000) }
428
+ end
429
+
430
+ describe '#mode' do
431
+ subject { super().mode }
432
+ it { is_expected.to eq('Joint Stereo') }
433
+ end
434
+
435
+ describe '#num_frames' do
436
+ subject { super().num_frames }
437
+ it { is_expected.to eq(140) }
438
+ end
439
+
440
+ describe '#total_samples' do
441
+ subject { super().total_samples }
442
+ it { is_expected.to eq(161280) }
443
+ end
444
+
445
+ describe '#length' do
446
+ subject { super().length }
447
+ it { is_expected.to be_within(0.005).of(5.04) }
448
+ end
449
+
450
+ describe '#vbr?' do
451
+ subject { super().vbr? }
452
+ it { is_expected.to eq(false) }
453
+ end
454
+
455
+ describe '#id3v1_tag' do
456
+ subject { super().id3v1_tag }
457
+ describe '#artist' do
458
+ subject { super().artist }
459
+ it { is_expected.to eq('Cracker') }
460
+ end
461
+ end
462
+
463
+ describe '#title' do
464
+ subject { super().title }
465
+ it { is_expected.to eq('Hey Bret (You Know What Time I') }
466
+ end
467
+
468
+ describe '#album' do
469
+ subject { super().album }
470
+ it { is_expected.to eq('Sunrise in the Land of Milk an') }
471
+ end
472
+
473
+ describe '#comment' do
474
+ subject { super().comment }
475
+ it { is_expected.to eq('For testing the mp3file gem') }
476
+ end
477
+
478
+ describe '#year' do
479
+ subject { super().year }
480
+ it { is_expected.to eq('2009') }
481
+ end
482
+
483
+ describe '#track' do
484
+ subject { super().track }
485
+ it { is_expected.to eq(9) }
486
+ end
487
+
488
+ describe '#genre' do
489
+ subject { super().genre }
490
+ it { is_expected.to eq('Rock') }
491
+ end
119
492
  end
120
493
 
121
494
  describe "A 96 kbps 34 kHz Joint Stereo CBR file with a Xing \"Info\" header and an ID3v2 tag" do
122
495
  subject { Mp3file::MP3File.new(fixture_file('bret_id3v2.mp3')) }
123
- its(:id3v2tag?) { should == true }
124
- its(:id3v1tag?) { should == false }
125
- its("file.path") { should == fixture_file('bret_id3v2.mp3').to_s }
126
- its("file.closed?") { should == true }
127
- its(:file_size) { should == fixture_file('bret_id3v2.mp3').size }
128
- its(:audio_size) { should == 60912 }
129
- its(:first_header_offset) { should == 528 }
130
- its(:mpeg_version) { should == 'MPEG 1' }
131
- its(:layer) { should == 'Layer III' }
132
- its(:bitrate) { should == 96 }
133
- its(:samplerate) { should == 32000 }
134
- its(:mode) { should == 'Joint Stereo' }
135
- its(:num_frames) { should == 140 }
136
- its(:total_samples) { should == 161280 }
137
- its(:length) { should == be_within(0.001).of(5.04) }
138
- its(:vbr?) { should == false }
496
+
497
+ describe '#id3v2tag?' do
498
+ subject { super().id3v2tag? }
499
+ it { is_expected.to eq(true) }
500
+ end
501
+
502
+ describe '#id3v1tag?' do
503
+ subject { super().id3v1tag? }
504
+ it { is_expected.to eq(false) }
505
+ end
506
+
507
+ describe '#file' do
508
+ subject { super().file }
509
+ describe '#path' do
510
+ subject { super().path }
511
+ it { is_expected.to eq(fixture_file('bret_id3v2.mp3').to_s) }
512
+ end
513
+ end
514
+
515
+ describe '#file' do
516
+ subject { super().file }
517
+ describe '#closed?' do
518
+ subject { super().closed? }
519
+ it { is_expected.to eq(true) }
520
+ end
521
+ end
522
+
523
+ describe '#file_size' do
524
+ subject { super().file_size }
525
+ it { is_expected.to eq(fixture_file('bret_id3v2.mp3').size) }
526
+ end
527
+
528
+ describe '#audio_size' do
529
+ subject { super().audio_size }
530
+ it { is_expected.to eq(60912) }
531
+ end
532
+
533
+ describe '#first_header_offset' do
534
+ subject { super().first_header_offset }
535
+ it { is_expected.to eq(528) }
536
+ end
537
+
538
+ describe '#mpeg_version' do
539
+ subject { super().mpeg_version }
540
+ it { is_expected.to eq('MPEG 1') }
541
+ end
542
+
543
+ describe '#layer' do
544
+ subject { super().layer }
545
+ it { is_expected.to eq('Layer III') }
546
+ end
547
+
548
+ describe '#bitrate' do
549
+ subject { super().bitrate }
550
+ it { is_expected.to eq(96) }
551
+ end
552
+
553
+ describe '#samplerate' do
554
+ subject { super().samplerate }
555
+ it { is_expected.to eq(32000) }
556
+ end
557
+
558
+ describe '#mode' do
559
+ subject { super().mode }
560
+ it { is_expected.to eq('Joint Stereo') }
561
+ end
562
+
563
+ describe '#num_frames' do
564
+ subject { super().num_frames }
565
+ it { is_expected.to eq(140) }
566
+ end
567
+
568
+ describe '#total_samples' do
569
+ subject { super().total_samples }
570
+ it { is_expected.to eq(161280) }
571
+ end
572
+
573
+ describe '#length' do
574
+ subject { super().length }
575
+ it { is_expected.to be_within(0.001).of(5.04) }
576
+ end
577
+
578
+ describe '#vbr?' do
579
+ subject { super().vbr? }
580
+ it { is_expected.to eq(false) }
581
+ end
139
582
  end
140
583
 
141
584
  describe "A file consisting only of zeroes" do
142
585
  it "raises an error" do
143
- lambda { Mp3file::MP3File.new(fixture_file('zeroes.mp3')) }.
144
- should(raise_error(Mp3file::InvalidMP3FileError))
586
+ expect { Mp3file::MP3File.new(fixture_file('zeroes.mp3')) }.
587
+ to(raise_error(Mp3file::InvalidMP3FileError))
145
588
  end
146
589
  end
147
590
  end