package com.limegroup.gnutella.metadata; import java.io.File; import junit.framework.Test; import com.limegroup.gnutella.util.BaseTestCase; import com.limegroup.gnutella.util.CommonUtils; import com.limegroup.gnutella.util.PrivilegedAccessor; public class ID3V2WritingTest extends BaseTestCase { private static String TEST_NAME = "testfile12341234.mp3"; private static File TEST_FILE; public ID3V2WritingTest(String name) { super(name); } public static Test suite() { return buildTestSuite(ID3V2WritingTest.class); } public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } //////////// public void setUp() { String dir = "com/limegroup/gnutella/metadata/"; File f = CommonUtils.getResourceFile(dir + "ID3EditorTestFile.mp3"); assertTrue(f.exists()); TEST_FILE = new File(TEST_NAME); TEST_FILE.delete(); CommonUtils.copy(f, TEST_FILE); assertTrue(TEST_FILE.exists()); TEST_FILE.deleteOnExit(); } public static void globalTearDown() { TEST_FILE.delete(); } ////////// /** * Tests that the ID3v2 tags are read correctly */ public void testID3v2TagsWriting() throws Exception { AudioMetaData data = null; //1. Test that the values we read initially were correct. /*data = (ID3Reader.ID3Data)PrivilegedAccessor.invokeMethod( ID3Reader.class, "parseID3v2Data", new Object[] { TEST_FILE });*/ data = (AudioMetaData)MetaData.parse(TEST_FILE); assertFalse(data.toString(), data.isComplete()); assertEquals(data.toString(), "Title 2", data.getTitle()); assertNull(data.toString(), data.getArtist()); assertNull(data.toString(), data.getAlbum()); assertEquals(data.toString(), "2002", data.getYear()); assertEquals(data.toString(), 12, data.getTrack()); assertEquals(data.toString(), "Comment 2", data.getComment()); assertEquals(data.toString(), "Acid", data.getGenre()); //2. Write new data into the file MP3DataEditor editor = new MP3DataEditor(); PrivilegedAccessor.setValue(editor, "title_", "New Title"); PrivilegedAccessor.setValue(editor, "artist_", "new Artist"); PrivilegedAccessor.setValue(editor, "genre_", "Classic Rock"); int retVal = editor.commitMetaData(TEST_FILE.getAbsolutePath()); //3. Test if the data was written correctly data = (AudioMetaData)MetaData.parse(TEST_FILE); assertFalse(data.toString(), data.isComplete()); assertEquals("Title not written", "New Title", data.getTitle()); assertEquals("Artist not written", "new Artist", data.getArtist()); assertEquals("Incorrect genre ", "Classic Rock", data.getGenre()); assertNull("Incorrect album", data.getAlbum()); assertNull("Incorrect year", data.getYear()); assertLessThan("Incorrect track", 0, data.getTrack()); assertNull("Incorrect comment", data.getComment()); MP3DataEditor editor2 = new MP3DataEditor(); PrivilegedAccessor.setValue(editor2, "title_", "Title 2"); PrivilegedAccessor.setValue(editor2, "year_", "2002"); PrivilegedAccessor.setValue(editor2, "track_", "12"); PrivilegedAccessor.setValue(editor2, "comment_", "Comment 2"); PrivilegedAccessor.setValue(editor2, "genre_", "Acid"); editor2.commitMetaData(TEST_FILE.getAbsolutePath()); } }