1
package org.jaudiotagger.tag.id3;
3
import junit.framework.Test;
4
import junit.framework.TestCase;
5
import junit.framework.TestSuite;
6
import org.jaudiotagger.tag.FieldKey;
7
import org.jaudiotagger.tag.TagOptionSingleton;
8
import org.jaudiotagger.tag.TagTextField;
13
public class ID3v11TagTest extends TestCase
15
public static final String ARTIST = "artist";
16
public static final String ALBUM = "album";
17
public static final String COMMENT = "comment";
18
public static final String TITLE = "title";
19
public static final String TRACK_VALUE = "10";
20
public static final String GENRE_VAL = "Country";
21
public static final String YEAR = "1971";
24
* Provides an initilised object to be used in other tests
25
* to prevent code duplication
29
public static ID3v11Tag getInitialisedTag()
31
ID3v11Tag v11Tag = new ID3v11Tag();
32
v11Tag.setArtist(ARTIST);
33
v11Tag.setAlbum(ALBUM);
34
v11Tag.setComment(COMMENT);
35
v11Tag.setTitle(TITLE);
36
v11Tag.setTrack(TRACK_VALUE);
37
v11Tag.setGenre(GENRE_VAL);
47
public ID3v11TagTest(String arg0)
53
* Command line entrance.
57
public static void main(String[] args)
59
junit.textui.TestRunner.run(ID3v11TagTest.suite());
62
/////////////////////////////////////////////////////////////////////////
63
// TestCase classes to override
64
/////////////////////////////////////////////////////////////////////////
69
protected void setUp()
71
TagOptionSingleton.getInstance().setToDefault();
77
protected void tearDown()
84
// protected void runTest()
89
* Builds the Test Suite.
91
* @return the Test Suite.
93
public static Test suite()
95
return new TestSuite(ID3v11TagTest.class);
98
/////////////////////////////////////////////////////////////////////////
100
/////////////////////////////////////////////////////////////////////////
102
public void testCreateID3v11Tag()
104
ID3v11Tag v11Tag = new ID3v11Tag();
105
v11Tag.setArtist(ARTIST);
106
v11Tag.setAlbum(ALBUM);
107
v11Tag.setComment(COMMENT);
108
v11Tag.setTitle(TITLE);
109
v11Tag.setTrack(TRACK_VALUE);
110
v11Tag.setGenre(GENRE_VAL);
111
v11Tag.setYear(YEAR);
113
assertEquals((byte) 1, v11Tag.getRelease());
114
assertEquals((byte) 1, v11Tag.getMajorVersion());
115
assertEquals((byte) 0, v11Tag.getRevision());
117
assertEquals(ARTIST, v11Tag.getFirst(FieldKey.ARTIST));
118
assertEquals(ALBUM, v11Tag.getFirst(FieldKey.ALBUM));
119
assertEquals(COMMENT, v11Tag.getFirstComment());
120
assertEquals(TITLE, v11Tag.getFirst(FieldKey.TITLE));
121
assertEquals(TRACK_VALUE, v11Tag.getFirst(FieldKey.TRACK));
122
assertEquals(GENRE_VAL, v11Tag.getFirst(FieldKey.GENRE));
123
assertEquals(YEAR, v11Tag.getFirst(FieldKey.YEAR));
125
//Check with entagged interface
126
assertEquals(ID3v1TagTest.ARTIST, ((TagTextField) v11Tag.getArtist().get(0)).getContent());
127
assertEquals(ID3v1TagTest.ALBUM, ((TagTextField) v11Tag.getAlbum().get(0)).getContent());
128
assertEquals(ID3v1TagTest.COMMENT, ((TagTextField) v11Tag.getComment().get(0)).getContent());
129
assertEquals(ID3v1TagTest.TITLE, ((TagTextField) v11Tag.getTitle().get(0)).getContent());
130
assertEquals(ID3v1TagTest.GENRE_VAL, ((TagTextField) v11Tag.getGenre().get(0)).getContent());
131
assertEquals(ID3v1TagTest.TRACK_VALUE, ((TagTextField) v11Tag.getTrack().get(0)).getContent());
132
assertEquals(ID3v1TagTest.YEAR, ((TagTextField) v11Tag.getYear().get(0)).getContent());
137
public void testCreateID3v11FromID3v24()
139
ID3v24Tag v2Tag = new ID3v24Tag();
140
ID3v11Tag v1Tag = new ID3v11Tag(v2Tag);
141
assertNotNull(v1Tag);
142
assertEquals((byte) 1, v1Tag.getRelease());
143
assertEquals((byte) 1, v1Tag.getMajorVersion());
144
assertEquals((byte) 0, v1Tag.getRevision());
149
public void testCreateID3v11FromID3v23()
151
ID3v23Tag v2Tag = new ID3v23Tag();
152
ID3v11Tag v1Tag = new ID3v11Tag(v2Tag);
153
assertNotNull(v1Tag);
154
assertEquals((byte) 1, v1Tag.getRelease());
155
assertEquals((byte) 1, v1Tag.getMajorVersion());
156
assertEquals((byte) 0, v1Tag.getRevision());
160
public void testCreateID3v11FromID3v22()
162
ID3v22Tag v2Tag = new ID3v22Tag();
163
ID3v11Tag v1Tag = new ID3v11Tag(v2Tag);
164
assertNotNull(v1Tag);
165
assertEquals((byte) 1, v1Tag.getRelease());
166
assertEquals((byte) 1, v1Tag.getMajorVersion());
167
assertEquals((byte) 0, v1Tag.getRevision());
170
public void testNewInterface()
172
Exception exceptionCaught = null;
173
ID3v1Tag v1Tag = new ID3v11Tag();
174
assertTrue(v1Tag.isEmpty());
176
v1Tag.setField(new ID3v1TagField(FieldKey.ARTIST.name(), "artist"));
177
assertEquals("artist", ((TagTextField) v1Tag.getFields(FieldKey.ARTIST).get(0)).getContent());
178
assertEquals("artist", v1Tag.getFirst(FieldKey.ARTIST));
179
assertEquals("artist", ((TagTextField) (v1Tag.getArtist().get(0))).getContent());
180
assertEquals("artist", ((TagTextField) v1Tag.getFirstField(FieldKey.ARTIST.name())).getContent());
181
assertEquals("artist", ((TagTextField) (v1Tag.get(FieldKey.ARTIST.name()).get(0))).getContent());
183
v1Tag.setField(new ID3v1TagField(FieldKey.ALBUM.name(), "album"));
184
assertEquals("album", ((TagTextField) v1Tag.getFields(FieldKey.ALBUM).get(0)).getContent());
185
assertEquals("album", v1Tag.getFirst(FieldKey.ALBUM));
186
assertEquals("album", ((TagTextField) (v1Tag.getAlbum().get(0))).getContent());
187
assertEquals("album", ((TagTextField) v1Tag.getFirstField(FieldKey.ALBUM.name())).getContent());
189
v1Tag.setField(new ID3v1TagField(FieldKey.TITLE.name(), "title"));
190
assertEquals("title", ((TagTextField) v1Tag.getFields(FieldKey.TITLE).get(0)).getContent());
191
assertEquals("title", v1Tag.getFirst(FieldKey.TITLE));
192
assertEquals("title", ((TagTextField) (v1Tag.getTitle().get(0))).getContent());
193
assertEquals("title", ((TagTextField) v1Tag.getFirstField(FieldKey.TITLE.name())).getContent());
195
v1Tag.setField(new ID3v1TagField(FieldKey.YEAR.name(), "year"));
196
assertEquals("year", ((TagTextField) v1Tag.getFields(FieldKey.YEAR).get(0)).getContent());
197
assertEquals("year", v1Tag.getFirst(FieldKey.YEAR));
198
assertEquals("year", ((TagTextField) (v1Tag.getYear().get(0))).getContent());
199
assertEquals("year", ((TagTextField) v1Tag.getFirstField(FieldKey.YEAR.name())).getContent());
201
v1Tag.setField(new ID3v1TagField(FieldKey.GENRE.name(), "Country"));
202
assertEquals("Country", ((TagTextField) v1Tag.getFields(FieldKey.GENRE).get(0)).getContent());
203
assertEquals("Country", v1Tag.getFirst(FieldKey.GENRE));
204
assertEquals("Country", ((TagTextField) (v1Tag.getGenre().get(0))).getContent());
205
assertEquals("Country", ((TagTextField) v1Tag.getFirstField(FieldKey.GENRE.name())).getContent());
207
v1Tag.setField(new ID3v1TagField(FieldKey.COMMENT.name(), "comment"));
208
assertEquals("comment", ((TagTextField) v1Tag.getFields(FieldKey.COMMENT).get(0)).getContent());
209
assertEquals("comment", v1Tag.getFirstComment());
210
assertEquals("comment", ((TagTextField) (v1Tag.getFields(FieldKey.COMMENT).get(0))).getContent());
211
assertEquals("comment", ((TagTextField) v1Tag.getFirstField(FieldKey.COMMENT.name())).getContent());
213
v1Tag.setField(new ID3v1TagField(FieldKey.TRACK.name(), "5"));
214
assertEquals("5", ((TagTextField) v1Tag.getFields(FieldKey.TRACK).get(0)).getContent());
215
assertEquals("5", v1Tag.getFirst(FieldKey.TRACK));
216
assertEquals("5", ((TagTextField) (v1Tag.getTrack().get(0))).getContent());
217
assertEquals("5", ((TagTextField) v1Tag.getFirstField(FieldKey.TRACK.name())).getContent());
219
//Check nothing been overwritten
220
assertEquals("year", v1Tag.getFirst(FieldKey.YEAR));
221
assertEquals("Country", v1Tag.getFirst(FieldKey.GENRE));
222
assertEquals("title", v1Tag.getFirst(FieldKey.TITLE));
223
assertEquals("album", v1Tag.getFirst(FieldKey.ALBUM));
224
assertEquals("artist", v1Tag.getFirst(FieldKey.ARTIST));
226
//Delete artist field
227
v1Tag.deleteField(FieldKey.ARTIST);
228
assertEquals("", v1Tag.getFirst(FieldKey.ARTIST));
229
assertEquals("year", v1Tag.getFirst(FieldKey.YEAR));
230
assertEquals("Country", v1Tag.getFirst(FieldKey.GENRE));
231
assertEquals("title", v1Tag.getFirst(FieldKey.TITLE));
232
assertEquals("album", v1Tag.getFirst(FieldKey.ALBUM));
235
assertFalse(v1Tag.isEmpty());
237
v1Tag.deleteField(FieldKey.ALBUM);
238
v1Tag.deleteField(FieldKey.YEAR);
239
v1Tag.deleteField(FieldKey.GENRE);
240
v1Tag.deleteField(FieldKey.TITLE);
241
v1Tag.deleteField(FieldKey.COMMENT);
242
v1Tag.setField(new ID3v1TagField(FieldKey.COMMENT.name(), ""));
243
v1Tag.deleteField(FieldKey.TRACK);
245
assertTrue(v1Tag.isEmpty());
250
v1Tag.setField(new ID3v1TagField(FieldKey.COMMENT.name(), null));
256
assertTrue(exceptionCaught instanceof IllegalArgumentException);
1
package org.jaudiotagger.tag.id3;
3
import junit.framework.Test;
4
import junit.framework.TestCase;
5
import junit.framework.TestSuite;
6
import org.jaudiotagger.AbstractTestCase;
7
import org.jaudiotagger.audio.mp3.MP3File;
8
import org.jaudiotagger.tag.FieldKey;
9
import org.jaudiotagger.tag.TagOptionSingleton;
10
import org.jaudiotagger.tag.TagTextField;
17
public class ID3v11TagTest extends TestCase
19
public static final String ARTIST = "artist";
20
public static final String ALBUM = "album";
21
public static final String COMMENT = "comment";
22
public static final String TITLE = "title";
23
public static final String TRACK_VALUE = "10";
24
public static final String GENRE_VAL = "Country";
25
public static final String YEAR = "1971";
28
* Provides an initilised object to be used in other tests
29
* to prevent code duplication
33
public static ID3v11Tag getInitialisedTag()
35
ID3v11Tag v11Tag = new ID3v11Tag();
36
v11Tag.setArtist(ARTIST);
37
v11Tag.setAlbum(ALBUM);
38
v11Tag.setComment(COMMENT);
39
v11Tag.setTitle(TITLE);
40
v11Tag.setTrack(TRACK_VALUE);
41
v11Tag.setGenre(GENRE_VAL);
51
public ID3v11TagTest(String arg0)
57
* Command line entrance.
61
public static void main(String[] args)
63
junit.textui.TestRunner.run(ID3v11TagTest.suite());
66
/////////////////////////////////////////////////////////////////////////
67
// TestCase classes to override
68
/////////////////////////////////////////////////////////////////////////
73
protected void setUp()
75
TagOptionSingleton.getInstance().setToDefault();
81
protected void tearDown()
88
// protected void runTest()
93
* Builds the Test Suite.
95
* @return the Test Suite.
97
public static Test suite()
99
return new TestSuite(ID3v11TagTest.class);
102
/////////////////////////////////////////////////////////////////////////
104
/////////////////////////////////////////////////////////////////////////
106
public void testCreateID3v11Tag() throws Exception
108
ID3v11Tag v11Tag = new ID3v11Tag();
109
v11Tag.setArtist(ARTIST);
110
v11Tag.setAlbum(ALBUM);
111
v11Tag.setComment(COMMENT);
112
v11Tag.setTitle(TITLE);
113
v11Tag.setTrack(TRACK_VALUE);
114
v11Tag.setGenre(GENRE_VAL);
115
v11Tag.setYear(YEAR);
117
assertEquals((byte) 1, v11Tag.getRelease());
118
assertEquals((byte) 1, v11Tag.getMajorVersion());
119
assertEquals((byte) 0, v11Tag.getRevision());
121
assertEquals(ARTIST, v11Tag.getFirst(FieldKey.ARTIST));
122
assertEquals(ALBUM, v11Tag.getFirst(FieldKey.ALBUM));
123
assertEquals(COMMENT, v11Tag.getFirstComment());
124
assertEquals(TITLE, v11Tag.getFirst(FieldKey.TITLE));
125
assertEquals(TRACK_VALUE, v11Tag.getFirst(FieldKey.TRACK));
126
assertEquals(GENRE_VAL, v11Tag.getFirst(FieldKey.GENRE));
127
assertEquals(YEAR, v11Tag.getFirst(FieldKey.YEAR));
129
//Check with entagged interface
130
assertEquals(ID3v1TagTest.ARTIST, ((TagTextField) v11Tag.getArtist().get(0)).getContent());
131
assertEquals(ID3v1TagTest.ALBUM, ((TagTextField) v11Tag.getAlbum().get(0)).getContent());
132
assertEquals(ID3v1TagTest.COMMENT, ((TagTextField) v11Tag.getComment().get(0)).getContent());
133
assertEquals(ID3v1TagTest.TITLE, ((TagTextField) v11Tag.getTitle().get(0)).getContent());
134
assertEquals(ID3v1TagTest.GENRE_VAL, ((TagTextField) v11Tag.getGenre().get(0)).getContent());
135
assertEquals(ID3v1TagTest.TRACK_VALUE, ((TagTextField) v11Tag.getTrack().get(0)).getContent());
136
assertEquals(ID3v1TagTest.YEAR, ((TagTextField) v11Tag.getYear().get(0)).getContent());
138
v11Tag.setField(FieldKey.TRACK,"3");
139
assertEquals("3",v11Tag.getFirst(FieldKey.TRACK));
144
public void testCreateID3v11FromID3v24()
146
ID3v24Tag v2Tag = new ID3v24Tag();
147
ID3v11Tag v1Tag = new ID3v11Tag(v2Tag);
148
assertNotNull(v1Tag);
149
assertEquals((byte) 1, v1Tag.getRelease());
150
assertEquals((byte) 1, v1Tag.getMajorVersion());
151
assertEquals((byte) 0, v1Tag.getRevision());
156
public void testCreateID3v11FromID3v23()
158
ID3v23Tag v2Tag = new ID3v23Tag();
159
ID3v11Tag v1Tag = new ID3v11Tag(v2Tag);
160
assertNotNull(v1Tag);
161
assertEquals((byte) 1, v1Tag.getRelease());
162
assertEquals((byte) 1, v1Tag.getMajorVersion());
163
assertEquals((byte) 0, v1Tag.getRevision());
167
public void testCreateID3v11FromID3v22()
169
ID3v22Tag v2Tag = new ID3v22Tag();
170
ID3v11Tag v1Tag = new ID3v11Tag(v2Tag);
171
assertNotNull(v1Tag);
172
assertEquals((byte) 1, v1Tag.getRelease());
173
assertEquals((byte) 1, v1Tag.getMajorVersion());
174
assertEquals((byte) 0, v1Tag.getRevision());
177
public void testNewInterface()
179
Exception exceptionCaught = null;
180
ID3v1Tag v1Tag = new ID3v11Tag();
181
assertTrue(v1Tag.isEmpty());
183
v1Tag.setField(new ID3v1TagField(FieldKey.ARTIST.name(), "artist"));
184
assertEquals("artist", ((TagTextField) v1Tag.getFields(FieldKey.ARTIST).get(0)).getContent());
185
assertEquals("artist", v1Tag.getFirst(FieldKey.ARTIST));
186
assertEquals("artist", ((TagTextField) (v1Tag.getArtist().get(0))).getContent());
187
assertEquals("artist", ((TagTextField) v1Tag.getFirstField(FieldKey.ARTIST.name())).getContent());
188
assertEquals("artist", ((TagTextField) (v1Tag.getFields(FieldKey.ARTIST.name()).get(0))).getContent());
190
v1Tag.setField(new ID3v1TagField(FieldKey.ALBUM.name(), "album"));
191
assertEquals("album", ((TagTextField) v1Tag.getFields(FieldKey.ALBUM).get(0)).getContent());
192
assertEquals("album", v1Tag.getFirst(FieldKey.ALBUM));
193
assertEquals("album", ((TagTextField) (v1Tag.getAlbum().get(0))).getContent());
194
assertEquals("album", ((TagTextField) v1Tag.getFirstField(FieldKey.ALBUM.name())).getContent());
196
v1Tag.setField(new ID3v1TagField(FieldKey.TITLE.name(), "title"));
197
assertEquals("title", ((TagTextField) v1Tag.getFields(FieldKey.TITLE).get(0)).getContent());
198
assertEquals("title", v1Tag.getFirst(FieldKey.TITLE));
199
assertEquals("title", ((TagTextField) (v1Tag.getTitle().get(0))).getContent());
200
assertEquals("title", ((TagTextField) v1Tag.getFirstField(FieldKey.TITLE.name())).getContent());
202
v1Tag.setField(new ID3v1TagField(FieldKey.YEAR.name(), "year"));
203
assertEquals("year", ((TagTextField) v1Tag.getFields(FieldKey.YEAR).get(0)).getContent());
204
assertEquals("year", v1Tag.getFirst(FieldKey.YEAR));
205
assertEquals("year", ((TagTextField) (v1Tag.getYear().get(0))).getContent());
206
assertEquals("year", ((TagTextField) v1Tag.getFirstField(FieldKey.YEAR.name())).getContent());
208
v1Tag.setField(new ID3v1TagField(FieldKey.GENRE.name(), "Country"));
209
assertEquals("Country", ((TagTextField) v1Tag.getFields(FieldKey.GENRE).get(0)).getContent());
210
assertEquals("Country", v1Tag.getFirst(FieldKey.GENRE));
211
assertEquals("Country", ((TagTextField) (v1Tag.getGenre().get(0))).getContent());
212
assertEquals("Country", ((TagTextField) v1Tag.getFirstField(FieldKey.GENRE.name())).getContent());
214
v1Tag.setField(new ID3v1TagField(FieldKey.COMMENT.name(), "comment"));
215
assertEquals("comment", ((TagTextField) v1Tag.getFields(FieldKey.COMMENT).get(0)).getContent());
216
assertEquals("comment", v1Tag.getFirstComment());
217
assertEquals("comment", ((TagTextField) (v1Tag.getFields(FieldKey.COMMENT).get(0))).getContent());
218
assertEquals("comment", ((TagTextField) v1Tag.getFirstField(FieldKey.COMMENT.name())).getContent());
220
v1Tag.setField(new ID3v1TagField(FieldKey.TRACK.name(), "5"));
221
assertEquals("5", ((TagTextField) v1Tag.getFields(FieldKey.TRACK).get(0)).getContent());
222
assertEquals("5", v1Tag.getFirst(FieldKey.TRACK));
223
assertEquals("5", ((TagTextField) (v1Tag.getTrack().get(0))).getContent());
224
assertEquals("5", ((TagTextField) v1Tag.getFirstField(FieldKey.TRACK.name())).getContent());
226
//Check nothing been overwritten
227
assertEquals("year", v1Tag.getFirst(FieldKey.YEAR));
228
assertEquals("Country", v1Tag.getFirst(FieldKey.GENRE));
229
assertEquals("title", v1Tag.getFirst(FieldKey.TITLE));
230
assertEquals("album", v1Tag.getFirst(FieldKey.ALBUM));
231
assertEquals("artist", v1Tag.getFirst(FieldKey.ARTIST));
233
//Delete artist field
234
v1Tag.deleteField(FieldKey.ARTIST);
235
assertEquals("", v1Tag.getFirst(FieldKey.ARTIST));
236
assertEquals("year", v1Tag.getFirst(FieldKey.YEAR));
237
assertEquals("Country", v1Tag.getFirst(FieldKey.GENRE));
238
assertEquals("title", v1Tag.getFirst(FieldKey.TITLE));
239
assertEquals("album", v1Tag.getFirst(FieldKey.ALBUM));
242
assertFalse(v1Tag.isEmpty());
244
v1Tag.deleteField(FieldKey.ALBUM);
245
v1Tag.deleteField(FieldKey.YEAR);
246
v1Tag.deleteField(FieldKey.GENRE);
247
v1Tag.deleteField(FieldKey.TITLE);
248
v1Tag.deleteField(FieldKey.COMMENT);
249
v1Tag.setField(new ID3v1TagField(FieldKey.COMMENT.name(), ""));
250
v1Tag.deleteField(FieldKey.TRACK);
252
assertTrue(v1Tag.isEmpty());
257
v1Tag.setField(new ID3v1TagField(FieldKey.COMMENT.name(), null));
263
assertTrue(exceptionCaught instanceof IllegalArgumentException);
266
public void testSaveID3v11TagToFile() throws Exception
268
File testFile = AbstractTestCase.copyAudioToTmp("testV1.mp3");
269
MP3File mp3File = new MP3File(testFile);
272
ID3v11Tag tag = new ID3v11Tag();
273
tag.setArtist(ID3v11TagTest.ARTIST);
274
tag.setAlbum(ID3v11TagTest.ALBUM);
275
tag.setComment(ID3v11TagTest.COMMENT);
276
tag.setTitle(ID3v11TagTest.TITLE);
277
tag.setGenre(ID3v11TagTest.GENRE_VAL);
278
tag.setYear(ID3v11TagTest.YEAR);
279
tag.setTrack(ID3v11TagTest.TRACK_VALUE);
281
mp3File.setID3v1Tag(tag);
285
mp3File = new MP3File(testFile);
286
tag = (ID3v11Tag)mp3File.getID3v1Tag();
287
assertEquals(ID3v11TagTest.ARTIST, tag.getFirst(FieldKey.ARTIST));
288
assertEquals(ID3v11TagTest.ALBUM, tag.getFirst(FieldKey.ALBUM));
289
assertEquals(ID3v11TagTest.COMMENT, tag.getFirstComment());
290
assertEquals(ID3v11TagTest.TITLE, tag.getFirst(FieldKey.TITLE));
291
assertEquals(ID3v11TagTest.GENRE_VAL, tag.getFirst(FieldKey.GENRE));
292
assertEquals(ID3v11TagTest.YEAR, tag.getFirst(FieldKey.YEAR));
293
assertEquals(ID3v11TagTest.YEAR, tag.getFirst(FieldKey.YEAR));
294
assertEquals(ID3v11TagTest.TRACK_VALUE, tag.getFirst(FieldKey.TRACK));
296
tag.setField(FieldKey.TRACK,"3");
298
mp3File = new MP3File(testFile);
299
tag = (ID3v11Tag)mp3File.getID3v1Tag();
300
assertEquals("3", tag.getFirst(FieldKey.TRACK ));