rtaglib 0.1.2 → 0.2.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.
@@ -0,0 +1,266 @@
1
+ #!/usr/bin/ruby
2
+ if File.exists? File.dirname(__FILE__)+"/taglib.so"
3
+ require File.dirname(__FILE__)+'/taglib'
4
+ BASE_DATA=File.dirname(__FILE__)+"/../test/data/"
5
+ else
6
+ require File.dirname(__FILE__)+'/../ext/taglib/taglib'
7
+ BASE_DATA=File.dirname(__FILE__)+"/data/"
8
+ end
9
+ require 'fileutils'
10
+ require 'test/unit'
11
+ class RtaglibReadTestCase < Test::Unit::TestCase
12
+ def setup
13
+ @data_dir=BASE_DATA
14
+ @temp_dir="/tmp/rtaglib"
15
+ FileUtils.mkdir(@temp_dir) if !File.exists? @temp_dir
16
+
17
+ end
18
+ def teardown
19
+ Dir.glob(@temp_dir+"/*").each{|f|
20
+ FileUtils.rm(f)
21
+ }
22
+ end
23
+ def get_copy(original)
24
+ original=~/.*\.(.+)/
25
+ ext=$1
26
+ copy=@temp_dir+"/test_"+sprintf("%06d",rand(10000))+"."+ext
27
+ FileUtils.copy(original, copy)
28
+ copy
29
+ end
30
+ # Taglib::File test for
31
+ # - writable?
32
+ # - open?
33
+ # - valid?
34
+ # - seek (with 1 and 2 arguments)
35
+ # - readBlock
36
+ # - find (with 1 and 2 arguments)
37
+ # - lenght
38
+ def test_file
39
+ mp3=@data_dir+"440Hz-5sec.mp3"
40
+ copy=get_copy(mp3)
41
+ file=Taglib::MPEG_File.new(mp3)
42
+ assert(file.writable?)
43
+ assert(file.open?)
44
+ assert(file.valid?)
45
+ file.seek(0);
46
+ expected=sprintf("%c%c%c%c%c%c%c%c%c%c",0x49,0x44,0x33,0x04,0x00,0x80, 0x00,0x00,0x07,0x76)
47
+ assert_equal(expected,file.readBlock(10))
48
+ expected=sprintf("%c%c%c%c%c%c%c%c%c%c",0x54,0x49,0x54,0x32,0x00,0x00, 0x00,0x10,0x00,0x00)
49
+ assert_equal(expected,file.readBlock(10))
50
+
51
+ file.seek(-6, Taglib::File::End)
52
+ expected=sprintf("%c%c%c%c%c%c",0x77,0x61,0x72,0x00,0x01,0x47)
53
+ assert_equal(expected,file.readBlock(6))
54
+
55
+ needle=sprintf("%c%c%c%c%c",0x20,0xF1,0x8A,0xE6,0x63)
56
+ assert_equal(0x40D,file.find1(needle))
57
+ needle=sprintf("%c%c%c%c%c",0x22,0x22,0x22,0xE6,0x63)
58
+ assert_equal(-1,file.find2(needle,0))
59
+ assert_equal(0x7B46,file.length())
60
+
61
+ end
62
+ # Taglib::FileRef test for
63
+ # - ::defaultFileExtensions()
64
+ # - length
65
+ # - save
66
+ # - tag: getters and setters for title, artist, album, year, track, genre, comment
67
+ # - audioproperties: bitrate,channels,sampleRate and channels
68
+ # - isNull (null?)
69
+ def test_fileref
70
+
71
+ assert_equal(%w{ogg flac oga mp3 mpc wv spx tta}, Taglib::FileRef.defaultFileExtensions())
72
+ bitrate={'flac'=>168,'wv'=>235,'mp3'=>48,'mpc'=>41,'ogg'=>80}
73
+ channels={'flac'=>1,'wv'=>1,'mp3'=>1,'mpc'=>2,'ogg'=>1}
74
+
75
+ Dir.glob(@data_dir+"/*").each{|f|
76
+ fr=Taglib::FileRef.new(f)
77
+ f=~/.+\.(.+)/
78
+ ext=$1
79
+
80
+ assert_equal(5,fr.audioProperties.length, "Error on file #{f}")
81
+ assert_equal(bitrate[ext],fr.audioProperties.bitrate, "Error on file #{f}")
82
+ assert_equal(44100,fr.audioProperties.sampleRate, "Error on file #{f}")
83
+ assert_equal(channels[ext],fr.audioProperties.channels, "Error on file #{f}")
84
+
85
+ assert_equal("440Hz Sine Wave",fr.tag().title,"Error on file #{f}")
86
+ assert_equal("Dr. Lex",fr.tag().artist,"Error on file #{f}")
87
+ assert_equal("http://www.dr-lex.be/",fr.tag().album,"Error on file #{f}")
88
+ assert_equal(2008,fr.tag().year,"Error on file #{f}")
89
+ assert_equal(1,fr.tag().track,"Error on file #{f}")
90
+ assert_equal("Lo-Fi",fr.tag().genre, "Error on file #{f}")
91
+ assert_equal("http://www.dr-lex.be/software/testsounds.html", fr.tag().comment,"Error on file #{f}")
92
+ assert(!fr.null?)
93
+ }
94
+ mp3=@data_dir+"440Hz-5sec.mp3"
95
+ copy=get_copy(mp3)
96
+ fr2=Taglib::FileRef.new(copy)
97
+ fr2.tag().title="new title";
98
+ fr2.tag().artist="new artist";
99
+ fr2.tag().album="new album";
100
+ fr2.tag().year=2000;
101
+ fr2.tag().track=10;
102
+ fr2.tag().genre="Rock";
103
+ fr2.tag().comment="new comment";
104
+
105
+ fr2.save()
106
+ copy2=get_copy(copy)
107
+ fr2.tag().title="sfsd"
108
+ fr2.save()
109
+ fr3=Taglib::FileRef.new(copy2)
110
+ assert_equal("new title",fr3.tag.title)
111
+ assert_equal("new artist",fr3.tag.artist)
112
+ assert_equal("new album",fr3.tag.album)
113
+ assert_equal(2000,fr3.tag.year)
114
+ assert_equal(10,fr3.tag.track)
115
+ assert_equal("Rock",fr3.tag.genre)
116
+ assert_equal("new comment",fr3.tag.comment)
117
+
118
+ end
119
+ def test_flac
120
+ original=@data_dir+"440Hz-5sec.flac"
121
+ copy_xiph=get_copy(original)
122
+ copy_id1=get_copy(original)
123
+ copy_id2=get_copy(original)
124
+ flac_xiph=Taglib::FLAC_File.new(copy_xiph,true)
125
+ flac_id1=Taglib::FLAC_File.new(copy_id1,true)
126
+ flac_id2=Taglib::FLAC_File.new(copy_id2,true)
127
+
128
+ # file
129
+ assert_equal(34,flac_xiph.streamInfoData.length)
130
+ assert_equal(105299, flac_xiph.streamLength)
131
+ # audioproperties
132
+ ap=flac_xiph.audioProperties
133
+ assert_equal(5,ap.length)
134
+ assert_equal(168,ap.bitrate)
135
+ assert_equal(44100,ap.sampleRate)
136
+ assert_equal(1,ap.channels)
137
+ assert_equal(16,ap.sampleWidth)
138
+ # comments
139
+ xiph=flac_xiph.xiphComment()
140
+ xiph.setTitle("xiph")
141
+ flac_xiph.save()
142
+ assert_equal("xiph",flac_xiph.tag().title)
143
+ assert_nil(flac_xiph.ID3v1Tag())
144
+ assert_nil(flac_xiph.ID3v2Tag())
145
+
146
+ id1=flac_id1.ID3v1Tag(true)
147
+
148
+ id1.setTitle("id1")
149
+ flac_id1.save()
150
+ assert_equal("id1",id1.title)
151
+
152
+ assert_not_nil(flac_id1.xiphComment())
153
+ assert_nil(flac_id1.ID3v2Tag())
154
+
155
+
156
+ id2=flac_id2.ID3v2Tag(true)
157
+ id2.setTitle("id2")
158
+ flac_id2.save()
159
+ assert_equal("id2",id2.title)
160
+
161
+ assert_not_nil(flac_id2.xiphComment())
162
+ assert_nil(flac_id2.ID3v1Tag())
163
+ end
164
+ #
165
+ def test_mpeg
166
+ original=@data_dir+"440Hz-5sec.mp3"
167
+ copy=get_copy(original)
168
+ mp3=Taglib::MPEG_File.new(copy)
169
+ %w{tag ID3v1Tag ID3v2Tag}.each {|f|
170
+ assert_equal("440Hz Sine Wave",mp3.send(f).title)
171
+ }
172
+ # file
173
+ # strip only id3v1
174
+ mp3.strip(Taglib::MPEG_File::ID3v1)
175
+ assert_nil(mp3.ID3v1Tag)
176
+ assert_not_nil(mp3.ID3v2Tag)
177
+ copy=get_copy(original)
178
+ mp3=Taglib::MPEG_File.new(copy)
179
+ # strip all
180
+ mp3.strip()
181
+ assert_nil(mp3.ID3v1Tag)
182
+ assert_nil(mp3.ID3v2Tag)
183
+
184
+ # properties
185
+
186
+ assert_equal(0,mp3.audioProperties.version)
187
+ assert_equal(3,mp3.audioProperties.layer)
188
+ assert(!mp3.audioProperties.protectionEnabled)
189
+ assert_equal(Taglib::MPEG_Header::SingleChannel, mp3.audioProperties.channelMode)
190
+ assert(!mp3.audioProperties.isCopyrighted)
191
+ assert(mp3.audioProperties.isOriginal)
192
+
193
+
194
+
195
+ end
196
+ # BAD: strip doesn't work
197
+ def _test_mpc
198
+ original=@data_dir+"440Hz-5sec.mpc"
199
+ copy=get_copy(original)
200
+ fr=Taglib::FileRef.new(copy)
201
+ fr.tag.title="440Hz Sine Wave"
202
+ fr.save
203
+ mpc=Taglib::MPEG_File.new(copy)
204
+ %w{tag APETag}.each {|f|
205
+ assert_equal("440Hz Sine Wave",mpc.send(f).title, "#{f} tag")
206
+ }
207
+ # file
208
+ # strip only id3v1
209
+ mpc.strip(Taglib::MPC_File::ID3v1)
210
+ mpc.save
211
+ mpc1=Taglib::MPEG_File.new(copy)
212
+
213
+ # assert_nil(mpc1.ID3v1Tag)
214
+ assert_not_nil(mpc1.APETag)
215
+ copy=get_copy(original)
216
+ mpc=Taglib::MPC_File.new(copy)
217
+ # strip all
218
+ mpc.strip()
219
+ mpc.save
220
+ mpc1=Taglib::MPEG_File.new(copy)
221
+
222
+ # assert_nil(mpc1.ID3v1Tag)
223
+ assert_nil(mpc1.APETag)
224
+
225
+ # properties
226
+
227
+ assert_equal(0,mp3.audioProperties.version)
228
+ assert_equal(3,mp3.audioProperties.layer)
229
+ assert(!mp3.audioProperties.protectionEnabled)
230
+ assert_equal(Taglib::MPEG_Header::SingleChannel, mp3.audioProperties.channelMode)
231
+ assert(!mp3.audioProperties.isCopyrighted)
232
+ assert(mp3.audioProperties.isOriginal)
233
+
234
+
235
+
236
+ end
237
+
238
+
239
+
240
+ def test_fieldmap
241
+ fl=Taglib::FieldListMap.new()
242
+ fl.insert("key",["val1","val2"])
243
+ assert_equal(["val1","val2"],fl["key"])
244
+ assert_nil(fl["2"])
245
+ fl.insert("key2",["val3","val4"])
246
+ assert_equal({'key'=>["val1","val2"],"key2"=>["val3","val4"]}, fl.hash)
247
+ assert_equal(fl.size,fl.length)
248
+ end
249
+ def test_xiph_comment
250
+ original=@data_dir+"440Hz-5sec.flac"
251
+ copy_xiph=get_copy(original)
252
+ flac_xiph=Taglib::FLAC_File.new(copy_xiph,true)
253
+ xc=flac_xiph.xiphComment
254
+ fl=xc.fieldListMap
255
+ fl.hash.each {|k,v|
256
+ xc.removeField(k)
257
+ }
258
+ assert(xc.empty?)
259
+ xc.setTitle("T")
260
+ xc.setArtist("A")
261
+ xc.addField("c","C1",false)
262
+ xc.addField("c","C2",false)
263
+ expected={"TITLE"=>["T"],"ARTIST"=>["A"],"C"=>["C1","C2"]}
264
+ assert_equal(expected,fl.hash)
265
+ end
266
+ end
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,19 +1,20 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'rubygems'
3
- require 'rtaglib'
3
+ require File.dirname(__FILE__)+'/../ext/tagfile/tagfile'
4
4
  require 'test/unit'
5
- class RtaglibTestCase < Test::Unit::TestCase
5
+ class RTagFileReadTestCase < Test::Unit::TestCase
6
6
  def setup
7
- @file=::TagFile::File.new(File.dirname(__FILE__)+"/data/saw.mp3")
7
+
8
+ @file=::TagFile::File.new(File.dirname(__FILE__)+"/data/440Hz-5sec.mp3")
8
9
  end
9
10
  def test_title()
10
- assert_equal("Saw",@file.title)
11
+ assert_equal("440Hz Sine Wave",@file.title)
11
12
  end
12
13
  def test_artist()
13
- assert_equal("Claudio Bustos",@file.artist)
14
+ assert_equal("Dr. Lex",@file.artist)
14
15
  end
15
16
  def test_album()
16
- assert_equal("Catori",@file.album)
17
+ assert_equal("http://www.dr-lex.be/",@file.album)
17
18
  end
18
19
  def test_genre()
19
20
  assert_equal("Lo-Fi",@file.genre)
@@ -22,22 +23,22 @@ class RtaglibTestCase < Test::Unit::TestCase
22
23
  assert_equal(1,@file.track)
23
24
  end
24
25
  def test_year()
25
- assert_equal(2005,@file.year)
26
+ assert_equal(2008,@file.year)
26
27
  end
27
28
  def test_comment()
28
- assert_equal("Test for catori",@file.comment)
29
+ assert_equal("http://www.dr-lex.be/software/testsounds.html",@file.comment)
29
30
  end
30
31
  def test_length()
31
- assert_equal(1,@file.length)
32
+ assert_equal(5, @file.length)
32
33
  end
33
34
  def test_bitrate()
34
- assert_equal(128,@file.bitrate)
35
+ assert_equal(48, @file.bitrate)
35
36
  end
36
37
  def test_samplerate()
37
38
  assert_equal(44100,@file.samplerate)
38
39
  end
39
40
  def test_channels()
40
- assert_equal(2,@file.channels)
41
+ assert_equal(1,@file.channels)
41
42
  end
42
43
  end
43
44
 
@@ -0,0 +1,266 @@
1
+ #!/usr/bin/ruby
2
+ if File.exists? File.dirname(__FILE__)+"/taglib.so"
3
+ require File.dirname(__FILE__)+'/taglib'
4
+ BASE_DATA=File.dirname(__FILE__)+"/../test/data/"
5
+ else
6
+ require File.dirname(__FILE__)+'/../ext/taglib/taglib'
7
+ BASE_DATA=File.dirname(__FILE__)+"/data/"
8
+ end
9
+ require 'fileutils'
10
+ require 'test/unit'
11
+ class RtaglibReadTestCase < Test::Unit::TestCase
12
+ def setup
13
+ @data_dir=BASE_DATA
14
+ @temp_dir="/tmp/rtaglib"
15
+ FileUtils.mkdir(@temp_dir) if !File.exists? @temp_dir
16
+
17
+ end
18
+ def teardown
19
+ Dir.glob(@temp_dir+"/*").each{|f|
20
+ FileUtils.rm(f)
21
+ }
22
+ end
23
+ def get_copy(original)
24
+ original=~/.*\.(.+)/
25
+ ext=$1
26
+ copy=@temp_dir+"/test_"+sprintf("%06d",rand(10000))+"."+ext
27
+ FileUtils.copy(original, copy)
28
+ copy
29
+ end
30
+ # Taglib::File test for
31
+ # - writable?
32
+ # - open?
33
+ # - valid?
34
+ # - seek (with 1 and 2 arguments)
35
+ # - readBlock
36
+ # - find (with 1 and 2 arguments)
37
+ # - lenght
38
+ def test_file
39
+ mp3=@data_dir+"440Hz-5sec.mp3"
40
+ copy=get_copy(mp3)
41
+ file=Taglib::MPEG_File.new(mp3)
42
+ assert(file.writable?)
43
+ assert(file.open?)
44
+ assert(file.valid?)
45
+ file.seek(0);
46
+ expected=sprintf("%c%c%c%c%c%c%c%c%c%c",0x49,0x44,0x33,0x04,0x00,0x80, 0x00,0x00,0x07,0x76)
47
+ assert_equal(expected,file.readBlock(10))
48
+ expected=sprintf("%c%c%c%c%c%c%c%c%c%c",0x54,0x49,0x54,0x32,0x00,0x00, 0x00,0x10,0x00,0x00)
49
+ assert_equal(expected,file.readBlock(10))
50
+
51
+ file.seek(-6, Taglib::File::End)
52
+ expected=sprintf("%c%c%c%c%c%c",0x77,0x61,0x72,0x00,0x01,0x47)
53
+ assert_equal(expected,file.readBlock(6))
54
+
55
+ needle=sprintf("%c%c%c%c%c",0x20,0xF1,0x8A,0xE6,0x63)
56
+ assert_equal(0x40D,file.find1(needle))
57
+ needle=sprintf("%c%c%c%c%c",0x22,0x22,0x22,0xE6,0x63)
58
+ assert_equal(-1,file.find2(needle,0))
59
+ assert_equal(0x7B46,file.length())
60
+
61
+ end
62
+ # Taglib::FileRef test for
63
+ # - ::defaultFileExtensions()
64
+ # - length
65
+ # - save
66
+ # - tag: getters and setters for title, artist, album, year, track, genre, comment
67
+ # - audioproperties: bitrate,channels,sampleRate and channels
68
+ # - isNull (null?)
69
+ def test_fileref
70
+
71
+ assert_equal(%w{ogg flac oga mp3 mpc wv spx tta}, Taglib::FileRef.defaultFileExtensions())
72
+ bitrate={'flac'=>168,'wv'=>235,'mp3'=>48,'mpc'=>41,'ogg'=>80}
73
+ channels={'flac'=>1,'wv'=>1,'mp3'=>1,'mpc'=>2,'ogg'=>1}
74
+
75
+ Dir.glob(@data_dir+"/*").each{|f|
76
+ fr=Taglib::FileRef.new(f)
77
+ f=~/.+\.(.+)/
78
+ ext=$1
79
+
80
+ assert_equal(5,fr.audioProperties.length, "Error on file #{f}")
81
+ assert_equal(bitrate[ext],fr.audioProperties.bitrate, "Error on file #{f}")
82
+ assert_equal(44100,fr.audioProperties.sampleRate, "Error on file #{f}")
83
+ assert_equal(channels[ext],fr.audioProperties.channels, "Error on file #{f}")
84
+
85
+ assert_equal("440Hz Sine Wave",fr.tag().title,"Error on file #{f}")
86
+ assert_equal("Dr. Lex",fr.tag().artist,"Error on file #{f}")
87
+ assert_equal("http://www.dr-lex.be/",fr.tag().album,"Error on file #{f}")
88
+ assert_equal(2008,fr.tag().year,"Error on file #{f}")
89
+ assert_equal(1,fr.tag().track,"Error on file #{f}")
90
+ assert_equal("Lo-Fi",fr.tag().genre, "Error on file #{f}")
91
+ assert_equal("http://www.dr-lex.be/software/testsounds.html", fr.tag().comment,"Error on file #{f}")
92
+ assert(!fr.null?)
93
+ }
94
+ mp3=@data_dir+"440Hz-5sec.mp3"
95
+ copy=get_copy(mp3)
96
+ fr2=Taglib::FileRef.new(copy)
97
+ fr2.tag().title="new title";
98
+ fr2.tag().artist="new artist";
99
+ fr2.tag().album="new album";
100
+ fr2.tag().year=2000;
101
+ fr2.tag().track=10;
102
+ fr2.tag().genre="Rock";
103
+ fr2.tag().comment="new comment";
104
+
105
+ fr2.save()
106
+ copy2=get_copy(copy)
107
+ fr2.tag().title="sfsd"
108
+ fr2.save()
109
+ fr3=Taglib::FileRef.new(copy2)
110
+ assert_equal("new title",fr3.tag.title)
111
+ assert_equal("new artist",fr3.tag.artist)
112
+ assert_equal("new album",fr3.tag.album)
113
+ assert_equal(2000,fr3.tag.year)
114
+ assert_equal(10,fr3.tag.track)
115
+ assert_equal("Rock",fr3.tag.genre)
116
+ assert_equal("new comment",fr3.tag.comment)
117
+
118
+ end
119
+ def test_flac
120
+ original=@data_dir+"440Hz-5sec.flac"
121
+ copy_xiph=get_copy(original)
122
+ copy_id1=get_copy(original)
123
+ copy_id2=get_copy(original)
124
+ flac_xiph=Taglib::FLAC_File.new(copy_xiph,true)
125
+ flac_id1=Taglib::FLAC_File.new(copy_id1,true)
126
+ flac_id2=Taglib::FLAC_File.new(copy_id2,true)
127
+
128
+ # file
129
+ assert_equal(34,flac_xiph.streamInfoData.length)
130
+ assert_equal(105299, flac_xiph.streamLength)
131
+ # audioproperties
132
+ ap=flac_xiph.audioProperties
133
+ assert_equal(5,ap.length)
134
+ assert_equal(168,ap.bitrate)
135
+ assert_equal(44100,ap.sampleRate)
136
+ assert_equal(1,ap.channels)
137
+ assert_equal(16,ap.sampleWidth)
138
+ # comments
139
+ xiph=flac_xiph.xiphComment()
140
+ xiph.setTitle("xiph")
141
+ flac_xiph.save()
142
+ assert_equal("xiph",flac_xiph.tag().title)
143
+ assert_nil(flac_xiph.ID3v1Tag())
144
+ assert_nil(flac_xiph.ID3v2Tag())
145
+
146
+ id1=flac_id1.ID3v1Tag(true)
147
+
148
+ id1.setTitle("id1")
149
+ flac_id1.save()
150
+ assert_equal("id1",id1.title)
151
+
152
+ assert_not_nil(flac_id1.xiphComment())
153
+ assert_nil(flac_id1.ID3v2Tag())
154
+
155
+
156
+ id2=flac_id2.ID3v2Tag(true)
157
+ id2.setTitle("id2")
158
+ flac_id2.save()
159
+ assert_equal("id2",id2.title)
160
+
161
+ assert_not_nil(flac_id2.xiphComment())
162
+ assert_nil(flac_id2.ID3v1Tag())
163
+ end
164
+ #
165
+ def test_mpeg
166
+ original=@data_dir+"440Hz-5sec.mp3"
167
+ copy=get_copy(original)
168
+ mp3=Taglib::MPEG_File.new(copy)
169
+ %w{tag ID3v1Tag ID3v2Tag}.each {|f|
170
+ assert_equal("440Hz Sine Wave",mp3.send(f).title)
171
+ }
172
+ # file
173
+ # strip only id3v1
174
+ mp3.strip(Taglib::MPEG_File::ID3v1)
175
+ assert_nil(mp3.ID3v1Tag)
176
+ assert_not_nil(mp3.ID3v2Tag)
177
+ copy=get_copy(original)
178
+ mp3=Taglib::MPEG_File.new(copy)
179
+ # strip all
180
+ mp3.strip()
181
+ assert_nil(mp3.ID3v1Tag)
182
+ assert_nil(mp3.ID3v2Tag)
183
+
184
+ # properties
185
+
186
+ assert_equal(0,mp3.audioProperties.version)
187
+ assert_equal(3,mp3.audioProperties.layer)
188
+ assert(!mp3.audioProperties.protectionEnabled)
189
+ assert_equal(Taglib::MPEG_Header::SingleChannel, mp3.audioProperties.channelMode)
190
+ assert(!mp3.audioProperties.isCopyrighted)
191
+ assert(mp3.audioProperties.isOriginal)
192
+
193
+
194
+
195
+ end
196
+ # BAD: strip doesn't work
197
+ def _test_mpc
198
+ original=@data_dir+"440Hz-5sec.mpc"
199
+ copy=get_copy(original)
200
+ fr=Taglib::FileRef.new(copy)
201
+ fr.tag.title="440Hz Sine Wave"
202
+ fr.save
203
+ mpc=Taglib::MPEG_File.new(copy)
204
+ %w{tag APETag}.each {|f|
205
+ assert_equal("440Hz Sine Wave",mpc.send(f).title, "#{f} tag")
206
+ }
207
+ # file
208
+ # strip only id3v1
209
+ mpc.strip(Taglib::MPC_File::ID3v1)
210
+ mpc.save
211
+ mpc1=Taglib::MPEG_File.new(copy)
212
+
213
+ # assert_nil(mpc1.ID3v1Tag)
214
+ assert_not_nil(mpc1.APETag)
215
+ copy=get_copy(original)
216
+ mpc=Taglib::MPC_File.new(copy)
217
+ # strip all
218
+ mpc.strip()
219
+ mpc.save
220
+ mpc1=Taglib::MPEG_File.new(copy)
221
+
222
+ # assert_nil(mpc1.ID3v1Tag)
223
+ assert_nil(mpc1.APETag)
224
+
225
+ # properties
226
+
227
+ assert_equal(0,mp3.audioProperties.version)
228
+ assert_equal(3,mp3.audioProperties.layer)
229
+ assert(!mp3.audioProperties.protectionEnabled)
230
+ assert_equal(Taglib::MPEG_Header::SingleChannel, mp3.audioProperties.channelMode)
231
+ assert(!mp3.audioProperties.isCopyrighted)
232
+ assert(mp3.audioProperties.isOriginal)
233
+
234
+
235
+
236
+ end
237
+
238
+
239
+
240
+ def test_fieldmap
241
+ fl=Taglib::FieldListMap.new()
242
+ fl.insert("key",["val1","val2"])
243
+ assert_equal(["val1","val2"],fl["key"])
244
+ assert_nil(fl["2"])
245
+ fl.insert("key2",["val3","val4"])
246
+ assert_equal({'key'=>["val1","val2"],"key2"=>["val3","val4"]}, fl.hash)
247
+ assert_equal(fl.size,fl.length)
248
+ end
249
+ def test_xiph_comment
250
+ original=@data_dir+"440Hz-5sec.flac"
251
+ copy_xiph=get_copy(original)
252
+ flac_xiph=Taglib::FLAC_File.new(copy_xiph,true)
253
+ xc=flac_xiph.xiphComment
254
+ fl=xc.fieldListMap
255
+ fl.hash.each {|k,v|
256
+ xc.removeField(k)
257
+ }
258
+ assert(xc.empty?)
259
+ xc.setTitle("T")
260
+ xc.setArtist("A")
261
+ xc.addField("c","C1",false)
262
+ xc.addField("c","C2",false)
263
+ expected={"TITLE"=>["T"],"ARTIST"=>["A"],"C"=>["C1","C2"]}
264
+ assert_equal(expected,fl.hash)
265
+ end
266
+ end