/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.mobicents.media.server.impl.resource.dtmf; import java.util.ArrayList; 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.Utils; import org.mobicents.media.server.impl.clock.TimerImpl; import org.mobicents.media.server.impl.resource.fft.SpectraAnalyzer; import org.mobicents.media.server.impl.resource.fft.SpectrumEvent; 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 InbandGeneratorImplTest implements NotificationListener { private final static int FREQ_ERROR = 5; private int MAX_ERRORS = 1; private Timer timer; private InbandGeneratorImpl gen; private SpectraAnalyzer det; private ArrayList<double[]> s; public InbandGeneratorImplTest() { } @BeforeClass public static void setUpClass() throws Exception { } @AfterClass public static void tearDownClass() throws Exception { } @Before public void setUp() { timer = new TimerImpl(); timer.start(); gen = new InbandGeneratorImpl("Gen", timer); gen.setToneDuration(2000); gen.setDigit("0"); det = new SpectraAnalyzer("det"); det.addListener(this); s = new ArrayList(); } @After public void tearDown() { timer.stop(); } /** * Test of getDigit method, of class InbandGeneratorImpl. */ @Test @SuppressWarnings("static-access") public void testDigit0() throws Exception { gen.connect(det); gen.start(); det.start(); Thread.currentThread().sleep(2000); gen.stop(); det.stop(); Thread.currentThread().sleep(1000); assertTrue(verify(s, new int[]{941, 1336})); } private boolean verify(ArrayList<double[]> spectra, int[] F) { int errorCount = 0; if (spectra.size() == 0) { return false; } int i =0; for (double[] s : spectra) { int[] ext = Utils.getFreq(s); if (ext.length == 0) { return false; } boolean r = Utils.checkFreq(ext, F, FREQ_ERROR); if (!r) { errorCount++; } } return (errorCount <= MAX_ERRORS); } public void update(NotifyEvent event) { switch (event.getEventID()) { case SpectrumEvent.SPECTRA : System.out.println("Receive spectra"); SpectrumEvent evt = (SpectrumEvent) event; s.add(evt.getSpectra()); break; } } }