package javazoom.spi.vorbis.sampled.file; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.PrintStream; import java.net.URL; import java.util.Map; import java.util.Properties; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.UnsupportedAudioFileException; import junit.framework.TestCase; import org.tritonus.share.sampled.TAudioFormat; import org.tritonus.share.sampled.file.TAudioFileFormat; /** * PropertiesContainer unit test. * It matches test.ogg properties to test.ogg.properties expected results. * As we don't ship test.ogg, you have to generate your own test.ogg.properties * Uncomment out = System.out; in setUp() method to generated it on stdout from * your own Ogg Vorbis file. */ public class PropertiesTest extends TestCase { private String basefile=null; private String baseurl=null; private String filename=null; private String fileurl=null; private String name=null; private Properties props = null; private PrintStream out = null; /** * Constructor for PropertiesTest. * @param arg0 */ public PropertiesTest(String arg0) { super(arg0); } /* * @see TestCase#setUp() */ protected void setUp() throws Exception { super.setUp(); props = new Properties(); InputStream pin = getClass().getClassLoader().getResourceAsStream("test.ogg.properties"); props.load(pin); basefile = (String) props.getProperty("basefile"); baseurl = (String) props.getProperty("baseurl"); name = (String) props.getProperty("filename"); filename = basefile + name; String stream = (String) props.getProperty("stream"); if (stream != null) fileurl = stream; else fileurl = baseurl + name; out = System.out; } /* * @see TestCase#tearDown() */ protected void tearDown() throws Exception { super.tearDown(); } public void testPropertiesFile() { String[] testPropsAFF = {"duration","title","author","album","date","comment", "copyright","ogg.bitrate.min","ogg.bitrate.nominal","ogg.bitrate.max"}; String[] testPropsAF = {"vbr", "bitrate"}; File file = new File(filename); AudioFileFormat baseFileFormat = null; AudioFormat baseFormat = null; try { baseFileFormat = AudioSystem.getAudioFileFormat(file); baseFormat = baseFileFormat.getFormat(); if (out != null) out.println("-> Filename : "+filename+" <-"); if (out != null) out.println(baseFileFormat); if (baseFileFormat instanceof TAudioFileFormat) { Map properties = ((TAudioFileFormat)baseFileFormat).properties(); if (out != null) out.println(properties); for (int i=0;i<testPropsAFF.length;i++) { String key = testPropsAFF[i]; if (properties.get(key) != null) { String val = (properties.get(key)).toString(); //if (out != null) out.println(key+"="+val); String valexpected = props.getProperty(key); //assertEquals(key,valexpected,val); } } } else { assertTrue("testPropertiesFile : TAudioFileFormat expected",false); } if (baseFormat instanceof TAudioFormat) { Map properties = ((TAudioFormat)baseFormat).properties(); for (int i=0;i<testPropsAF.length;i++) { String key = testPropsAF[i]; if (properties.get(key) != null) { String val = (properties.get(key)).toString(); if (out != null) out.println(key+"="+val); String valexpected = props.getProperty(key); //assertEquals(key,valexpected,val); } } } else { assertTrue("testPropertiesFile : TAudioFormat expected",false); } } catch (UnsupportedAudioFileException e) { assertTrue("testPropertiesFile : "+e.getMessage(),false); } catch (IOException e) { assertTrue("testPropertiesFile : "+e.getMessage(),false); } } public void testPropertiesURL() { String[] testPropsAFF = {"duration","title","author","album","date","comment", "copyright","ogg.bitrate.min","ogg.bitrate.nominal","ogg.bitrate.max"}; String[] testPropsAF = {"vbr", "bitrate"}; AudioFileFormat baseFileFormat = null; AudioFormat baseFormat = null; try { URL url = new URL(fileurl); baseFileFormat = AudioSystem.getAudioFileFormat(url); baseFormat = baseFileFormat.getFormat(); if (out != null) out.println("-> URL : "+fileurl+" <-"); if (out != null) out.println(baseFileFormat); if (baseFileFormat instanceof TAudioFileFormat) { Map properties = ((TAudioFileFormat)baseFileFormat).properties(); if (out != null) out.println(properties); for (int i=0;i<testPropsAFF.length;i++) { String key = testPropsAFF[i]; if (properties.get(key) != null) { String val = (properties.get(key)).toString(); //if (out != null) out.println(key+"="+val); String valexpected = props.getProperty(key); //assertEquals(key,valexpected,val); } } } else { assertTrue("testPropertiesURL : TAudioFileFormat expected",false); } if (baseFormat instanceof TAudioFormat) { Map properties = ((TAudioFormat)baseFormat).properties(); for (int i=0;i<testPropsAF.length;i++) { String key = testPropsAF[i]; if (properties.get(key) != null) { String val = (properties.get(key)).toString(); if (out != null) out.println(key+"="+val); String valexpected = props.getProperty(key); //assertEquals(key,valexpected,val); } } } else { assertTrue("testPropertiesURL : TAudioFormat expected",false); } } catch (UnsupportedAudioFileException e) { assertTrue("testPropertiesURL : "+e.getMessage(),false); } catch (IOException e) { assertTrue("testPropertiesURL : "+e.getMessage(),false); } } }