/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.mobicents.media.server.impl; import java.io.IOException; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; import org.mobicents.media.Buffer; import org.mobicents.media.Format; import org.mobicents.media.Inlet; import org.mobicents.media.MediaSink; import org.mobicents.media.MediaSource; import org.mobicents.media.Outlet; import org.mobicents.media.server.impl.clock.TimerImpl; import org.mobicents.media.server.spi.Timer; /** * * @author kulikov */ public class AbstractComponentTest { private TestSource src = new TestSource("source"); private TestSource2 src2 = new TestSource2("source2"); private TestSink sink = new TestSink("sink"); private TestSink2 sink2 = new TestSink2("sink2"); private Inlet inlet = new InletImpl("test-inlet"); private Outlet outlet = new OutletImpl("test-outlet"); private Timer timer; public AbstractComponentTest() { } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Before public void setUp() { timer = new TimerImpl(); src.setSyncSource(timer); src2.setSyncSource(timer); } @After public void tearDown() { } /** * Test of connect method, of class AbstractSink. */ @Test public void testSource2SinkDirectConnectDisconnect() { src.connect(sink); assertEquals(true, src.isConnected()); assertEquals(true, sink.isConnected()); src.disconnect(sink); assertEquals(false, src.isConnected()); assertEquals(false, sink.isConnected()); } @Test public void testSource2OneSinkConnectDisconnect() { src.connect(sink); assertEquals(true, src.isConnected()); assertEquals(true, sink.isConnected()); sink.disconnect(src); assertEquals(false, src.isConnected()); assertEquals(false, sink.isConnected()); } @Test public void testSourceSet2SinkDirectConnectDisconnect() { src2.connect(sink); assertEquals(true, sink.isConnected()); assertEquals(1, src2.getActiveSourceCount()); src2.disconnect(sink); assertEquals(0, src2.getActiveSourceCount()); assertEquals(false, sink.isConnected()); sink.connect(src2); assertEquals(1, src2.getActiveSourceCount()); assertEquals(true, sink.isConnected()); sink.disconnect(src2); assertEquals(0, src2.getActiveSourceCount()); assertEquals(false, sink.isConnected()); } @Test public void testSourceSet2SinkCrosswayConnectDisconnect() { src2.connect(sink); assertEquals(1, src2.getActiveSourceCount()); assertEquals(true, sink.isConnected()); sink.disconnect(src2); assertEquals(0, src2.getActiveSourceCount()); assertEquals(false, sink.isConnected()); sink.connect(src2); assertEquals(1, src2.getActiveSourceCount()); assertEquals(true, sink.isConnected()); src2.disconnect(sink); assertEquals(0, src2.getActiveSourceCount()); assertEquals(false, sink.isConnected()); } @Test public void testSource2SinkSetDirectConnectDisconnect2() { src.connect(sink2); assertEquals(true, src.isConnected()); assertEquals(1, sink2.getActiveSinkCount()); src.disconnect(sink2); assertEquals(0, sink2.getActiveSinkCount()); assertEquals(false, sink.isConnected()); sink2.connect(src); assertEquals(true, src.isConnected()); assertEquals(1, sink2.getActiveSinkCount()); sink2.disconnect(src); assertEquals(false, src.isConnected()); assertEquals(0, sink2.getActiveSinkCount()); } @Test public void testSource2SinkSetCrosswayConnectDisconnect2() { src.connect(sink2); assertEquals(true, src.isConnected()); assertEquals(1, sink2.getActiveSinkCount()); sink2.disconnect(src); assertEquals(0, sink2.getActiveSinkCount()); assertEquals(false, sink.isConnected()); sink2.connect(src); assertEquals(true, src.isConnected()); assertEquals(1, sink2.getActiveSinkCount()); src.disconnect(sink2); assertEquals(false, src.isConnected()); assertEquals(0, sink2.getActiveSinkCount()); } @Test public void testSource2InletDirectConnectDisconnect2() { src.connect(inlet); assertEquals(true, src.isConnected()); assertEquals(true, inlet.getInput().isConnected()); src.disconnect(inlet); assertEquals(false, inlet.getInput().isConnected()); assertEquals(false, sink.isConnected()); inlet.connect(src); assertEquals(true, src.isConnected()); assertEquals(true, inlet.getInput().isConnected()); inlet.disconnect(src); assertEquals(false, src.isConnected()); assertEquals(false, inlet.getInput().isConnected()); } @Test public void testSource2InletCrosswayConnectDisconnect2() { src.connect(inlet); assertEquals(true, src.isConnected()); assertEquals(true, inlet.getInput().isConnected()); inlet.disconnect(src); assertEquals(false, inlet.getInput().isConnected()); assertEquals(false, sink.isConnected()); inlet.connect(src); assertEquals(true, src.isConnected()); assertEquals(true, inlet.getInput().isConnected()); src.disconnect(inlet); assertEquals(false, src.isConnected()); assertEquals(false, inlet.getInput().isConnected()); } @Test public void testSink2OutletDirectConnectDisconnect2() { sink.connect(outlet); assertEquals(true, sink.isConnected()); assertEquals(true, outlet.getOutput().isConnected()); sink.disconnect(outlet); assertEquals(false, sink.isConnected()); assertEquals(false, outlet.getOutput().isConnected()); outlet.connect(sink); assertEquals(true, sink.isConnected()); assertEquals(true, outlet.getOutput().isConnected()); outlet.disconnect(sink); assertEquals(false, sink.isConnected()); assertEquals(false, outlet.getOutput().isConnected()); } @Test public void testSink2OutletCrosswayConnectDisconnect2() { sink.connect(outlet); assertEquals(true, sink.isConnected()); assertEquals(true, outlet.getOutput().isConnected()); outlet.disconnect(sink); assertEquals(false, sink.isConnected()); assertEquals(false, outlet.getOutput().isConnected()); outlet.connect(sink); assertEquals(true, sink.isConnected()); assertEquals(true, outlet.getOutput().isConnected()); sink.disconnect(outlet); assertEquals(false, sink.isConnected()); assertEquals(false, outlet.getOutput().isConnected()); } private class TestSource extends AbstractSource { public TestSource(String name) { super(name); } public Format[] getFormats() { throw new UnsupportedOperationException("Not supported yet."); } public String getOtherPartyName() { return this.otherParty.getName(); } @Override public void evolve(Buffer buffer, long timestamp, long sequenceNumber) { throw new UnsupportedOperationException("Not supported yet."); } } private class TestSink extends AbstractSink { public TestSink(String name) { super(name); } public Format[] getFormats() { throw new UnsupportedOperationException("Not supported yet."); } public boolean isAcceptable(Format format) { throw new UnsupportedOperationException("Not supported yet."); } public String getOtherPartyName() { return this.otherParty.getName(); } @Override public void onMediaTransfer(Buffer buffer) { throw new UnsupportedOperationException("Not supported yet."); } } private class TestSource2 extends AbstractSourceSet { public TestSource2(String name) { super(name); } private class InnerSource extends AbstractSource { public InnerSource(String name) { super(name); setSyncSource(timer); } public Format[] getFormats() { throw new UnsupportedOperationException("Not supported yet."); } public String getOtherPartyName() { return this.otherParty.getName(); } @Override public void evolve(Buffer buffer, long timestamp, long sequenceNumber) { throw new UnsupportedOperationException("Not supported yet."); } } @Override public AbstractSource createSource(MediaSink otherParty) { return new InnerSource("test"); } public void start() { throw new UnsupportedOperationException("Not supported yet."); } public void stop() { throw new UnsupportedOperationException("Not supported yet."); } @Override public void evolve(Buffer buffer, long timestamp, long sequenceNumber) { throw new UnsupportedOperationException("Not supported yet."); } public Format[] getFormats() { throw new UnsupportedOperationException("Not supported yet."); } @Override public void destroySource(AbstractSource source) { } } private class TestSink2 extends AbstractSinkSet { public TestSink2(String name) { super(name); } private class LocalSink extends AbstractSink { public LocalSink(String name) { super(name); } public Format[] getFormats() { throw new UnsupportedOperationException("Not supported yet."); } public boolean isAcceptable(Format format) { throw new UnsupportedOperationException("Not supported yet."); } @Override public void onMediaTransfer(Buffer buffer) { throw new UnsupportedOperationException("Not supported yet."); } } @Override public AbstractSink createSink(MediaSource otherParty) { return new LocalSink("inner.sink"); } public void start() { throw new UnsupportedOperationException("Not supported yet."); } public void stop() { throw new UnsupportedOperationException("Not supported yet."); } @Override public void onMediaTransfer(Buffer buffer) throws IOException { throw new UnsupportedOperationException("Not supported yet."); } public Format[] getFormats() { throw new UnsupportedOperationException("Not supported yet."); } public boolean isAcceptable(Format format) { throw new UnsupportedOperationException("Not supported yet."); } @Override public void destroySink(AbstractSink sink) { } } private class OutletImpl extends AbstractOutlet { private InnerSource source = new InnerSource("inner.source"); public OutletImpl(String name) { super(name); } public void start() { throw new UnsupportedOperationException("Not supported yet."); } public void stop() { } public MediaSource getOutput() { return source; } private class InnerSource extends AbstractSource { public InnerSource(String name) { super(name); setSyncSource(timer); } public Format[] getFormats() { throw new UnsupportedOperationException("Not supported yet."); } public String getOtherPartyName() { return this.otherParty.getName(); } @Override public void evolve(Buffer buffer, long timestamp, long sequenceNumber) { throw new UnsupportedOperationException("Not supported yet."); } } } private class InletImpl extends AbstractInlet { private LocalSink sink = new LocalSink("test"); public InletImpl(String name) { super(name); } public void start() { throw new UnsupportedOperationException("Not supported yet."); } public void stop() { throw new UnsupportedOperationException("Not supported yet."); } public MediaSink getInput() { return sink; } private class LocalSink extends AbstractSink { public LocalSink(String name) { super(name); } public Format[] getFormats() { throw new UnsupportedOperationException("Not supported yet."); } public boolean isAcceptable(Format format) { throw new UnsupportedOperationException("Not supported yet."); } @Override public void onMediaTransfer(Buffer buffer) { throw new UnsupportedOperationException("Not supported yet."); } } } }