/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.restcomm.media.resource.dtmf; import static org.junit.Assert.assertEquals; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.restcomm.media.component.audio.AudioComponent; import org.restcomm.media.component.audio.AudioMixer; import org.restcomm.media.component.oob.OOBComponent; import org.restcomm.media.component.oob.OOBMixer; import org.restcomm.media.scheduler.Clock; import org.restcomm.media.scheduler.PriorityQueueScheduler; import org.restcomm.media.scheduler.WallClock; import org.restcomm.media.spi.dtmf.DtmfDetectorListener; import org.restcomm.media.spi.dtmf.DtmfEvent; import org.restcomm.media.spi.listener.TooManyListenersException; /** * * @author yulian oifa */ public class DtmfTest implements DtmfDetectorListener { private Clock clock; private PriorityQueueScheduler scheduler; private DetectorImpl detector; private GeneratorImpl generator; private AudioComponent detectorComponent; private AudioComponent generatorComponent; private AudioMixer audioMixer; private OOBComponent oobDetectorComponent; private OOBComponent oobGeneratorComponent; private OOBMixer oobMixer; private String tone; @Before public void setUp() throws TooManyListenersException { clock = new WallClock(); scheduler = new PriorityQueueScheduler(); scheduler.setClock(clock); scheduler.start(); generator = new GeneratorImpl("dtmf", scheduler); generator.setToneDuration(500); generator.setVolume(-20); detector = new DetectorImpl("dtmf", -35, 40, 500, scheduler); detector.addListener(this); audioMixer=new AudioMixer(scheduler); detectorComponent=new AudioComponent(1); detectorComponent.addOutput(detector.getAudioOutput()); detectorComponent.updateMode(false,true); generatorComponent=new AudioComponent(2); generatorComponent.addInput(generator.getAudioInput()); generatorComponent.updateMode(true,false); audioMixer.addComponent(detectorComponent); audioMixer.addComponent(generatorComponent); oobMixer=new OOBMixer(scheduler); oobDetectorComponent=new OOBComponent(1); oobDetectorComponent.addOutput(detector.getOOBOutput()); oobDetectorComponent.updateMode(false,true); oobGeneratorComponent=new OOBComponent(2); oobGeneratorComponent.addInput(generator.getOOBInput()); oobGeneratorComponent.updateMode(true,false); oobMixer.addComponent(oobDetectorComponent); oobMixer.addComponent(oobGeneratorComponent); } @After public void tearDown() { generator.deactivate(); detector.deactivate(); audioMixer.stop(); scheduler.stop(); } /** * Test of setDuration method, of class DetectorImpl. */ @Test public void testDigit1() throws InterruptedException { generator.setDigit("1"); generator.activate(); detector.activate(); audioMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); audioMixer.stop(); assertEquals("1", tone); tone=""; generator.setOOBDigit("1"); generator.activate(); detector.activate(); oobMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); oobMixer.stop(); assertEquals("1", tone); } @Test public void testDigit2() throws InterruptedException { generator.setDigit("2"); generator.activate(); detector.activate(); audioMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); audioMixer.stop(); assertEquals("2", tone); tone=""; generator.setOOBDigit("2"); generator.activate(); detector.activate(); oobMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); oobMixer.stop(); assertEquals("2", tone); } @Test public void testDigit3() throws InterruptedException { generator.setDigit("3"); generator.activate(); detector.activate(); audioMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); audioMixer.stop(); assertEquals("3", tone); tone=""; generator.setOOBDigit("3"); generator.activate(); detector.activate(); oobMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); oobMixer.stop(); assertEquals("3", tone); } @Test public void testDigit4() throws InterruptedException { generator.setDigit("4"); generator.activate(); detector.activate(); audioMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); audioMixer.stop(); assertEquals("4", tone); tone=""; generator.setOOBDigit("4"); generator.activate(); detector.activate(); oobMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); oobMixer.stop(); assertEquals("4", tone); } @Test public void testDigit5() throws InterruptedException { generator.setDigit("5"); generator.activate(); detector.activate(); audioMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); audioMixer.stop(); assertEquals("5", tone); tone=""; generator.setOOBDigit("5"); generator.activate(); detector.activate(); oobMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); oobMixer.stop(); assertEquals("5", tone); } @Test public void testDigit6() throws InterruptedException { generator.setDigit("6"); generator.activate(); detector.activate(); audioMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); audioMixer.stop(); assertEquals("6", tone); tone=""; generator.setOOBDigit("6"); generator.activate(); detector.activate(); oobMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); oobMixer.stop(); assertEquals("6", tone); } @Test public void testDigit7() throws InterruptedException { generator.setDigit("7"); generator.activate(); detector.activate(); audioMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); audioMixer.stop(); assertEquals("7", tone); tone=""; generator.setOOBDigit("7"); generator.activate(); detector.activate(); oobMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); oobMixer.stop(); assertEquals("7", tone); } @Test public void testDigit8() throws InterruptedException { generator.setDigit("8"); generator.activate(); detector.activate(); audioMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); audioMixer.stop(); assertEquals("8", tone); tone=""; generator.setOOBDigit("8"); generator.activate(); detector.activate(); oobMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); oobMixer.stop(); assertEquals("8", tone); } @Test public void testDigit9() throws InterruptedException { generator.setDigit("9"); generator.activate(); detector.activate(); audioMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); audioMixer.stop(); assertEquals("9", tone); tone=""; generator.setOOBDigit("9"); generator.activate(); detector.activate(); oobMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); oobMixer.stop(); assertEquals("9", tone); } @Test public void testDigit0() throws InterruptedException { generator.setDigit("0"); generator.activate(); detector.activate(); audioMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); audioMixer.stop(); assertEquals("0", tone); tone=""; generator.setOOBDigit("0"); generator.activate(); detector.activate(); oobMixer.start(); Thread.sleep(1000); generator.deactivate(); detector.deactivate(); oobMixer.stop(); assertEquals("0", tone); } public void process(DtmfEvent event) { tone = event.getTone(); } }