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.
@@ -6,126 +6,294 @@ include CommonHelpers
6
6
  describe Mp3file::ID3v2::Header do
7
7
  it "raises an error if the first 3 bytes don't say \"ID3\"" do
8
8
  io = StringIO.new("ID2\x03\x00\x00\x00\x00\x00\x00")
9
- lambda { Mp3file::ID3v2::Header.new(io) }.should(raise_error(Mp3file::ID3v2::InvalidID3v2TagError))
9
+ expect { Mp3file::ID3v2::Header.new(io) }.to(raise_error(Mp3file::ID3v2::InvalidID3v2TagError))
10
10
  end
11
11
 
12
12
  it "raises an error if the major version is more than 4 (e.g., no ID3v2.5.0+)" do
13
13
  io = StringIO.new("ID3\x05\x00\x00\x00\x00\x00\x00")
14
- lambda { Mp3file::ID3v2::Header.new(io) }.should(raise_error(Mp3file::ID3v2::InvalidID3v2TagError))
14
+ expect { Mp3file::ID3v2::Header.new(io) }.to(raise_error(Mp3file::ID3v2::InvalidID3v2TagError))
15
15
  end
16
16
 
17
17
  it "raises an error if the major version is less than 2 (e.g., no ID3v2.1.0)" do
18
18
  io = StringIO.new("ID3\x01\x00\x00\x00\x00\x00\x00")
19
- lambda { Mp3file::ID3v2::Header.new(io) }.should(raise_error(Mp3file::ID3v2::InvalidID3v2TagError))
19
+ expect { Mp3file::ID3v2::Header.new(io) }.to(raise_error(Mp3file::ID3v2::InvalidID3v2TagError))
20
20
  end
21
21
 
22
22
  describe "flags:" do
23
23
  describe "An ID3v2.2 header with no set flags:" do
24
24
  subject { Mp3file::ID3v2::Header.new(StringIO.new("ID3\x02\x00\x00\x00\x00\x00\x00")) }
25
- its(:version) { should == Mp3file::ID3v2::ID3V2_2_0 }
26
- its(:unsynchronized) { should == false }
27
- its(:extended_header) { should == false }
28
- its(:compression) { should == false }
29
- its(:experimental) { should == false }
30
- its(:footer) { should == false }
25
+
26
+ describe '#version' do
27
+ subject { super().version }
28
+ it { is_expected.to eq(Mp3file::ID3v2::ID3V2_2_0) }
29
+ end
30
+
31
+ describe '#unsynchronized' do
32
+ subject { super().unsynchronized }
33
+ it { is_expected.to eq(false) }
34
+ end
35
+
36
+ describe '#extended_header' do
37
+ subject { super().extended_header }
38
+ it { is_expected.to eq(false) }
39
+ end
40
+
41
+ describe '#compression' do
42
+ subject { super().compression }
43
+ it { is_expected.to eq(false) }
44
+ end
45
+
46
+ describe '#experimental' do
47
+ subject { super().experimental }
48
+ it { is_expected.to eq(false) }
49
+ end
50
+
51
+ describe '#footer' do
52
+ subject { super().footer }
53
+ it { is_expected.to eq(false) }
54
+ end
31
55
  end
32
56
 
33
57
  describe "An ID3v2.2 header with the unsync flag set:" do
34
58
  subject { Mp3file::ID3v2::Header.new(StringIO.new("ID3\x02\x00\x80\x00\x00\x00\x00")) }
35
- its(:version) { should == Mp3file::ID3v2::ID3V2_2_0 }
36
- its(:unsynchronized) { should == true }
37
- its(:extended_header) { should == false }
38
- its(:compression) { should == false }
39
- its(:experimental) { should == false }
40
- its(:footer) { should == false }
59
+
60
+ describe '#version' do
61
+ subject { super().version }
62
+ it { is_expected.to eq(Mp3file::ID3v2::ID3V2_2_0) }
63
+ end
64
+
65
+ describe '#unsynchronized' do
66
+ subject { super().unsynchronized }
67
+ it { is_expected.to eq(true) }
68
+ end
69
+
70
+ describe '#extended_header' do
71
+ subject { super().extended_header }
72
+ it { is_expected.to eq(false) }
73
+ end
74
+
75
+ describe '#compression' do
76
+ subject { super().compression }
77
+ it { is_expected.to eq(false) }
78
+ end
79
+
80
+ describe '#experimental' do
81
+ subject { super().experimental }
82
+ it { is_expected.to eq(false) }
83
+ end
84
+
85
+ describe '#footer' do
86
+ subject { super().footer }
87
+ it { is_expected.to eq(false) }
88
+ end
41
89
  end
42
90
 
43
91
  describe "An ID3v2.2 header with the compression flag set:" do
44
92
  subject { Mp3file::ID3v2::Header.new(StringIO.new("ID3\x02\x00\x40\x00\x00\x00\x00")) }
45
- its(:version) { should == Mp3file::ID3v2::ID3V2_2_0 }
46
- its(:unsynchronized) { should == false }
47
- its(:extended_header) { should == false }
48
- its(:compression) { should == true }
49
- its(:experimental) { should == false }
50
- its(:footer) { should == false }
93
+
94
+ describe '#version' do
95
+ subject { super().version }
96
+ it { is_expected.to eq(Mp3file::ID3v2::ID3V2_2_0) }
97
+ end
98
+
99
+ describe '#unsynchronized' do
100
+ subject { super().unsynchronized }
101
+ it { is_expected.to eq(false) }
102
+ end
103
+
104
+ describe '#extended_header' do
105
+ subject { super().extended_header }
106
+ it { is_expected.to eq(false) }
107
+ end
108
+
109
+ describe '#compression' do
110
+ subject { super().compression }
111
+ it { is_expected.to eq(true) }
112
+ end
113
+
114
+ describe '#experimental' do
115
+ subject { super().experimental }
116
+ it { is_expected.to eq(false) }
117
+ end
118
+
119
+ describe '#footer' do
120
+ subject { super().footer }
121
+ it { is_expected.to eq(false) }
122
+ end
51
123
  end
52
124
 
53
125
  describe "An ID3v2.2 header with an invalid flag set" do
54
126
  it "raises an error" do
55
- lambda { Mp3file::ID3v2::Header.new(StringIO.new("ID3\x02\x00\x20\x00\x00\x00\x00")) }.
56
- should(raise_error(Mp3file::ID3v2::InvalidID3v2TagError))
127
+ expect { Mp3file::ID3v2::Header.new(StringIO.new("ID3\x02\x00\x20\x00\x00\x00\x00")) }.
128
+ to(raise_error(Mp3file::ID3v2::InvalidID3v2TagError))
57
129
  end
58
130
  end
59
131
 
60
132
  describe "An ID3v2.3 header with the extended header flag set:" do
61
133
  subject { Mp3file::ID3v2::Header.new(StringIO.new("ID3\x03\x00\x40\x00\x00\x00\x00")) }
62
- its(:version) { should == Mp3file::ID3v2::ID3V2_3_0 }
63
- its(:unsynchronized) { should == false }
64
- its(:extended_header) { should == true }
65
- its(:compression) { should == false }
66
- its(:experimental) { should == false }
67
- its(:footer) { should == false }
134
+
135
+ describe '#version' do
136
+ subject { super().version }
137
+ it { is_expected.to eq(Mp3file::ID3v2::ID3V2_3_0) }
138
+ end
139
+
140
+ describe '#unsynchronized' do
141
+ subject { super().unsynchronized }
142
+ it { is_expected.to eq(false) }
143
+ end
144
+
145
+ describe '#extended_header' do
146
+ subject { super().extended_header }
147
+ it { is_expected.to eq(true) }
148
+ end
149
+
150
+ describe '#compression' do
151
+ subject { super().compression }
152
+ it { is_expected.to eq(false) }
153
+ end
154
+
155
+ describe '#experimental' do
156
+ subject { super().experimental }
157
+ it { is_expected.to eq(false) }
158
+ end
159
+
160
+ describe '#footer' do
161
+ subject { super().footer }
162
+ it { is_expected.to eq(false) }
163
+ end
68
164
  end
69
165
 
70
166
  describe "An ID3v2.3 header with the experimental header flag set:" do
71
167
  subject { Mp3file::ID3v2::Header.new(StringIO.new("ID3\x03\x00\x20\x00\x00\x00\x00")) }
72
- its(:version) { should == Mp3file::ID3v2::ID3V2_3_0 }
73
- its(:unsynchronized) { should == false }
74
- its(:extended_header) { should == false }
75
- its(:compression) { should == false }
76
- its(:experimental) { should == true }
77
- its(:footer) { should == false }
168
+
169
+ describe '#version' do
170
+ subject { super().version }
171
+ it { is_expected.to eq(Mp3file::ID3v2::ID3V2_3_0) }
172
+ end
173
+
174
+ describe '#unsynchronized' do
175
+ subject { super().unsynchronized }
176
+ it { is_expected.to eq(false) }
177
+ end
178
+
179
+ describe '#extended_header' do
180
+ subject { super().extended_header }
181
+ it { is_expected.to eq(false) }
182
+ end
183
+
184
+ describe '#compression' do
185
+ subject { super().compression }
186
+ it { is_expected.to eq(false) }
187
+ end
188
+
189
+ describe '#experimental' do
190
+ subject { super().experimental }
191
+ it { is_expected.to eq(true) }
192
+ end
193
+
194
+ describe '#footer' do
195
+ subject { super().footer }
196
+ it { is_expected.to eq(false) }
197
+ end
78
198
  end
79
199
 
80
200
  describe "An ID3v2.3 header with the experimental header flag set:" do
81
201
  subject { Mp3file::ID3v2::Header.new(StringIO.new("ID3\x03\x00\x20\x00\x00\x00\x00")) }
82
- its(:version) { should == Mp3file::ID3v2::ID3V2_3_0 }
83
- its(:unsynchronized) { should == false }
84
- its(:extended_header) { should == false }
85
- its(:compression) { should == false }
86
- its(:experimental) { should == true }
87
- its(:footer) { should == false }
202
+
203
+ describe '#version' do
204
+ subject { super().version }
205
+ it { is_expected.to eq(Mp3file::ID3v2::ID3V2_3_0) }
206
+ end
207
+
208
+ describe '#unsynchronized' do
209
+ subject { super().unsynchronized }
210
+ it { is_expected.to eq(false) }
211
+ end
212
+
213
+ describe '#extended_header' do
214
+ subject { super().extended_header }
215
+ it { is_expected.to eq(false) }
216
+ end
217
+
218
+ describe '#compression' do
219
+ subject { super().compression }
220
+ it { is_expected.to eq(false) }
221
+ end
222
+
223
+ describe '#experimental' do
224
+ subject { super().experimental }
225
+ it { is_expected.to eq(true) }
226
+ end
227
+
228
+ describe '#footer' do
229
+ subject { super().footer }
230
+ it { is_expected.to eq(false) }
231
+ end
88
232
  end
89
233
 
90
234
  describe "An ID3v2.3 header with an invalid flag set" do
91
235
  it "raises an error" do
92
- lambda { Mp3file::ID3v2::Header.new(StringIO.new("ID3\x03\x00\x10\x00\x00\x00\x00")) }.
93
- should(raise_error(Mp3file::ID3v2::InvalidID3v2TagError))
236
+ expect { Mp3file::ID3v2::Header.new(StringIO.new("ID3\x03\x00\x10\x00\x00\x00\x00")) }.
237
+ to(raise_error(Mp3file::ID3v2::InvalidID3v2TagError))
94
238
  end
95
239
  end
96
240
 
97
241
  describe "An ID3v2.4 header with the footer header flag set:" do
98
242
  subject { Mp3file::ID3v2::Header.new(StringIO.new("ID3\x04\x00\x10\x00\x00\x00\x00")) }
99
- its(:version) { should == Mp3file::ID3v2::ID3V2_4_0 }
100
- its(:unsynchronized) { should == false }
101
- its(:extended_header) { should == false }
102
- its(:compression) { should == false }
103
- its(:experimental) { should == false }
104
- its(:footer) { should == true }
243
+
244
+ describe '#version' do
245
+ subject { super().version }
246
+ it { is_expected.to eq(Mp3file::ID3v2::ID3V2_4_0) }
247
+ end
248
+
249
+ describe '#unsynchronized' do
250
+ subject { super().unsynchronized }
251
+ it { is_expected.to eq(false) }
252
+ end
253
+
254
+ describe '#extended_header' do
255
+ subject { super().extended_header }
256
+ it { is_expected.to eq(false) }
257
+ end
258
+
259
+ describe '#compression' do
260
+ subject { super().compression }
261
+ it { is_expected.to eq(false) }
262
+ end
263
+
264
+ describe '#experimental' do
265
+ subject { super().experimental }
266
+ it { is_expected.to eq(false) }
267
+ end
268
+
269
+ describe '#footer' do
270
+ subject { super().footer }
271
+ it { is_expected.to eq(true) }
272
+ end
105
273
  end
106
274
  end
107
275
 
108
276
  describe "#version" do
109
277
  it "detects ID3v2.2.0" do
110
278
  t = Mp3file::ID3v2::Header.new(StringIO.new("ID3\x02\x00\x00\x00\x00\x00\x00"))
111
- t.version.should == Mp3file::ID3v2::ID3V2_2_0
279
+ expect(t.version).to eq(Mp3file::ID3v2::ID3V2_2_0)
112
280
  end
113
281
 
114
282
  it "detects ID3v2.3.0" do
115
283
  t = Mp3file::ID3v2::Header.new(StringIO.new("ID3\x03\x00\x00\x00\x00\x00\x00"))
116
- t.version.should == Mp3file::ID3v2::ID3V2_3_0
284
+ expect(t.version).to eq(Mp3file::ID3v2::ID3V2_3_0)
117
285
  end
118
286
 
119
287
  it "detects ID3v2.4.0" do
120
288
  t = Mp3file::ID3v2::Header.new(StringIO.new("ID3\x04\x00\x00\x00\x00\x00\x00"))
121
- t.version.should == Mp3file::ID3v2::ID3V2_4_0
289
+ expect(t.version).to eq(Mp3file::ID3v2::ID3V2_4_0)
122
290
  end
123
291
  end
124
292
 
125
293
  describe "#size" do
126
294
  it "properly reads the size of an ID3v2 tag" do
127
295
  t = Mp3file::ID3v2::Header.new(StringIO.new("ID3\x03\x00\x00\x00\x06\x49\x37"))
128
- t.tag_size.should == 107703
296
+ expect(t.tag_size).to eq(107703)
129
297
  end
130
298
  end
131
299
 
@@ -6,13 +6,45 @@ include CommonHelpers
6
6
  describe Mp3file::ID3v2::Tag do
7
7
  describe "An empty tag" do
8
8
  subject { Mp3file::ID3v2::Tag.new(StringIO.new("ID3\x03\x00\x00\x00\x00\x00\x00")) }
9
- its(:version) { should == Mp3file::ID3v2::ID3V2_3_0 }
10
- its(:unsynchronized) { should == false }
11
- its(:extended_header) { should == false }
12
- its(:compression) { should == false }
13
- its(:experimental) { should == false }
14
- its(:footer) { should == false }
15
- its(:size) { should == 10 }
16
- its(:frames) { should == [] }
9
+
10
+ describe '#version' do
11
+ subject { super().version }
12
+ it { is_expected.to eq(Mp3file::ID3v2::ID3V2_3_0) }
13
+ end
14
+
15
+ describe '#unsynchronized' do
16
+ subject { super().unsynchronized }
17
+ it { is_expected.to eq(false) }
18
+ end
19
+
20
+ describe '#extended_header' do
21
+ subject { super().extended_header }
22
+ it { is_expected.to eq(false) }
23
+ end
24
+
25
+ describe '#compression' do
26
+ subject { super().compression }
27
+ it { is_expected.to eq(false) }
28
+ end
29
+
30
+ describe '#experimental' do
31
+ subject { super().experimental }
32
+ it { is_expected.to eq(false) }
33
+ end
34
+
35
+ describe '#footer' do
36
+ subject { super().footer }
37
+ it { is_expected.to eq(false) }
38
+ end
39
+
40
+ describe '#size' do
41
+ subject { super().size }
42
+ it { is_expected.to eq(10) }
43
+ end
44
+
45
+ describe '#frames' do
46
+ subject { super().frames }
47
+ it { is_expected.to eq([]) }
48
+ end
17
49
  end
18
50
  end
@@ -6,51 +6,131 @@ include CommonHelpers
6
6
  describe Mp3file::ID3v2::Version do
7
7
  describe Mp3file::ID3v2::ID3V2_2_0 do
8
8
  subject { Mp3file::ID3v2::ID3V2_2_0 }
9
- its(:vbig) { should == 2 }
10
- its(:vmaj) { should == 2 }
11
- its(:vmin) { should == 0 }
12
- its(:to_s) { should == 'ID3v2.2.0' }
13
- its(:to_byte_string) { should == "\x02\x00" }
9
+
10
+ describe '#vbig' do
11
+ subject { super().vbig }
12
+ it { is_expected.to eq(2) }
13
+ end
14
+
15
+ describe '#vmaj' do
16
+ subject { super().vmaj }
17
+ it { is_expected.to eq(2) }
18
+ end
19
+
20
+ describe '#vmin' do
21
+ subject { super().vmin }
22
+ it { is_expected.to eq(0) }
23
+ end
24
+
25
+ describe '#to_s' do
26
+ subject { super().to_s }
27
+ it { is_expected.to eq('ID3v2.2.0') }
28
+ end
29
+
30
+ describe '#to_byte_string' do
31
+ subject { super().to_byte_string }
32
+ it { is_expected.to eq("\x02\x00") }
33
+ end
14
34
  end
15
35
 
16
36
  describe Mp3file::ID3v2::ID3V2_3_0 do
17
37
  subject { Mp3file::ID3v2::ID3V2_3_0 }
18
- its(:vbig) { should == 2 }
19
- its(:vmaj) { should == 3 }
20
- its(:vmin) { should == 0 }
21
- its(:to_s) { should == 'ID3v2.3.0' }
22
- its(:to_byte_string) { should == "\x03\x00" }
38
+
39
+ describe '#vbig' do
40
+ subject { super().vbig }
41
+ it { is_expected.to eq(2) }
42
+ end
43
+
44
+ describe '#vmaj' do
45
+ subject { super().vmaj }
46
+ it { is_expected.to eq(3) }
47
+ end
48
+
49
+ describe '#vmin' do
50
+ subject { super().vmin }
51
+ it { is_expected.to eq(0) }
52
+ end
53
+
54
+ describe '#to_s' do
55
+ subject { super().to_s }
56
+ it { is_expected.to eq('ID3v2.3.0') }
57
+ end
58
+
59
+ describe '#to_byte_string' do
60
+ subject { super().to_byte_string }
61
+ it { is_expected.to eq("\x03\x00") }
62
+ end
23
63
  end
24
64
 
25
65
  describe Mp3file::ID3v2::ID3V2_4_0 do
26
66
  subject { Mp3file::ID3v2::ID3V2_4_0 }
27
- its(:vbig) { should == 2 }
28
- its(:vmaj) { should == 4 }
29
- its(:vmin) { should == 0 }
30
- its(:to_s) { should == 'ID3v2.4.0' }
31
- its(:to_byte_string) { should == "\x04\x00" }
67
+
68
+ describe '#vbig' do
69
+ subject { super().vbig }
70
+ it { is_expected.to eq(2) }
71
+ end
72
+
73
+ describe '#vmaj' do
74
+ subject { super().vmaj }
75
+ it { is_expected.to eq(4) }
76
+ end
77
+
78
+ describe '#vmin' do
79
+ subject { super().vmin }
80
+ it { is_expected.to eq(0) }
81
+ end
82
+
83
+ describe '#to_s' do
84
+ subject { super().to_s }
85
+ it { is_expected.to eq('ID3v2.4.0') }
86
+ end
87
+
88
+ describe '#to_byte_string' do
89
+ subject { super().to_byte_string }
90
+ it { is_expected.to eq("\x04\x00") }
91
+ end
32
92
  end
33
93
 
34
94
  describe "#<=>" do
35
95
  it("should recognize that ID3v2.2 < ID3v2.3") do
36
- (Mp3file::ID3v2::ID3V2_2_0 <=> Mp3file::ID3v2::ID3V2_3_0).should == -1
96
+ expect(Mp3file::ID3v2::ID3V2_2_0 <=> Mp3file::ID3v2::ID3V2_3_0).to eq(-1)
37
97
  end
38
98
 
39
99
  it("should recognize that ID3v2.4 > ID3v2.2") do
40
- (Mp3file::ID3v2::ID3V2_4_0 <=> Mp3file::ID3v2::ID3V2_2_0).should == 1
100
+ expect(Mp3file::ID3v2::ID3V2_4_0 <=> Mp3file::ID3v2::ID3V2_2_0).to eq(1)
41
101
  end
42
102
 
43
103
  it("should recognize that ID3v2.3 == ID3v2.3") do
44
- (Mp3file::ID3v2::ID3V2_3_0 <=> Mp3file::ID3v2::ID3V2_3_0).should == 0
104
+ expect(Mp3file::ID3v2::ID3V2_3_0 <=> Mp3file::ID3v2::ID3V2_3_0).to eq(0)
45
105
  end
46
106
  end
47
107
 
48
108
  describe "#new" do
49
109
  subject { Mp3file::ID3v2::Version.new(3, 1) }
50
- its(:vbig) { should == 2 }
51
- its(:vmaj) { should == 3 }
52
- its(:vmin) { should == 1 }
53
- its(:to_s) { should == 'ID3v2.3.1' }
54
- its(:to_byte_string) { should == "\x03\x01" }
110
+
111
+ describe '#vbig' do
112
+ subject { super().vbig }
113
+ it { is_expected.to eq(2) }
114
+ end
115
+
116
+ describe '#vmaj' do
117
+ subject { super().vmaj }
118
+ it { is_expected.to eq(3) }
119
+ end
120
+
121
+ describe '#vmin' do
122
+ subject { super().vmin }
123
+ it { is_expected.to eq(1) }
124
+ end
125
+
126
+ describe '#to_s' do
127
+ subject { super().to_s }
128
+ it { is_expected.to eq('ID3v2.3.1') }
129
+ end
130
+
131
+ describe '#to_byte_string' do
132
+ subject { super().to_byte_string }
133
+ it { is_expected.to eq("\x03\x01") }
134
+ end
55
135
  end
56
136
  end