FileDocCategorySizeDatePackage
AllTests.javaAPI Docjid3 0.4616229Tue Apr 26 17:55:34 BST 2005org.blinkenlights.jid3.test

AllTests.java

/*
 * AllTests.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: AllTests.java,v 1.8 2005/04/26 16:55:34 paul Exp $
 */

package org.blinkenlights.jid3.test;

import java.io.*;

import org.blinkenlights.jid3.*;
import org.blinkenlights.jid3.v1.*;
import org.blinkenlights.jid3.v2.*;
import org.blinkenlights.jid3.util.*;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/**
 * @author paul
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class AllTests extends TestCase
{
    // set root path for testing, so tests can find the test files
    public static String s_RootPath = "c:/work/jid3/test_data/";

    public static void main(String[] args)
    {
        junit.swingui.TestRunner.run(AllTests.class);
    }

    public static Test suite()
    {
        TestSuite suite = new TestSuite("Test for org.blinkenlights.id3.test");
        //$JUnit-BEGIN$
        suite.addTest(new TestSuite(ID3V1Test.class));
        suite.addTest(new TestSuite(ID3V2Test.class));
        suite.addTest(new TestSuite(AllTests.class));
        //$JUnit-END$
        return suite;
    }
    
    public void testRemoveTags()
    {
        try
        {
            // get a copy of an unmodified file to edit
            ID3Util.copy(AllTests.s_RootPath + "notags.mp3", AllTests.s_RootPath + "id3_v2_3_0_tagtest.mp3");

            File oSourceFile = new File(AllTests.s_RootPath + "id3_v2_3_0_tagtest.mp3");
            MediaFile oMediaFile = new MP3File(oSourceFile);
            
            // write v1.1 tag to file
            ID3V1_1Tag oID3V1_1Tag = new ID3V1_1Tag();
            oID3V1_1Tag.setArtist("Artist");
            oID3V1_1Tag.setTitle("Song Title");
            oID3V1_1Tag.setAlbum("Album");
            oID3V1_1Tag.setYear("2004");
            oID3V1_1Tag.setAlbumTrack(3);
            oID3V1_1Tag.setGenre(ID3V1Tag.Genre.Blues);
            oMediaFile.setID3Tag(oID3V1_1Tag);
        
            // write v2.3.0 tag to file
            ID3V2Tag oID3V2Tag = new ID3V2_3_0Tag();
            oID3V2Tag.setArtist("Artist");
            oID3V2Tag.setTitle("Song Title");
            oID3V2Tag.setAlbum("Album");
            oID3V2Tag.setYear(2004);
            oID3V2Tag.setTrackNumber(3, 9);
            oID3V2Tag.setGenre("Blues");
            oMediaFile.setID3Tag(oID3V2Tag);

            oMediaFile.sync();
            
            // remove those tags
            oMediaFile.removeTags();
            
            // read file back
            oMediaFile = new MP3File(oSourceFile);
            
            // make sure the tags aren't there
            if (oMediaFile.getID3V1Tag() != null)
            {
                fail("The remove tag operation failed to remove v1 tag.");
            }
            if (oMediaFile.getID3V2Tag() != null)
            {
                fail("The remove tag operation failed to remove v2 tag.");
            }
        }
        catch (Exception e)
        {
            fail(ID3Exception.getStackTrace(e));
        }
    }

    public void testVisitor()
    {
        try
        {
            File oSourceFile = new File(AllTests.s_RootPath + "v2_3_0tags.mp3");
            MP3File oMP3File = new MP3File(oSourceFile);
            
            ID3Tag[] aoID3Tag = oMP3File.getTags();

            AllTests.TestID3Visitor oTestID3Visitor = new AllTests.TestID3Visitor();
            
            // visit each tag (which also results in each v2 frame being visited)
            for (int i=0; i < aoID3Tag.length; i++)
            {
                aoID3Tag[i].accept(oTestID3Visitor);
            }
            
            // a 'visit list' was created by our visitor, recording which frames were visited, so we can compare
            if ( ! oTestID3Visitor.getVisitList().equals("3=DS+uw_PsKMr(VT$ICBUtvNyEzRL)W[QJO6*-"))
            {
                fail("Unexpected resulting visit list: " + oTestID3Visitor.getVisitList());
            }
        }
        catch (Exception e)
        {
            fail(ID3Exception.getStackTrace(e));
        }
    }
    
    public class TestID3Visitor extends ID3Visitor
    {
        private StringBuffer m_sbVisitList = null;
        
        public TestID3Visitor()
        {
            m_sbVisitList = new StringBuffer();
        }
        
        public String getVisitList()
        {
            return m_sbVisitList.toString();
        }
        
        // NOTE:  Normaly.. we would want to do something to each of the frames, or get some information out of them.
        //        But here, for this test, we just want to know that which visit methods were called in a particular case.

        public void visitID3V1_0Tag(ID3V1_0Tag oID3V1_0Tag) { m_sbVisitList.append("1"); };
        public void visitID3V1_1Tag(ID3V1_1Tag oID3V1_1Tag) { m_sbVisitList.append("2"); };

        public void visitID3V2_3_0Tag(ID3V2_3_0Tag oID3V2_3_0Tag) { m_sbVisitList.append("3"); };
        
        public void visitAENCID3V2Frame(AENCID3V2Frame oAENCID3V2Frame) { m_sbVisitList.append("4"); };
        public void visitAPICID3V2Frame(APICID3V2Frame oAPICID3V2Frame) { m_sbVisitList.append("5"); };
        public void visitCOMMID3V2Frame(COMMID3V2Frame oCOMMID3V2Frame) { m_sbVisitList.append("6"); };
        public void visitCOMRID3V2Frame(COMRID3V2Frame oCOMRID3V2Frame) { m_sbVisitList.append("7"); };
        public void visitENCRID3V2Frame(ENCRID3V2Frame oENCRID3V2Frame) { m_sbVisitList.append("8"); };
        public void visitEQUAID3V2Frame(EQUAID3V2Frame oEQUAID3V2Frame) { m_sbVisitList.append("9"); };
        public void visitETCOID3V2Frame(ETCOID3V2Frame oETCOID3V2Frame) { m_sbVisitList.append("a"); };
        public void visitGEOBID3V2Frame(GEOBID3V2Frame oGEOBID3V2Frame) { m_sbVisitList.append("b"); };
        public void visitGRIDID3V2Frame(GRIDID3V2Frame oGRIDID3V2Frame) { m_sbVisitList.append("c"); };
        public void visitIPLSID3V2Frame(IPLSID3V2Frame oIPLSID3V2Frame) { m_sbVisitList.append("d"); };
        public void visitLINKID3V2Frame(LINKID3V2Frame oLINKID3V2Frame) { m_sbVisitList.append("e"); };
        public void visitMCDIID3V2Frame(MCDIID3V2Frame oMCDIID3V2Frame) { m_sbVisitList.append("f"); };
        public void visitMLLTID3V2Frame(MLLTID3V2Frame oMLLTID3V2Frame) { m_sbVisitList.append("g"); };
        public void visitOWNEID3V2Frame(OWNEID3V2Frame oOWNEID3V2Frame) { m_sbVisitList.append("h"); };
        public void visitPCNTID3V2Frame(PCNTID3V2Frame oPCNTID3V2Frame) { m_sbVisitList.append("i"); };
        public void visitPOPMID3V2Frame(POPMID3V2Frame oPOPMID3V2Frame) { m_sbVisitList.append("j"); };
        public void visitPOSSID3V2Frame(POSSID3V2Frame oPOSSID3V2Frame) { m_sbVisitList.append("k"); };
        public void visitPRIVID3V2Frame(PRIVID3V2Frame oPRIVID3V2Frame) { m_sbVisitList.append("l"); };
        public void visitRBUFID3V2Frame(RBUFID3V2Frame oRBUFID3V2Frame) { m_sbVisitList.append("m"); };
        public void visitRVADID3V2Frame(RVADID3V2Frame oRVADID3V2Frame) { m_sbVisitList.append("n"); };
        public void visitRVRBID3V2Frame(RVRBID3V2Frame oRVRBID3V2Frame) { m_sbVisitList.append("o"); };
        public void visitSYLTID3V2Frame(SYLTID3V2Frame oSYLTID3V2Frame) { m_sbVisitList.append("p"); };
        public void visitSYTCID3V2Frame(SYTCID3V2Frame oSYTCID3V2Frame) { m_sbVisitList.append("q"); };
        public void visitTALBTextInformationID3V2Frame(TALBTextInformationID3V2Frame oTALBTextInformationID3V2Frame) { m_sbVisitList.append("r"); };
        public void visitTBPMTextInformationID3V2Frame(TBPMTextInformationID3V2Frame oTBPMTextInformationID3V2Frame) { m_sbVisitList.append("s"); };
        public void visitTCOMTextInformationID3V2Frame(TCOMTextInformationID3V2Frame oTCOMTextInformationID3V2Frame) { m_sbVisitList.append("t"); };
        public void visitTCONTextInformationID3V2Frame(TCONTextInformationID3V2Frame oTCONTextInformationID3V2Frame) { m_sbVisitList.append("u"); };
        public void visitTCOPTextInformationID3V2Frame(TCOPTextInformationID3V2Frame oTCOPTextInformationID3V2Frame) { m_sbVisitList.append("v"); };
        public void visitTDATTextInformationID3V2Frame(TDATTextInformationID3V2Frame oTDATTextInformationID3V2Frame) { m_sbVisitList.append("w"); };
        public void visitTDLYTextInformationID3V2Frame(TDLYTextInformationID3V2Frame oTDLYTextInformationID3V2Frame) { m_sbVisitList.append("x"); };
        public void visitTENCTextInformationID3V2Frame(TENCTextInformationID3V2Frame oTENCTextInformationID3V2Frame) { m_sbVisitList.append("y"); };
        public void visitTEXTTextInformationID3V2Frame(TEXTTextInformationID3V2Frame oTEXTTextInformationID3V2Frame) { m_sbVisitList.append("z"); };
        public void visitTFLTTextInformationID3V2Frame(TFLTTextInformationID3V2Frame oTFLTTextInformationID3V2Frame) { m_sbVisitList.append("A"); };
        public void visitTIMETextInformationID3V2Frame(TIMETextInformationID3V2Frame oTIMETextInformationID3V2Frame) { m_sbVisitList.append("B"); };
        public void visitTIT1TextInformationID3V2Frame(TIT1TextInformationID3V2Frame oTIT1TextInformationID3V2Frame) { m_sbVisitList.append("C"); };
        public void visitTIT2TextInformationID3V2Frame(TIT2TextInformationID3V2Frame oTIT2TextInformationID3V2Frame) { m_sbVisitList.append("D"); };
        public void visitTIT3TextInformationID3V2Frame(TIT3TextInformationID3V2Frame oTIT3TextInformationID3V2Frame) { m_sbVisitList.append("E"); };
        public void visitTKEYTextInformationID3V2Frame(TKEYTextInformationID3V2Frame oTKEYTextInformationID3V2Frame) { m_sbVisitList.append("F"); };
        public void visitTLANTextInformationID3V2Frame(TLANTextInformationID3V2Frame oTLANTextInformationID3V2Frame) { m_sbVisitList.append("G"); };
        public void visitTLENTextInformationID3V2Frame(TLENTextInformationID3V2Frame oTLENTextInformationID3V2Frame) { m_sbVisitList.append("H"); };
        public void visitTMEDTextInformationID3V2Frame(TMEDTextInformationID3V2Frame oTMEDTextInformationID3V2Frame) { m_sbVisitList.append("I"); };
        public void visitTOALTextInformationID3V2Frame(TOALTextInformationID3V2Frame oTOALTextInformationID3V2Frame) { m_sbVisitList.append("J"); };
        public void visitTOFNTextInformationID3V2Frame(TOFNTextInformationID3V2Frame oTOFNTextInformationID3V2Frame) { m_sbVisitList.append("K"); };
        public void visitTOLYTextInformationID3V2Frame(TOLYTextInformationID3V2Frame oTOLYTextInformationID3V2Frame) { m_sbVisitList.append("L"); };
        public void visitTOPETextInformationID3V2Frame(TOPETextInformationID3V2Frame oTOPETextInformationID3V2Frame) { m_sbVisitList.append("M"); };
        public void visitTORYTextInformationID3V2Frame(TORYTextInformationID3V2Frame oTORYTextInformationID3V2Frame) { m_sbVisitList.append("N"); };
        public void visitTOWNTextInformationID3V2Frame(TOWNTextInformationID3V2Frame oTOWNTextInformationID3V2Frame) { m_sbVisitList.append("O"); };
        public void visitTPE1TextInformationID3V2Frame(TPE1TextInformationID3V2Frame oTPE1TextInformationID3V2Frame) { m_sbVisitList.append("P"); };
        public void visitTPE2TextInformationID3V2Frame(TPE2TextInformationID3V2Frame oTPE2TextInformationID3V2Frame) { m_sbVisitList.append("Q"); };
        public void visitTPE3TextInformationID3V2Frame(TPE3TextInformationID3V2Frame oTPE3TextInformationID3V2Frame) { m_sbVisitList.append("R"); };
        public void visitTPE4TextInformationID3V2Frame(TPE4TextInformationID3V2Frame oTPE4TextInformationID3V2Frame) { m_sbVisitList.append("S"); };
        public void visitTPOSTextInformationID3V2Frame(TPOSTextInformationID3V2Frame oTPOSTextInformationID3V2Frame) { m_sbVisitList.append("T"); };
        public void visitTPUBTextInformationID3V2Frame(TPUBTextInformationID3V2Frame oTPUBTextInformationID3V2Frame) { m_sbVisitList.append("U"); };
        public void visitTRCKTextInformationID3V2Frame(TRCKTextInformationID3V2Frame oTRCKTextInformationID3V2Frame) { m_sbVisitList.append("V"); };
        public void visitTRDATextInformationID3V2Frame(TRDATextInformationID3V2Frame oTRDATextInformationID3V2Frame) { m_sbVisitList.append("W"); };
        public void visitTRSNTextInformationID3V2Frame(TRSNTextInformationID3V2Frame oTRSNTextInformationID3V2Frame) { m_sbVisitList.append("X"); };
        public void visitTRSOTextInformationID3V2Frame(TRSOTextInformationID3V2Frame oTRSOTextInformationID3V2Frame) { m_sbVisitList.append("Y"); };
        public void visitTSIZTextInformationID3V2Frame(TSIZTextInformationID3V2Frame oTSIZTextInformationID3V2Frame) { m_sbVisitList.append("Z"); };
        public void visitTSRCTextInformationID3V2Frame(TSRCTextInformationID3V2Frame oTSRCTextInformationID3V2Frame) { m_sbVisitList.append("!"); };
        public void visitTSSETextInformationID3V2Frame(TSSETextInformationID3V2Frame oTSSETextInformationID3V2Frame) { m_sbVisitList.append("@"); };
        public void visitTXXXTextInformationID3V2Frame(TXXXTextInformationID3V2Frame oTXXXTextInformationID3V2Frame) { m_sbVisitList.append("#"); };
        public void visitTYERTextInformationID3V2Frame(TYERTextInformationID3V2Frame oTYERTextInformationID3V2Frame) { m_sbVisitList.append("$"); };
        public void visitUFIDID3V2Frame(UFIDID3V2Frame oUFIDID3V2Frame) { m_sbVisitList.append("%"); };
        public void visitUSERID3V2Frame(USERID3V2Frame oUSERID3V2Frame) { m_sbVisitList.append("^"); };
        public void visitUSLTID3V2Frame(USLTID3V2Frame oUSLTID3V2Frame) { m_sbVisitList.append("&"); };
        public void visitWCOMUrlLinkID3V2Frame(WCOMUrlLinkID3V2Frame oWCOMUrlLinkID3V2Frame) { m_sbVisitList.append("*"); };
        public void visitWCOPUrlLinkID3V2Frame(WCOPUrlLinkID3V2Frame oWCOPUrlLinkID3V2Frame) { m_sbVisitList.append("("); };
        public void visitWOAFUrlLinkID3V2Frame(WOAFUrlLinkID3V2Frame oWOAFUrlLinkID3V2Frame) { m_sbVisitList.append(")"); };
        public void visitWOARUrlLinkID3V2Frame(WOARUrlLinkID3V2Frame oWOARUrlLinkID3V2Frame) { m_sbVisitList.append("-"); };
        public void visitWOASUrlLinkID3V2Frame(WOASUrlLinkID3V2Frame oWOASUrlLinkID3V2Frame) { m_sbVisitList.append("_"); };
        public void visitWORSUrlLinkID3V2Frame(WORSUrlLinkID3V2Frame oWORSUrlLinkID3V2Frame) { m_sbVisitList.append("="); };
        public void visitWPAYUrlLinkID3V2Frame(WPAYUrlLinkID3V2Frame oWPAYUrlLinkID3V2Frame) { m_sbVisitList.append("+"); };
        public void visitWPUBUrlLinkID3V2Frame(WPUBUrlLinkID3V2Frame oWPUBUrlLinkID3V2Frame) { m_sbVisitList.append("["); };
        public void visitWXXXUrlLinkID3V2Frame(WXXXUrlLinkID3V2Frame oWXXXUrlLinkID3V2Frame) { m_sbVisitList.append("]"); };
        public void visitEncryptedID3V2Frame(EncryptedID3V2Frame oEncryptedID3V2Frame) { m_sbVisitList.append(";"); };
        public void visitUnknownID3V2Frame(UnknownID3V2Frame oUnknownID3V2Frame) { m_sbVisitList.append(":"); };
        public void visitUnknownTextInformationID3V2Frame(UnknownTextInformationID3V2Frame oUnknownTextInformationID3V2Frame) { m_sbVisitList.append(","); };
        public void visitUnknownUrlLinkID3V2Frame(UnknownUrlLinkID3V2Frame oUnknownUrlLinkID3V2Frame) { m_sbVisitList.append("."); };
    }
}