/* ChebyshevIIRDesignerTest.java created 2010-09-14 * */ package org.signalml.math.iirdesigner; import static org.signalml.math.iirdesigner.IIRDesignerAssert.*; import org.junit.Test; import java.lang.Math.*; import org.signalml.math.iirdesigner.BadFilterParametersException; import org.signalml.math.iirdesigner.Chebyshev1IIRDesigner; import org.signalml.math.iirdesigner.ChebyshevIIRDesigner; import org.signalml.math.iirdesigner.FilterType; import org.signalml.math.iirdesigner.AbstractIIRDesigner.BandstopObjectiveFunction; /** * This class performs unit tests on {@link ChebyshevIIRDesigner} class. * * @author Piotr Szachewicz */ public class ChebyshevIIRDesignerTest { /** * an instance of {@link Chebyshev1IIRDesigner} needed to call all the test methods */ Chebyshev1IIRDesigner iirdesigner = new Chebyshev1IIRDesigner(); /** * Test method for {@link ChebyshevIIRDesigner#calculateFilterOrder(org.signalml.math.iirdesigner.FilterType, double[], double[], double, double, boolean) }. */ @Test public void testCalculateFilterOrder() throws BadFilterParametersException { int filterOrder; //digital lowpass filterOrder = iirdesigner.calculateFilterOrder(FilterType.LOWPASS, 0.4, 0.7, 3, 40, false); assertEquals(4, filterOrder); //digital highpass filterOrder = iirdesigner.calculateFilterOrder(FilterType.HIGHPASS, 0.7, 0.3, 1, 80, false); assertEquals(6, filterOrder); //digital bandstop filterOrder = iirdesigner.calculateFilterOrder(FilterType.BANDSTOP, new double[] {0.5, 0.8}, new double[] {0.6, 0.7}, 0.5, 100, false); assertEquals(8, filterOrder); //analog bandpass filterOrder = iirdesigner.calculateFilterOrder(FilterType.BANDPASS, new double[] {0.6, 0.7}, new double[] {0.55, 0.8}, 0.5, 100, true); assertEquals(10, filterOrder); } /** * Test method for {@link ChebyshevIIRDesigner#calculateBandstopObjectiveFunctionValue(double, int, double[], double[], double, double) }. */ @Test public void testBandstopObjectiveFunction() { //chebyshev test (both chebyshev's are implemented by the same code) BandstopObjectiveFunction bo = iirdesigner.new BandstopObjectiveFunction(0, new double[] {0.1, 0.8}, new double[] {0.4, 0.6}, 3, 20); assertEquals(3.7599806708583481, bo.value(0.0), 1e-8); } }