package javazoom.spi.mpeg.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.Iterator;
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.mp3 properties to test.mp3.properties expected results.
* As we don't ship test.mp3, you have to generate your own test.mp3.properties
* Uncomment out = System.out; in setUp() method to generated it on stdout from
* your own MP3 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.mp3.properties");
props.load(pin);
basefile = (String) props.getProperty("basefile");
baseurl = (String) props.getProperty("baseurl");
name = (String) props.getProperty("filename");
filename = basefile + name;
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","mp3.framerate.fps","mp3.copyright","mp3.padding",
"mp3.original","mp3.length.bytes","mp3.frequency.hz",
"mp3.length.frames","mp3.mode","mp3.channels","mp3.version.mpeg",
"mp3.framesize.bytes","mp3.vbr.scale","mp3.version.encoding",
"mp3.header.pos","mp3.version.layer","mp3.crc"};
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];
String val = null;
if (properties.get(key) != null) 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];
String val = null;
if (properties.get(key) != null) 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","mp3.framerate.fps","mp3.copyright","mp3.padding",
"mp3.original",/*"mp3.length.bytes",*/"mp3.frequency.hz",
/*"mp3.length.frames",*/"mp3.mode","mp3.channels","mp3.version.mpeg",
"mp3.framesize.bytes","mp3.vbr.scale","mp3.version.encoding",
"mp3.header.pos","mp3.version.layer","mp3.crc"};
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 : "+filename+" <-");
if (out != null) out.println(baseFileFormat);
if (baseFileFormat instanceof TAudioFileFormat)
{
Map properties = ((TAudioFileFormat)baseFileFormat).properties();
for (int i=0;i<testPropsAFF.length;i++)
{
String key = testPropsAFF[i];
String val = null;
if (properties.get(key) != null) 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];
String val = null;
if (properties.get(key) != null) 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);
}
}
public void testPropertiesShoutcast()
{
AudioFileFormat baseFileFormat = null;
AudioFormat baseFormat = null;
String shoutURL = (String) props.getProperty("shoutcast");
try
{
URL url = new URL(shoutURL);
baseFileFormat = AudioSystem.getAudioFileFormat(url);
baseFormat = baseFileFormat.getFormat();
if (out != null) out.println("-> URL : "+url.toString()+" <-");
if (out != null) out.println(baseFileFormat);
if (baseFileFormat instanceof TAudioFileFormat)
{
Map properties = ((TAudioFileFormat)baseFileFormat).properties();
Iterator it = properties.keySet().iterator();
while (it.hasNext())
{
String key = (String) it.next();
String val = null;
if (properties.get(key) != null) val=(properties.get(key)).toString();
if (out != null) out.println(key+"='"+val+"'");
}
}
else
{
assertTrue("testPropertiesShoutcast : TAudioFileFormat expected",false);
}
if (baseFormat instanceof TAudioFormat)
{
Map properties = ((TAudioFormat)baseFormat).properties();
Iterator it = properties.keySet().iterator();
while (it.hasNext())
{
String key = (String) it.next();
String val = null;
if (properties.get(key) != null) val=(properties.get(key)).toString();
if (out != null) out.println(key+"='"+val+"'");
}
}
else
{
assertTrue("testPropertiesShoutcast : TAudioFormat expected",false);
}
}
catch (UnsupportedAudioFileException e)
{
assertTrue("testPropertiesShoutcast : "+e.getMessage(),false);
}
catch (IOException e)
{
assertTrue("testPropertiesShoutcast : "+e.getMessage(),false);
}
}
public void _testDumpPropertiesFile()
{
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 (baseFileFormat instanceof TAudioFileFormat)
{
Map properties = ((TAudioFileFormat)baseFileFormat).properties();
Iterator it = properties.keySet().iterator();
while (it.hasNext())
{
String key = (String) it.next();
String val=(properties.get(key)).toString();
if (out != null) out.println(key+"='"+val+"'");
}
}
else
{
assertTrue("testDumpPropertiesFile : TAudioFileFormat expected",false);
}
if (baseFormat instanceof TAudioFormat)
{
Map properties = ((TAudioFormat)baseFormat).properties();
Iterator it = properties.keySet().iterator();
while (it.hasNext())
{
String key = (String) it.next();
String val=(properties.get(key)).toString();
if (out != null) out.println(key+"='"+val+"'");
}
}
else
{
assertTrue("testDumpPropertiesFile : TAudioFormat expected",false);
}
}
catch (UnsupportedAudioFileException e)
{
assertTrue("testDumpPropertiesFile : "+e.getMessage(),false);
}
catch (IOException e)
{
assertTrue("testDumpPropertiesFile : "+e.getMessage(),false);
}
}
}