/*
* ID3Test.java
*
* Created on 8-Oct-2003
*
* Copyright (C)2003-2005 Paul Grebenc
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* $Id: ID3Test.java,v 1.9 2005/02/06 18:11:27 paul Exp $
*/
package org.blinkenlights.jid3.test;
import java.io.*;
import org.blinkenlights.jid3.*;
import org.blinkenlights.jid3.v1.*;
import org.blinkenlights.jid3.v2.*;
/**
* @author paul
*
* Run all JUnit tests.
*/
public class ID3Test
{
public static void main(String[] args)
throws Exception
{
//testWriteSomething();
if (false) { return; }
testWriteV1_0Tag();
testWriteV1_1Tag();
testReadV1_0Tag();
testReadV1_1Tag();
}
static void testWriteV1_0Tag()
throws Exception
{
System.out.println("\n--- testWriteV1_0Tag ---");
copy(AllTests.s_RootPath + "notags.mp3", AllTests.s_RootPath + "id3_v1_0_testresult.mp3");
File oSourceFile = new File(AllTests.s_RootPath + "id3_v1_0_testresult.mp3");
MediaFile oMediaFile = new MP3File(oSourceFile);
// test v1.0 tags
ID3V1_0Tag oID3V1_0Tag = new ID3V1_0Tag();
oID3V1_0Tag.setAlbum("Album");
oID3V1_0Tag.setArtist("Artist");
oID3V1_0Tag.setComment("Comment");
oID3V1_0Tag.setGenre(ID3V1Tag.Genre.Dance);
oID3V1_0Tag.setTitle("Title");
oID3V1_0Tag.setYear("1999");
System.out.println(oID3V1_0Tag.toString());
oMediaFile.setID3Tag(oID3V1_0Tag);
oMediaFile.sync();
}
static void testWriteV1_1Tag()
throws Exception
{
System.out.println("\n--- testWriteV1_1Tag ---");
copy(AllTests.s_RootPath + "notags.mp3", AllTests.s_RootPath + "id3_v1_1_testresult.mp3");
File oSourceFile = new File(AllTests.s_RootPath + "id3_v1_1_testresult.mp3");
MediaFile oMediaFile = new MP3File(oSourceFile);
// test v1.1 tags
ID3V1_1Tag oID3V1_1Tag = new ID3V1_1Tag();
oID3V1_1Tag.setAlbum("Album");
oID3V1_1Tag.setArtist("Artist");
oID3V1_1Tag.setComment("Comment");
oID3V1_1Tag.setGenre(ID3V1Tag.Genre.Dance);
oID3V1_1Tag.setTitle("Title");
oID3V1_1Tag.setYear("1999");
oID3V1_1Tag.setAlbumTrack(7);
System.out.println(oID3V1_1Tag.toString());
oMediaFile.setID3Tag(oID3V1_1Tag);
oMediaFile.sync();
}
private static void testReadV1_0Tag()
throws Exception
{
System.out.println("\n--- testReadV1_0Tag ---");
File oSourceFile = new File(AllTests.s_RootPath + "v1_0tags.mp3");
MediaFile oMediaFile = new MP3File(oSourceFile);
ID3Tag[] aoID3Tag = oMediaFile.getTags();
printTags(aoID3Tag);
}
private static void testReadV1_1Tag()
throws Exception
{
System.out.println("\n--- testReadV1_1Tag ---");
File oSourceFile = new File(AllTests.s_RootPath + "v1_1tags.mp3");
MediaFile oMediaFile = new MP3File(oSourceFile);
ID3Tag[] aoID3Tag = oMediaFile.getTags();
printTags(aoID3Tag);
}
private static void printTags(ID3Tag[] aoID3Tag)
throws Exception
{
System.out.println("Number of tag sets: " + aoID3Tag.length);
for (int i=0; i < aoID3Tag.length; i++)
{
if (aoID3Tag[i] instanceof ID3V1_0Tag)
{
System.out.println("ID3V1_0Tag:");
System.out.println(aoID3Tag[i].toString());
}
else if (aoID3Tag[i] instanceof ID3V1_1Tag)
{
System.out.println("ID3V1_1Tag:");
System.out.println(aoID3Tag[i].toString());
}
else if (aoID3Tag[i] instanceof ID3V2_3_0Tag)
{
System.out.println("ID3V2_3_0Tag:");
System.out.println(aoID3Tag[i].toString());
}
}
}
private static void copy(String sSource, String sDestination)
throws Exception
{
File oInputFile = new File(sSource);
File oOutputFile = new File(sDestination);
FileInputStream oFIS = new FileInputStream(oInputFile);
FileOutputStream oFOS = new FileOutputStream(oOutputFile);
int c;
while ((c = oFIS.read()) != -1)
oFOS.write(c);
oFIS.close();
oFOS.close();
}
/** Method used for random testing. */
/* private static void testWriteSomething()
throws Exception
{
copy(AllTests.s_RootPath + "notags.mp3", AllTests.s_RootPath + "id3_something.mp3");
File oSourceFile = new File(AllTests.s_RootPath + "id3_something.mp3");
MediaFile oMediaFile = new MP3File(oSourceFile);
// test v1.0 tags
ID3V1_0Tag oID3V1_0Tag = new ID3V1_0Tag();
oID3V1_0Tag.setAlbum("Album");
oID3V1_0Tag.setArtist("Artist");
oID3V1_0Tag.setComment("Comment");
oID3V1_0Tag.setGenre(ID3V1Tag.Genre.Dance);
oID3V1_0Tag.setTitle("Title");
oID3V1_0Tag.setYear("1999");
System.out.println(oID3V1_0Tag.toString());
oMediaFile.setID3Tag(oID3V1_0Tag);
ID3V2_3_0Tag oID3V2_3_0Tag = new ID3V2_3_0Tag();
TPE1TextInformationID3V2Frame oTPE1 = new TPE1TextInformationID3V2Frame("Lead Performer");
oID3V2_3_0Tag.setTPE1TextInformationFrame(oTPE1);
TRCKTextInformationID3V2Frame oTRCK = new TRCKTextInformationID3V2Frame(3, 9);
oID3V2_3_0Tag.setTRCKTextInformationFrame(oTRCK);
TIT1TextInformationID3V2Frame oTIT1 = new TIT1TextInformationID3V2Frame("Song Title");
oID3V2_3_0Tag.setTIT1TextInformationFrame(oTIT1);
oMediaFile.setID3Tag(oID3V2_3_0Tag);
oMediaFile.sync();
oSourceFile = new File(AllTests.s_RootPath + "id3_something.mp3");
oMediaFile = new MP3File(oSourceFile);
// any tags read from the file are returned, in an array, in an order which you should not assume
ID3Tag[] aoID3Tag = oMediaFile.getTags();
// let's loop through and see what we've got
for (int i=0; i < aoID3Tag.length; i++)
{
// check to see if we read a v1.0 tag, or a v2.3.0 tag (just for example.. we could have other checks too)
if (aoID3Tag[i] instanceof ID3V1_0Tag)
{
oID3V1_0Tag = (ID3V1_0Tag)aoID3Tag[i];
// does this tag happen to contain a title?
if (oID3V1_0Tag.getTitle() != null)
{
System.out.println("Title = " + oID3V1_0Tag.getTitle());
}
// etc.
}
else if (aoID3Tag[i] instanceof ID3V2_3_0Tag)
{
oID3V2_3_0Tag = (ID3V2_3_0Tag)aoID3Tag[i];
// check if this v2.3.0 frame contains a title, using the actual frame name
if (oID3V2_3_0Tag.getTIT2TextInformationFrame() != null)
{
System.out.println("Title = " + oID3V2_3_0Tag.getTIT2TextInformationFrame().getTitle());
}
// but check using the convenience method if it has a year set (either way works)
try
{
System.out.println("Year = " + oID3V2_3_0Tag.getYear());
}
catch (ID3Exception e)
{
// error getting year.. most likely because one wasn't set
System.out.println("Could get read year from tag: " + e.toString());
}
// etc.
}
}
}*/
}
|