package net.sf.fmj.test.compat.misc;
import java.io.IOException;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.Vector;
import javax.media.AudioDeviceUnavailableEvent;
import javax.media.Buffer;
import javax.media.CachingControlEvent;
import javax.media.CaptureDeviceInfo;
import javax.media.Clock;
import javax.media.ClockStoppedException;
import javax.media.Control;
import javax.media.Controller;
import javax.media.ControllerAdapter;
import javax.media.ControllerClosedEvent;
import javax.media.ControllerErrorEvent;
import javax.media.ControllerListener;
import javax.media.DataSink;
import javax.media.Duration;
import javax.media.Format;
import javax.media.IncompatibleSourceException;
import javax.media.IncompatibleTimeBaseException;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.PlugIn;
import javax.media.Processor;
import javax.media.StopByRequestEvent;
import javax.media.StopEvent;
import javax.media.Time;
import javax.media.TimeBase;
import javax.media.Track;
import javax.media.bean.playerbean.MediaPlayer;
import javax.media.control.BufferControl;
import javax.media.control.FramePositioningControl;
import javax.media.control.MpegAudioControl;
import javax.media.control.PortControl;
import javax.media.datasink.DataSinkListener;
import javax.media.format.RGBFormat;
import javax.media.format.UnsupportedFormatException;
import javax.media.format.VideoFormat;
import javax.media.protocol.ContentDescriptor;
import javax.media.protocol.DataSource;
import javax.media.protocol.FileTypeDescriptor;
import javax.media.protocol.Positionable;
import javax.media.protocol.RateRange;
import javax.media.protocol.SourceStream;
import javax.media.rtp.EncryptionInfo;
import javax.media.rtp.GlobalReceptionStats;
import javax.media.rtp.GlobalTransmissionStats;
import javax.media.rtp.InvalidSessionAddressException;
import javax.media.rtp.LocalParticipant;
import javax.media.rtp.RTPStream;
import javax.media.rtp.ReceiveStreamListener;
import javax.media.rtp.RemoteListener;
import javax.media.rtp.SSRCInUseException;
import javax.media.rtp.SendStream;
import javax.media.rtp.SendStreamListener;
import javax.media.rtp.SessionAddress;
import javax.media.rtp.SessionListener;
import javax.media.rtp.SessionManager;
import javax.media.rtp.event.RTPEvent;
import javax.media.rtp.rtcp.SourceDescription;
import junit.framework.TestCase;
import net.sf.fmj.test.compat.InterfaceClasses;
/**
*
* @author Ken Larson
*
*/
public class FMJTest extends TestCase
{
private static String generateCNAME()
{
// generates something like user@host
final String hostname;
try
{
hostname = InetAddress.getLocalHost().getHostName();
} catch (UnknownHostException e)
{
throw new RuntimeException(e);
}
return System.getProperty("user.name") + '@' + hostname;
}
public void testSourceDescription()
{
assertEquals(SourceDescription.generateCNAME(), generateCNAME());
}
public void testRTPEvent()
{
if (false)
System.out.println(new RTPEvent(new MySessionManager()).toString());
}
class MySessionManager implements SessionManager
{
public void addFormat(Format arg0, int arg1)
{
}
public void addPeer(SessionAddress arg0) throws IOException, InvalidSessionAddressException
{
}
public void addReceiveStreamListener(ReceiveStreamListener arg0)
{
}
public void addRemoteListener(RemoteListener arg0)
{
}
public void addSendStreamListener(SendStreamListener arg0)
{
}
public void addSessionListener(SessionListener arg0)
{
}
public void closeSession(String arg0)
{
}
public SendStream createSendStream(DataSource arg0, int arg1) throws UnsupportedFormatException, IOException
{
return null;
}
public SendStream createSendStream(int arg0, DataSource arg1, int arg2) throws UnsupportedFormatException, SSRCInUseException, IOException
{
return null;
}
public String generateCNAME()
{
return null;
}
public long generateSSRC()
{
return 0;
}
public Vector getActiveParticipants()
{
return null;
}
public Vector getAllParticipants()
{
return null;
}
public long getDefaultSSRC()
{
return 0;
}
public GlobalReceptionStats getGlobalReceptionStats()
{
return null;
}
public GlobalTransmissionStats getGlobalTransmissionStats()
{
return null;
}
public LocalParticipant getLocalParticipant()
{
return null;
}
public SessionAddress getLocalSessionAddress()
{
return null;
}
public int getMulticastScope()
{
return 0;
}
public Vector getPassiveParticipants()
{
return null;
}
public Vector getPeers()
{
return null;
}
public Vector getReceiveStreams()
{
return null;
}
public Vector getRemoteParticipants()
{
return null;
}
public Vector getSendStreams()
{
return null;
}
public SessionAddress getSessionAddress()
{
return null;
}
public RTPStream getStream(long arg0)
{
return null;
}
public int initSession(SessionAddress arg0, long arg1, SourceDescription[] arg2, double arg3, double arg4) throws InvalidSessionAddressException
{
return 0;
}
public int initSession(SessionAddress arg0, SourceDescription[] arg1, double arg2, double arg3) throws InvalidSessionAddressException
{
return 0;
}
public void removeAllPeers()
{
}
public void removePeer(SessionAddress arg0)
{
}
public void removeReceiveStreamListener(ReceiveStreamListener arg0)
{
}
public void removeRemoteListener(RemoteListener arg0)
{
}
public void removeSendStreamListener(SendStreamListener arg0)
{
}
public void removeSessionListener(SessionListener arg0)
{
}
public void setMulticastScope(int arg0)
{
}
public int startSession(int arg0, EncryptionInfo arg1) throws IOException
{
return 0;
}
public int startSession(SessionAddress arg0, int arg1, EncryptionInfo arg2) throws IOException, InvalidSessionAddressException
{
return 0;
}
public int startSession(SessionAddress arg0, SessionAddress arg1, SessionAddress arg2, EncryptionInfo arg3) throws IOException, InvalidSessionAddressException
{
return 0;
}
public Object getControl(String arg0)
{
return null;
}
public Object[] getControls()
{
return null;
}
}
public void testRateRange()
{
assertTrue(new RateRange(0, -1, 1, true).isExact());
assertTrue(new RateRange(0.f, -1.f, 1.f, true).getCurrentRate() == 0.f);
assertTrue(new RateRange(0.f, -1.f, 1.f, true).getMaximumRate() == 1.f);
assertTrue(new RateRange(0.f, -1.f, 1.f, true).getMinimumRate() == -1.f);
assertTrue(new RateRange(0.f, -1.f, 1.f, true).setCurrentRate(1.f) == 1.f);
assertTrue(new RateRange(0.f, -1.f, 1.f, true).setCurrentRate(2.f) == 2.f);
}
public void testControllerAdapter()
{
final StringBuffer b = new StringBuffer();
ControllerAdapter a = new ControllerAdapter()
{
//@Override
public void stop(StopEvent arg0)
{
b.append("stop\n");
}
//@Override
public void stopByRequest(StopByRequestEvent arg0)
{
b.append("stopByRequest\n");
}
};
a.controllerUpdate(new StopByRequestEvent(new MyController(), 0, 0, 0, null));
assertEquals(b.toString(), "stop\nstopByRequest\n");
}
class MyController implements Controller
{
public void addControllerListener(ControllerListener arg0)
{
}
public void close()
{
}
public void deallocate()
{
}
public Control getControl(String arg0)
{
return null;
}
public Control[] getControls()
{
return null;
}
public Time getStartLatency()
{
return null;
}
public int getState()
{
return 0;
}
public int getTargetState()
{
return 0;
}
public void prefetch()
{
}
public void realize()
{
}
public void removeControllerListener(ControllerListener arg0)
{
}
public Time getDuration()
{
return null;
}
public long getMediaNanoseconds()
{
return 0;
}
public Time getMediaTime()
{
return null;
}
public float getRate()
{
return 0;
}
public Time getStopTime()
{
return null;
}
public Time getSyncTime()
{
return null;
}
public TimeBase getTimeBase()
{
return null;
}
public Time mapToTimeBase(Time arg0) throws ClockStoppedException
{
return null;
}
public void setMediaTime(Time arg0)
{
}
public float setRate(float arg0)
{
return 0;
}
public void setStopTime(Time arg0)
{
}
public void setTimeBase(TimeBase arg0) throws IncompatibleTimeBaseException
{
}
public void stop()
{
}
public void syncStart(Time arg0)
{
}
}
class MyDataSink implements DataSink
{
public void addDataSinkListener(DataSinkListener arg0)
{
}
public void close()
{
}
public String getContentType()
{
return null;
}
public MediaLocator getOutputLocator()
{
return null;
}
public void open() throws IOException, SecurityException
{
}
public void removeDataSinkListener(DataSinkListener arg0)
{
}
public void setOutputLocator(MediaLocator arg0)
{
}
public void start() throws IOException
{
}
public void stop() throws IOException
{
}
public void setSource(DataSource arg0) throws IOException, IncompatibleSourceException
{
}
public Object getControl(String arg0)
{
return null;
}
public Object[] getControls()
{
return null;
}
}
public void testDataSinkEvent()
{
//System.out.println(new DataSinkEvent(new MyDataSink()).toString());
}
public void testMediaLocator() throws MalformedURLException
{
try
{
new MediaLocator((String) null);
assertTrue(false);
}
catch (NullPointerException e)
{
}
assertEquals(new MediaLocator(new URL("http://www.yahoo.com")).toExternalForm(), "http://www.yahoo.com");
assertEquals(new MediaLocator(new URL("http://www.yahoo.com")).getURL().toExternalForm(), "http://www.yahoo.com");
assertEquals(new MediaLocator("http://www.yahoo.com").getURL().toExternalForm(), "http://www.yahoo.com");
assertFalse(new MediaLocator("").equals(new MediaLocator(""))); // does not override equals
assertEquals(new MediaLocator("").getProtocol(), "");
assertEquals(new MediaLocator("").getRemainder(), "");
assertEquals(new MediaLocator(":").getProtocol(), "");
assertEquals(new MediaLocator(":").getRemainder(), "");
assertEquals(new MediaLocator("abcxyz").getProtocol(), "");
assertEquals(new MediaLocator("abcxyz").getRemainder(), "");
assertEquals(new MediaLocator("").toString(), "");
assertEquals(new MediaLocator("abc").toString(), "abc");
assertEquals(new MediaLocator("abc:xyz").toString(), "abc:xyz");
assertEquals(new MediaLocator("abc:xyz").getProtocol(), "abc");
assertEquals(new MediaLocator("abc:xyz").getRemainder(), "xyz");
assertEquals(new MediaLocator("abc:xyz").toExternalForm(), "abc:xyz");
assertEquals(new MediaLocator("abc").toExternalForm(), "abc");
assertEquals(new MediaLocator("").toExternalForm(), "");
assertEquals(new MediaLocator(":").toExternalForm(), ":");
}
public void testCaptureDeviceInfo()
{
assertFalse(new CaptureDeviceInfo().equals(new CaptureDeviceInfo()));
assertFalse(new CaptureDeviceInfo("xyz", null, null).equals(
new CaptureDeviceInfo("xyz", null, null)));
assertFalse(new CaptureDeviceInfo("xyz", new MediaLocator("abc"), null).equals(
new CaptureDeviceInfo("xyz", new MediaLocator("abc"), null)));
assertFalse(new CaptureDeviceInfo("xyz", new MediaLocator("abc"), new Format[] {new RGBFormat()}).equals(
new CaptureDeviceInfo("xyz", new MediaLocator("abc"), new Format[] {new RGBFormat()})));
{
MediaLocator m = new MediaLocator("abc");
Format[] f = new Format[] {new RGBFormat()};
assertTrue(new CaptureDeviceInfo("xyz", m, f).equals(
new CaptureDeviceInfo("xyz", m, f)));
}
{
MediaLocator m = new MediaLocator("abc");
Format[] f1 = new Format[] {new RGBFormat()};
Format[] f2 = new Format[] {new RGBFormat()};
assertFalse(new CaptureDeviceInfo("xyz", m, f1).equals(
new CaptureDeviceInfo("xyz", m, f2)));
}
{
MediaLocator m = new MediaLocator("abc");
RGBFormat r = new RGBFormat();
Format[] f1 = new Format[] {r};
Format[] f2 = new Format[] {r};
assertFalse(new CaptureDeviceInfo("xyz", m, f1).equals(
new CaptureDeviceInfo("xyz", m, f2)));
}
{
MediaLocator m1 = new MediaLocator("abc");
MediaLocator m2 = new MediaLocator("abc");
Format[] f = new Format[] {new RGBFormat()};
assertFalse(new CaptureDeviceInfo("xyz", m1, f).equals(
new CaptureDeviceInfo("xyz", m2, f)));
}
{
MediaLocator m = null;
Format[] f = new Format[] {new RGBFormat()};
assertFalse(new CaptureDeviceInfo("xyz", m, f).equals(
new CaptureDeviceInfo("xyz", m, f)));
}
{
MediaLocator m = new MediaLocator("abc");
Format[] f = new Format[] {};
assertTrue(new CaptureDeviceInfo("xyz", m, f).equals(
new CaptureDeviceInfo("xyz", m, f)));
}
{
MediaLocator m = new MediaLocator("abc");
Format[] f = null;
assertFalse(new CaptureDeviceInfo("xyz", m, f).equals(
new CaptureDeviceInfo("xyz", m, f)));
}
{
MediaLocator m = new MediaLocator("abc");
Format[] f = new Format[] {new RGBFormat()};
assertFalse(new CaptureDeviceInfo(null, m, f).equals(
new CaptureDeviceInfo(null, m, f)));
}
{
MediaLocator m = new MediaLocator("abc");
Format[] f = new Format[] {new RGBFormat()};
assertTrue(new CaptureDeviceInfo("", m, f).equals(
new CaptureDeviceInfo("", m, f)));
}
{
MediaLocator m = new MediaLocator("abc");
Format[] f = new Format[] {new RGBFormat()};
assertFalse(new CaptureDeviceInfo("", m, f).equals(
"test"));
}
assertTrue(new CaptureDeviceInfo().getFormats() == null);
assertEquals(new CaptureDeviceInfo().toString(), "null : null\n");
if (false)
{
System.out.println(new CaptureDeviceInfo().toString()); // null : null
System.out.println(new CaptureDeviceInfo("xyz", null, null).toString()); // xyz : null
System.out.println(new CaptureDeviceInfo("xyz", new MediaLocator("abc"), null).toString()); // xyz : abc
System.out.println(new CaptureDeviceInfo("xyz", new MediaLocator("abc"), new Format[] {}).toString()); // xyz : abc
System.out.println(new CaptureDeviceInfo("xyz", new MediaLocator("abc"), new Format[] {new RGBFormat()}).toString());
// xyz : abc
//RGB, -1-bit, Masks=-1:-1:-1, PixelStride=-1, LineStride=-1
}
}
public void testBuffer(Buffer b1)
{
final Buffer b2 = (Buffer) b1.clone();
assertTrue(b1.getData() != b2.getData());
assertTrue(b2.getData() != null);
assertTrue(b1.getFlags() == b2.getFlags());
assertTrue(b1.getFormat() == b2.getFormat());
if (b1.getHeader() != null)
assertTrue(b1.getHeader() != b2.getHeader());
else
assertTrue(null == b2.getHeader());
//assertTrue(b2.getFormat() == null);
final Buffer b3 = new Buffer();
b3.copy(b1);
assertTrue(b1.getData() == b3.getData());
assertTrue(b1.getFlags() == b3.getFlags());
assertTrue(b1.getFormat() == b3.getFormat());
if (b1.getHeader() != null)
assertTrue(b1.getHeader() == b3.getHeader());
else
assertTrue(null == b3.getHeader());
final Buffer b4 = new Buffer();
b4.copy(b1, true);
assertTrue(b1.getData() != b4.getData());
assertTrue(b4.getData() != null);
assertTrue(b1.getFlags() == b4.getFlags());
assertTrue(b1.getFormat() == b4.getFormat());
if (b1.getHeader() != null)
assertTrue(b1.getHeader() == b4.getHeader());
else
assertTrue(null == b4.getHeader());
final Buffer b5 = new Buffer();
b5.copy(b1, false);
assertTrue(b1.getData() == b5.getData());
assertTrue(b1.getFlags() == b5.getFlags());
assertTrue(b1.getFormat() == b5.getFormat());
if (b1.getHeader() != null)
assertTrue(b1.getHeader() == b5.getHeader());
else
assertTrue(null == b5.getHeader());
}
public void testBuffer()
{
assertTrue(Buffer.SEQUENCE_UNKNOWN == Long.MAX_VALUE - 1);
test(new Buffer().getFlags(), 0);
test(new Buffer().getDuration(), -1L);
assertEquals(new Buffer().getFormat(), null);
test(new Buffer().getLength(), 0);
test(new Buffer().getOffset(), 0);
test(new Buffer().getSequenceNumber(), 9223372036854775806L);
test(new Buffer().getSequenceNumber(), Buffer.SEQUENCE_UNKNOWN);
test(new Buffer().getTimeStamp(), -1L);
assertEquals(new Buffer().getData(), null);
assertEquals(new Buffer().getHeader(), null);
{
final Buffer b1 = new Buffer();
b1.setData(new byte[10]);
b1.setFlags(1);
Format f = new VideoFormat(VideoFormat.JPEG);
b1.setFormat(f);
assertTrue(f == b1.getFormat());
b1.setHeader(new byte[4]);
testBuffer(b1);
}
{
final Buffer b1 = new Buffer();
b1.setData(new int[10]);
b1.setFlags(2);
testBuffer(b1);
}
{
final Buffer b1 = new Buffer();
b1.setData(new short[10]);
b1.setFlags(3);
testBuffer(b1);
}
{
final Buffer b1 = new Buffer();
b1.setData(new long[10]); // tested float, double, String
b1.setFlags(2);
final Buffer b2 = (Buffer) b1.clone();
assertTrue(b1.getData() == b2.getData()); // strange anomaly with types other than byte, int, short
assertTrue(b2.getData() != null);
assertTrue(b1.getFlags() == b2.getFlags());
final Buffer b3 = new Buffer();
b3.copy(b1);
assertTrue(b1.getData() == b3.getData());
assertTrue(b1.getFlags() == b3.getFlags());
final Buffer b4 = new Buffer();
b4.copy(b1, true);
assertTrue(b1.getData() != b4.getData());
assertTrue(b4.getData() != null);
assertTrue(b1.getFlags() == b4.getFlags());
final Buffer b5 = new Buffer();
b5.copy(b1, false);
assertTrue(b1.getData() == b5.getData());
assertTrue(b1.getFlags() == b5.getFlags());
}
}
public void testAudioDeviceUnavailableEvent()
{
try
{
new AudioDeviceUnavailableEvent(null);
assertTrue(false);
}
catch (IllegalArgumentException e)
{
}
}
public void testEventStrings()
{
if (false)
{
assertEquals(new AudioDeviceUnavailableEvent(new MediaPlayer()).toString(), "javax.media.AudioDeviceUnavailableEvent[source=javax.media.bean.playerbean.MediaPlayer[,0,0,0x0,invalid]]");
assertEquals(new CachingControlEvent(new MediaPlayer(), null, 0L).toString(), "javax.media.CachingControlEvent[source=javax.media.bean.playerbean.MediaPlayer[,0,0,0x0,invalid],cachingControl=null,progress=0]");
System.out.println(new ControllerClosedEvent(new MediaPlayer(), "why?").toString()); // javax.media.ControllerClosedEvent[source=javax.media.bean.playerbean.MediaPlayer[,0,0,0x0,invalid]]
System.out.println(new ControllerErrorEvent(new MediaPlayer(), "why?").toString()); // javax.media.ControllerErrorEvent[source=javax.media.bean.playerbean.MediaPlayer[,0,0,0x0,invalid],message=why?]
}
}
public void testFileTypeDescriptor()
{
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.QUICKTIME).toString(), "QuickTime");
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.MSVIDEO).toString(), "AVI");
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.MPEG).toString(), "MPEG Video");
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.VIVO).toString(), "Vivo");
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.BASIC_AUDIO).toString(), "Basic Audio (au)");
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.WAVE).toString(), "WAV");
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.AIFF).toString(), "AIFF");
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.MIDI).toString(), "MIDI");
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.RMF).toString(), "RMF");
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.GSM).toString(), "GSM");
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.MPEG_AUDIO).toString(), "MPEG Audio");
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.CONTENT_UNKNOWN).toString(), "UnknownContent");
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.MIXED).toString(), "application.mixed-data");
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.RAW).toString(), "raw");
assertEquals(new FileTypeDescriptor(FileTypeDescriptor.RAW_RTP).toString(), "raw.rtp");
assertEquals(new FileTypeDescriptor("xyz").toString(), "xyz");
}
private void assertNotEquals(Object a, Object b)
{ if (a == null && b == null)
assertFalse(true);
else if (a == null || b == null)
return;
assertFalse(a.equals(b));
}
public void testManager()
{
assertEquals(Manager.UNKNOWN_CONTENT_NAME, "unknown");
}
public void testTime()
{
assertTrue(Time.ONE_SECOND == 1000000000);
assertTrue(Time.TIME_UNKNOWN.getNanoseconds() == 9223372036854775806L);
assertTrue(Time.TIME_UNKNOWN.getNanoseconds() == Long.MAX_VALUE - 1);
assertTrue(new Time(1.0).getNanoseconds() == Time.ONE_SECOND);
}
public void testContentDescriptor()
{
assertTrue(new ContentDescriptor(ContentDescriptor.CONTENT_UNKNOWN).getContentType().equals("UnknownContent"));
assertTrue(new ContentDescriptor(ContentDescriptor.CONTENT_UNKNOWN).getEncoding().equals("UnknownContent"));
assertTrue(new ContentDescriptor(ContentDescriptor.CONTENT_UNKNOWN).toString().equals("UnknownContent"));
assertTrue(new ContentDescriptor(ContentDescriptor.MIXED).getContentType().equals("application.mixed-data"));
assertTrue(new ContentDescriptor(ContentDescriptor.MIXED).toString().equals("application.mixed-data"));
assertTrue(ContentDescriptor.mimeTypeToPackageName("viddeo/mpexg").equals("viddeo.mpexg"));
assertTrue(ContentDescriptor.mimeTypeToPackageName("xyz").equals("xyz"));
assertTrue(ContentDescriptor.mimeTypeToPackageName("a/b/c").equals("a.b.c"));
assertTrue(ContentDescriptor.mimeTypeToPackageName("a-b-c").equals("a_b_c"));
assertEquals(ContentDescriptor.mimeTypeToPackageName("!@#$%^&*()"), "__________");
{
byte[] b = new byte[256];
for (int i = 0; i < 256; ++i)
{ b[i] = (byte) i;
}
String s = new String(b);
final String sTarget = "______________________________________________..0123456789_______abcdefghijklmnopqrstuvwxyz______abcdefghijklmnopqrstuvwxyz_____________________________________________________________________________________________________________________________________";
assertEquals(ContentDescriptor.mimeTypeToPackageName(s), sTarget);
}
assertEquals(new ContentDescriptor("abc").getDataType(), ContentDescriptor.byteArray);
assertEquals(new ContentDescriptor("video.quicktime").getDataType(), ContentDescriptor.byteArray);
assertEquals(new ContentDescriptor("text/plain").getContentType(), "text/plain");
assertEquals(ContentDescriptor.MIXED, "application.mixed-data");
}
public void testDuration()
{
assertTrue(Duration.DURATION_UNBOUNDED.getNanoseconds() == Long.MAX_VALUE);
assertTrue(Duration.DURATION_UNKNOWN.getNanoseconds() == Long.MAX_VALUE - 1);
assertTrue(Duration.DURATION_UNBOUNDED.getNanoseconds() == 9223372036854775807L);
assertTrue(Duration.DURATION_UNKNOWN.getNanoseconds() == 9223372036854775806L);
//assertEquals(new SystemTimeBase().getNanoseconds(), 0); // TODO: this seems to be variable.
// for (int i = 0; i < 100; ++i)
// System.out.println(new SystemTimeBase().getNanoseconds());
// for (int i = 0; i < 100; ++i)
// System.out.println(System.nanoTime());
}
public void testTrack()
{
assertEquals(Track.FRAME_UNKNOWN, 2147483647);
assertEquals(Track.FRAME_UNKNOWN, Integer.MAX_VALUE);
assertEquals(Track.TIME_UNKNOWN.getNanoseconds(), 9223372036854775806L);
assertEquals(Track.TIME_UNKNOWN.getNanoseconds(), Time.TIME_UNKNOWN.getNanoseconds());
}
public void testPlugIn()
{
assertEquals(PlugIn.BUFFER_PROCESSED_OK, 0);
assertEquals(PlugIn.BUFFER_PROCESSED_FAILED, 1);
assertEquals(PlugIn.INPUT_BUFFER_NOT_CONSUMED, 2);
assertEquals(PlugIn.OUTPUT_BUFFER_NOT_FILLED, 4);
assertEquals(PlugIn.PLUGIN_TERMINATED, 8);
}
public void testPositionable()
{
assertEquals(Positionable.RoundUp, 1);
assertEquals(Positionable.RoundDown, 2);
assertEquals(Positionable.RoundNearest, 3);
}
public void testSourceStream()
{
assertEquals(SourceStream.LENGTH_UNKNOWN, -1);
}
public void testBufferControl()
{
assertEquals(BufferControl.DEFAULT_VALUE, -1);
assertEquals(BufferControl.MAX_VALUE, -2);
}
public void testClock()
{
assertEquals(Clock.RESET.getNanoseconds(), 9223372036854775807L);
assertEquals(Clock.RESET.getNanoseconds(), Long.MAX_VALUE);
}
public void testController()
{
assertEquals(Controller.LATENCY_UNKNOWN.getNanoseconds(), Long.MAX_VALUE);
assertEquals(Controller.Prefetched, 500);
assertEquals(Controller.Prefetching, 400);
assertEquals(Controller.Realized, 300);
assertEquals(Controller.Realizing, 200);
assertEquals(Controller.Started, 600);
assertEquals(Controller.Unrealized, 100);
}
public void testProcessor()
{
assertEquals(Processor.Configuring, 140);
assertEquals(Processor.Configured, 180);
}
public void testFramePositioningControl()
{
assertEquals(FramePositioningControl.FRAME_UNKNOWN, 2147483647);
assertEquals(FramePositioningControl.FRAME_UNKNOWN, Integer.MAX_VALUE);
assertEquals(FramePositioningControl.TIME_UNKNOWN.getNanoseconds(), Time.TIME_UNKNOWN.getNanoseconds());
}
public void testMpegAudioControl()
{
assertEquals(MpegAudioControl.LAYER_1, 1);
assertEquals(MpegAudioControl.LAYER_2, 2);
assertEquals(MpegAudioControl.LAYER_3, 4);
assertEquals(MpegAudioControl.SAMPLING_RATE_16, 1);
assertEquals(MpegAudioControl.SAMPLING_RATE_22_05, 2);
assertEquals(MpegAudioControl.SAMPLING_RATE_24, 4);
assertEquals(MpegAudioControl.SAMPLING_RATE_32, 8);
assertEquals(MpegAudioControl.SAMPLING_RATE_44_1, 16);
assertEquals(MpegAudioControl.SAMPLING_RATE_48, 32);
assertEquals(MpegAudioControl.SINGLE_CHANNEL, 1);
assertEquals(MpegAudioControl.TWO_CHANNELS_STEREO, 2);
assertEquals(MpegAudioControl.TWO_CHANNELS_DUAL, 4);
assertEquals(MpegAudioControl.THREE_CHANNELS_2_1, 4);
assertEquals(MpegAudioControl.THREE_CHANNELS_3_0, 8);
assertEquals(MpegAudioControl.FOUR_CHANNELS_2_0_2_0, 16);
assertEquals(MpegAudioControl.FOUR_CHANNELS_2_2, 32);
assertEquals(MpegAudioControl.FOUR_CHANNELS_3_1, 64);
assertEquals(MpegAudioControl.FIVE_CHANNELS_3_0_2_0, 128);
assertEquals(MpegAudioControl.FIVE_CHANNELS_3_2, 256);
}
public void testPortControl()
{
test(PortControl.MICROPHONE, 1);
test(PortControl.LINE_IN, 2);
test(PortControl.SPEAKER, 4);
test(PortControl.HEADPHONE, 8);
test(PortControl.LINE_OUT, 16);
test(PortControl.COMPACT_DISC, 32);
test(PortControl.SVIDEO, 64);
test(PortControl.COMPOSITE_VIDEO, 128);
test(PortControl.TV_TUNER, 256);
test(PortControl.COMPOSITE_VIDEO_2, 512);
}
private static boolean PRINT_ONLY = false;
private void test(int a, int b)
{
if (PRINT_ONLY)
System.out.println(a);
else
assertEquals(a, b);
}
private void test(long a, long b)
{
if (PRINT_ONLY)
System.out.println(a);
else
assertEquals(a, b);
}
public void testInterfaces() throws Exception
{
for (int i = 0; i < InterfaceClasses.ALL.length; ++i)
{
Class c = InterfaceClasses.ALL[i];
if (!c.isInterface())
System.err.println(c);
assertTrue(c.isInterface());
}
}
}