55import java .io .File ;
66import java .io .IOException ;
77import java .nio .channels .SeekableByteChannel ;
8+ import java .nio .charset .StandardCharsets ;
89import java .nio .file .Files ;
910import java .nio .file .Paths ;
1011import java .nio .file .StandardOpenOption ;
12+ import java .util .Arrays ;
1113
1214import static junit .framework .TestCase .assertFalse ;
1315import static org .junit .Assert .*;
@@ -204,6 +206,29 @@ private void testShouldInitialiseProperlyWhenNotScanningFile(Mp3File mp3File) th
204206 assertTrue (mp3File .hasId3v2Tag ());
205207 }
206208
209+ @ Test
210+ public void shouldSetId3v1Tag () throws Exception {
211+ final Mp3File mp3File = new Mp3File (MP3_WITH_NO_TAGS );
212+ final ID3v1 id3tag = new ID3v1Tag ();
213+ id3tag .setTrack ("5" );
214+ id3tag .setArtist ("ARTIST" );
215+ id3tag .setTitle ("TITLE" );
216+ id3tag .setAlbum ("ALBUM" );
217+ id3tag .setYear ("1997" );
218+ id3tag .setGenre (13 );
219+ id3tag .setComment ("" );
220+ String saveFilename = mp3File .getFilename () + ".copy" ;
221+ try {
222+ mp3File .setId3v1Tag (id3tag );
223+ mp3File .save (saveFilename );
224+ Mp3File newMp3File = new Mp3File (saveFilename );
225+ assertTrue (newMp3File .hasId3v1Tag ());
226+ assertEquals (id3tag , newMp3File .getId3v1Tag ());
227+ } finally {
228+ TestHelper .deleteFile (saveFilename );
229+ }
230+ }
231+
207232 @ Test
208233 public void shouldRemoveId3v1Tag () throws Exception {
209234 String filename = MP3_WITH_ID3V1_AND_ID3V23_AND_CUSTOM_TAGS ;
@@ -230,6 +255,27 @@ private void testShouldRemoveId3v1Tag(Mp3File mp3File) throws Exception {
230255 }
231256 }
232257
258+ @ Test
259+ public void shouldSetId3v2Tag () throws Exception {
260+ final Mp3File mp3File = new Mp3File (MP3_WITH_NO_TAGS );
261+ final ID3v2 id3tag = new ID3v24Tag ();
262+ id3tag .setArtist ("ARTIST" );
263+ id3tag .setTitle ("TITLE" );
264+ id3tag .setAlbum ("ALBUM" );
265+ id3tag .setYear ("1954" );
266+ id3tag .setGenre (0x0d );
267+ String saveFilename = mp3File .getFilename () + ".copy" ;
268+ try {
269+ mp3File .setId3v2Tag (id3tag );
270+ mp3File .save (saveFilename );
271+ Mp3File newMp3File = new Mp3File (saveFilename );
272+ assertTrue (newMp3File .hasId3v2Tag ());
273+ assertEquals (id3tag , newMp3File .getId3v2Tag ());
274+ } finally {
275+ TestHelper .deleteFile (saveFilename );
276+ }
277+ }
278+
233279 @ Test
234280 public void shouldRemoveId3v2Tag () throws Exception {
235281 String filename = MP3_WITH_ID3V1_AND_ID3V23_AND_CUSTOM_TAGS ;
@@ -256,6 +302,22 @@ private void testShouldRemoveId3v2Tag(Mp3File mp3File) throws Exception {
256302 }
257303 }
258304
305+ @ Test
306+ public void shouldSetCustomTag () throws Exception {
307+ final Mp3File mp3File = new Mp3File (MP3_WITH_NO_TAGS );
308+ final byte [] customTag = "CUSTOM_TAG" .getBytes (StandardCharsets .UTF_8 );
309+ String saveFilename = mp3File .getFilename () + ".copy" ;
310+ try {
311+ mp3File .setCustomTag (customTag );
312+ mp3File .save (saveFilename );
313+ Mp3File newMp3File = new Mp3File (saveFilename );
314+ assertTrue (newMp3File .hasCustomTag ());
315+ assertTrue (Arrays .equals (newMp3File .getCustomTag (), customTag ));
316+ } finally {
317+ TestHelper .deleteFile (saveFilename );
318+ }
319+ }
320+
259321 @ Test
260322 public void shouldRemoveCustomTag () throws Exception {
261323 String filename = MP3_WITH_ID3V1_AND_ID3V23_AND_CUSTOM_TAGS ;
@@ -294,6 +356,18 @@ public void shouldRemoveId3v1AndId3v2AndCustomTagsForFileConstructor() throws Ex
294356 testShouldRemoveId3v1AndId3v2AndCustomTags (new Mp3File (filename ));
295357 }
296358
359+ @ Test
360+ public void shouldReturnCorrectLengthInSeconds () throws Exception {
361+ final Mp3File mp3File = new Mp3File (MP3_WITH_ID3V1_AND_ID3V23_TAGS );
362+ assertEquals (0 , mp3File .getLengthInSeconds ());
363+ }
364+
365+ @ Test
366+ public void shouldCorrectlyIdentifyIfVBR () throws Exception {
367+ final Mp3File mp3File = new Mp3File (MP3_WITH_ID3V1_AND_ID3V23_TAGS );
368+ assertTrue (mp3File .isVbr ());
369+ }
370+
297371 private void testShouldRemoveId3v1AndId3v2AndCustomTags (Mp3File mp3File ) throws Exception {
298372 String saveFilename = mp3File .getFilename () + ".copy" ;
299373 try {
0 commit comments