/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.mobicents.media.server.impl.resource.phone;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
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.server.impl.clock.TimerImpl;
import org.mobicents.media.server.spi.NotificationListener;
import org.mobicents.media.server.spi.Timer;
import org.mobicents.media.server.spi.events.NotifyEvent;
/**
*
* @author kulikov
*/
public class PhoneSignalsTest implements NotificationListener {
private Timer timer;
private PhoneSignalGenerator gen;
private PhoneSignalDetector det;
private Semaphore semaphore = new Semaphore(0);
private boolean evtDetected;
public PhoneSignalsTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Before
public void setUp() {
timer = new TimerImpl();
timer.start();
short A = Short.MAX_VALUE /2;
int[] F = new int[]{100, 200};
int[] T = new int[]{1,1};
gen = new PhoneSignalGenerator("phone.gen", timer);
gen.setAmplitude((short)320);
gen.setFrequency(F);
gen.setPeriods(T);
det = new PhoneSignalDetector("phone.detector");
det.setFrequency(F);
det.setPeriods(T);
det.setVolume(-30);
det.setEventID(50);
det.addListener(this);
gen.connect(det);
}
@After
public void tearDown() {
timer.stop();
}
/**
* Test of setPeriods method, of class PhoneSignalDetector.
*/
@Test
public void testSetPeriods() throws Exception {
det.start();
gen.start();
semaphore.tryAcquire(10, TimeUnit.SECONDS);
assertTrue("Event not detected", evtDetected);
}
public void update(NotifyEvent event) {
if (event.getEventID() == 50) {
evtDetected = true;
semaphore.release();
}
}
}