package com.limegroup.gnutella.metadata; import java.io.File; import java.io.IOException; import junit.framework.Test; import org.limewire.gnutella.tests.LimeTestUtils; import org.limewire.util.TestUtils; import com.google.inject.Injector; import com.limegroup.gnutella.metadata.audio.AudioMetaData; public class ID3ReaderTest extends AudioTestBase { private MetaDataFactory metaDataFactory; public ID3ReaderTest(String name) { super(name); } public static Test suite() { return buildTestSuite(ID3ReaderTest.class); } public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } //////////// @Override public void setUp(){ Injector injector = LimeTestUtils.createInjectorNonEagerly(); metaDataFactory = injector.getInstance(MetaDataFactory.class); } ////////// /** * Tests ID3v1.1 */ public void testID3v10Tags() throws Exception { File file = TestUtils.getResourceFile(dir+"ID3V1.mp3"); assertTrue("file should exist", file.exists()); AudioMetaData data = (AudioMetaData) metaDataFactory.parse(file); validateTag(data); } /** * Tests ID3v1.1b */ public void testID3v11Tags() throws Exception { File file = TestUtils.getResourceFile(dir+"ID3V11.mp3"); assertTrue("file should exist", file.exists()); AudioMetaData data = (AudioMetaData) metaDataFactory.parse(file); validateTag(data); } /** * Tests ID3v2.2 */ public void testID3v22Tags() throws Exception { File file = TestUtils.getResourceFile(dir+"ID3V22.mp3"); assertTrue("file should exist", file.exists()); AudioMetaData data = (AudioMetaData) metaDataFactory.parse(file); validateTag(data); } /** * Tests ID3v2.3 */ public void testID3v23Tags() throws Exception { File file = TestUtils.getResourceFile(dir+"ID3V23.mp3"); assertTrue("file should exist", file.exists()); AudioMetaData data = (AudioMetaData) metaDataFactory.parse(file); validateTag(data); } /** * Tests ID3v2.4 */ public void testID3v24Tags() throws Exception { File file = TestUtils.getResourceFile(dir+"ID3V24.mp3"); assertTrue("file should exist", file.exists()); AudioMetaData data = (AudioMetaData) metaDataFactory.parse(file); validateTag(data); } /** * tests that only v2 tag is read if both v1 tag exists * and v2 tag exists */ public void testBothTagsExistReadv2() throws Exception { File file = TestUtils.getResourceFile(dir+"ID3All.mp3"); assertTrue("file should exist", file.exists()); AudioMetaData data = (AudioMetaData) metaDataFactory.parse(file); validateTag(data); } public void testBadTag() throws Exception { File file = TestUtils.getResourceFile(dir+"corruptFileWithBadHeaders.mp3"); assertTrue("file should exist", file.exists()); try { metaDataFactory.parse(file); fail("IOException expected"); } catch(IOException e) { } } }