package org.mobicents.media.server.impl.rtp;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/**
*
* @author amit bhayani
*
*/
public class JitterBufferTest {
private int period = 20;
private int jitter = 40;
private JitterBuffer jitterBuffer;
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Before
public void setUp() {
jitterBuffer = new JitterBuffer(jitter, period);
}
@After
public void tearDown() {
}
private RtpPacket createBuffer(int seq) {
return new RtpPacket((byte)0, seq, seq * 160, 1, new byte[160]);
}
@Test
public void testAccuracy() {
jitterBuffer.write(createBuffer(1));
RtpPacket packet = jitterBuffer.read();
assertEquals("Jitter Buffer not full yet", null, packet);
jitterBuffer.write(createBuffer(2));
packet = jitterBuffer.read();
assertEquals("Jitter Buffer not full yet", null, packet);
jitterBuffer.write(createBuffer(3));
//buffer is filled and ready for output
packet = jitterBuffer.read();
check(packet, 1);
packet = jitterBuffer.read();
check(packet, 2);
packet = jitterBuffer.read();
check(packet, 3);
//here buffer is empty
packet = jitterBuffer.read();
assertEquals("Jitter Buffer not full yet", null, packet);
}
private void check(RtpPacket packet, int seq) {
assertTrue("Failed to match binary representation.", packet != null);
assertTrue("Expected seq = " + seq, packet.getSeqNumber() == seq);
assertTrue("Expected timestamp=" + (seq*160), packet.getTimestamp() == (seq*160));
}
}