
org.blinkenlights.jid3.test.ID3V1Test Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of JID3 Show documentation
Show all versions of JID3 Show documentation
JID3 is a class library, written in Java and licensed under the LGPL, which provides the required functionality for editing ID3 tags commonly used in MP3 media files.
The newest version!
/*
* ID3V1Test.java
*
* Created on 29-Dec-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: ID3V1Test.java,v 1.7 2005/04/26 16:56:39 paul Exp $
*/
package org.blinkenlights.jid3.test;
import java.io.*;
import junit.framework.TestCase;
import org.blinkenlights.jid3.*;
import org.blinkenlights.jid3.util.*;
import org.blinkenlights.jid3.v1.*;
/**
* @author paul
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class ID3V1Test extends TestCase
{
/**
* Constructor for ID3V1Test.
* @param arg0
*/
public ID3V1Test(String arg0)
{
super(arg0);
}
public static void main(String[] args)
{
junit.swingui.TestRunner.run(ID3V1Test.class);
}
/*
* @see TestCase#setUp()
*/
protected void setUp() throws Exception
{
super.setUp();
}
/*
* @see TestCase#tearDown()
*/
protected void tearDown() throws Exception
{
super.tearDown();
}
/** Test reading v1.0 tag from known file. */
public void testReadV1_0Tag()
{
try
{
File oSourceFile = new File(AllTests.s_RootPath + "v1_0tags.mp3");
MediaFile oMediaFile = new MP3File(oSourceFile);
ID3Tag[] aoID3Tag = oMediaFile.getTags();
System.out.println("\n*** v1_0tags.mp3 tags:");
ID3Util.printTags(aoID3Tag);
if (aoID3Tag.length != 1)
{
fail("There should be exactly one set of tags in this file.");
}
if ( ! (aoID3Tag[0] instanceof ID3V1_0Tag) )
{
fail("Expected ID3V1_0Tag.");
}
ID3V1_0Tag oID3V1_0Tag = (ID3V1_0Tag)aoID3Tag[0];
if ((!oID3V1_0Tag.getTitle().equals("Title")) ||
(!oID3V1_0Tag.getArtist().equals("Artist")) ||
(!oID3V1_0Tag.getAlbum().equals("Album")) ||
(!oID3V1_0Tag.getYear().equals("1999")) ||
(!oID3V1_0Tag.getComment().equals("Comment")) ||
(!oID3V1_0Tag.getGenre().equals(ID3V1Tag.Genre.Nullsoft_BlackMetal)))
{
fail("Unexpected tag value found.");
}
}
catch (Exception e)
{
fail(e.toString());
}
}
/** Test writing v1.0 tag to bare file, then compare against expected result. */
public void testWriteV1_0Tag()
{
try
{
// get a copy of an unmodified file to edit
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);
// write v1.0 tag to file
ID3V1_0Tag oID3V1_0Tag = new ID3V1_0Tag();
oID3V1_0Tag.setAlbum("Album");
oID3V1_0Tag.setArtist("Artist");
oID3V1_0Tag.setComment("Comment");
oID3V1_0Tag.setGenre(ID3V1Tag.Genre.Nullsoft_BlackMetal);
oID3V1_0Tag.setTitle("Title");
oID3V1_0Tag.setYear("1999");
System.out.println(oID3V1_0Tag.toString());
oMediaFile.setID3Tag(oID3V1_0Tag);
oMediaFile.sync();
// check against expected result
compare(AllTests.s_RootPath + "v1_0tags.mp3", AllTests.s_RootPath + "id3_v1_0_testresult.mp3");
}
catch (Exception e)
{
fail(e.toString());
}
}
/** Test reading v1.1 tag from known file. */
public void testReadV1_1Tag()
{
try
{
File oSourceFile = new File(AllTests.s_RootPath + "v1_1tags.mp3");
MediaFile oMediaFile = new MP3File(oSourceFile);
ID3Tag[] aoID3Tag = oMediaFile.getTags();
System.out.println("\n*** v1_1tags.mp3 tags:");
ID3Util.printTags(aoID3Tag);
if (aoID3Tag.length != 1)
{
fail("There should be exactly one set of tags in this file.");
}
if ( ! (aoID3Tag[0] instanceof ID3V1_1Tag) )
{
fail("Expected ID3V1_1Tag.");
}
ID3V1_1Tag oID3V1_1Tag = (ID3V1_1Tag)aoID3Tag[0];
if ((!oID3V1_1Tag.getTitle().equals("Title")) ||
(!oID3V1_1Tag.getArtist().equals("Artist")) ||
(!oID3V1_1Tag.getAlbum().equals("Album")) ||
(!oID3V1_1Tag.getYear().equals("1999")) ||
(!oID3V1_1Tag.getComment().equals("Comment")) ||
(!oID3V1_1Tag.getGenre().equals(ID3V1Tag.Genre.Nullsoft_BlackMetal)) ||
(oID3V1_1Tag.getAlbumTrack() != 7) ||
(oID3V1_1Tag.getGenre().getByteValue() != 138))
{
fail("Unexpected tag value found.");
}
}
catch (Exception e)
{
fail(e.toString());
}
}
/** Test writing v1.0 tag to bare file, then compare against expected result. */
public void testWriteV1_1Tag()
{
try
{
// get a copy of an unmodified file to edit
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);
// write v1.1 tag to file
ID3V1_1Tag oID3V1_1Tag = new ID3V1_1Tag();
oID3V1_1Tag.setAlbum("Album");
oID3V1_1Tag.setArtist("Artist");
oID3V1_1Tag.setComment("Comment");
oID3V1_1Tag.setGenre(ID3V1Tag.Genre.Nullsoft_BlackMetal);
oID3V1_1Tag.setTitle("Title");
oID3V1_1Tag.setYear("1999");
oID3V1_1Tag.setAlbumTrack(7);
System.out.println(oID3V1_1Tag.toString());
oMediaFile.setID3Tag(oID3V1_1Tag);
oMediaFile.sync();
// check against expected result
compare(AllTests.s_RootPath + "v1_1tags.mp3", AllTests.s_RootPath + "id3_v1_1_testresult.mp3");
}
catch (Exception e)
{
fail(e.toString());
}
}
/** Copy a file.
*
* @param sSource source filename
* @param sDestination destination filename
* @throws Exception
*/
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();
}
/** Compare two files.
*
* @param sFileOne filename
* @param sFileTwo filename
* @return true if identical, false otherwise
* @throws Exception
*/
private static void compare(String sFileOne, String sFileTwo)
throws Exception
{
File oOneFile = new File(sFileOne);
File oTwoFile = new File(sFileTwo);
// check that lengths are the same
if (oOneFile.length() != oTwoFile.length())
{
throw new Exception("File lengths differ.");
}
FileInputStream oFIS1 = new FileInputStream(oOneFile);
FileInputStream oFIS2 = new FileInputStream(oTwoFile);
int c;
// lengths are equal, so check that contents are the same
int i=0;
while ((c = oFIS1.read()) != -1)
{
if (oFIS2.read() != c)
{
throw new Exception("File contents differ at position " + i + ".");
}
i++;
}
oFIS1.close();
oFIS2.close();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy