/* SpecialMathTest.java created 2010-09-12 * */ package org.signalml.math.iirdesigner.math; import org.junit.Test; import org.signalml.math.iirdesigner.math.SpecialMath; import static org.junit.Assert.*; import static org.signalml.math.iirdesigner.math.SpecialMath.*; /** * This class performs unit tests for {@link SpecialMath} class. * * @author Piotr Szachewicz */ public class SpecialMathTest { /** * Test method for {@link SpecialMath#getMachineEpsilon() }. */ @Test public void testGetMachineEpsilon() { assertEquals(1.1102230246251565E-16, getMachineEpsilon(), 1e-32); } /** * Test method for {@link SpecialMath#evaluatePolynomial(double, double[]) }. */ @Test public void testEvaluatePolynomial() { assertEquals(evaluatePolynomial(5, new double[] {3, 0, 1 }), 76.0, 0.00001); assertEquals(evaluatePolynomial(0.13, new double[] {0.7, -6.6, 4.1, 0.3, -3.43, -1}), -1.43368133549, 0.000001); } /** * Test method for {@link SpecialMath#calculateCompleteEllipticIntegralOfTheFirstKind(double) }. */ @Test public void testCalculateCompleteEllipticIntegralOfTheFirstKind() { assertEquals(1.8540746773013719, calculateCompleteEllipticIntegralOfTheFirstKind(0.5), 1e-16); assertEquals(1.5707963267948966, calculateCompleteEllipticIntegralOfTheFirstKind(getMachineEpsilon()), 1e-16); } /** * Test method for {@link SpecialMath#calculateJacobianEllipticFunctionsValues(double, double) }. */ @Test public void testCalculateJacobianEllipticFunctions() { double result[] = calculateJacobianEllipticFunctionsValues(0.5, 0.7); assertEquals(4, result.length); assertEquals(0.46729200535903359, result[0], 1e-16);//sn assertEquals(0.8841030379585475, result[1], 1e-16);//cn assertEquals(0.92040574053472368, result[2], 1e-16);//dn assertEquals(0.48622530445618917, result[3], 1e-16);//phi } /** * Test method for {@link SpecialMath#factorial(int) }. */ @Test public void testFactorialTest() { assertEquals(1, factorial(0)); assertEquals(1, factorial(1)); assertEquals(2, factorial(2)); assertEquals(6, factorial(3)); assertEquals(120, factorial(5)); } /** * Test method for {@link SpecialMath#combinations(int, int) }. */ @Test public void testCombinationsTest() { assertEquals(10, combinations(5, 3)); assertEquals(6, combinations(4, 2)); assertEquals(220, combinations(12, 3)); } /** * Test method for {@link SpecialMath#isOdd(int) }. */ @Test public void testIsOdd() { assertTrue(isOdd(3)); assertFalse(isOdd(12)); } /** * Test method for {@link SpecialMath#isEven(int) }. */ @Test public void testIsEven() { assertTrue(isEven(2)); assertFalse(isEven(5)); } }