package edu.neu.ccs.evergreen.util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import org.junit.Test; /** * Test the polynomial class. */ public class PolynomialTest { /** * Multiple two polynomials. */ @Test public void testMultiply() { Polynomial result = Polynomial.getPolynomial(3, 1).multiply(2); assertEquals(2.0, result.getCoefficient(3), Polynomial.DELTA); assertEquals(-4.0, result.getCoefficient(2), Polynomial.DELTA); assertEquals(2.0, result.getCoefficient(1), Polynomial.DELTA); assertEquals(0.0, result.getCoefficient(0), Polynomial.DELTA); } /** * Add two polynomials. */ @Test public void testAdd() { Polynomial result = Polynomial.getPolynomial(3, 1).add( Polynomial.getPolynomial(2, 0)); assertEquals(1.0, result.getCoefficient(3), Polynomial.DELTA); assertEquals(-1.0, result.getCoefficient(2), Polynomial.DELTA); assertEquals(-1.0, result.getCoefficient(1), Polynomial.DELTA); assertEquals(1.0, result.getCoefficient(0), Polynomial.DELTA); } /** * Differentiate a polynomial. */ @Test public void testDifferentiate() { Polynomial result = Polynomial.getPolynomial(3, 0).differentiate(); assertEquals(0.0, result.getCoefficient(3), Polynomial.DELTA); assertEquals(-3.0, result.getCoefficient(2), Polynomial.DELTA); assertEquals(6.0, result.getCoefficient(1), Polynomial.DELTA); assertEquals(-3.0, result.getCoefficient(0), Polynomial.DELTA); result = result.differentiate(); assertEquals(0.0, result.getCoefficient(3), Polynomial.DELTA); assertEquals(0.0, result.getCoefficient(2), Polynomial.DELTA); assertEquals(-6.0, result.getCoefficient(1), Polynomial.DELTA); assertEquals(6.0, result.getCoefficient(0), Polynomial.DELTA); } /** * Get polynomial coefficients. */ @Test public void testGetCoefficients() { Polynomial polynomial = Polynomial.getPolynomial(2, 1); assertEquals(0.0, polynomial.getCoefficient(3), Polynomial.DELTA); assertEquals(-1.0, polynomial.getCoefficient(2), Polynomial.DELTA); assertEquals(1.0, polynomial.getCoefficient(1), Polynomial.DELTA); assertEquals(0.0, polynomial.getCoefficient(0), Polynomial.DELTA); try { Polynomial.getPolynomial(1, 2); fail("No Error"); } catch (IllegalArgumentException exception) { } } /** * Solve the polynomial for 0. */ @Test public void testSolve0() { try { new Polynomial(0, 0, 0, 1).solve0(); fail("No Error"); } catch (UnsupportedOperationException exception) { } Polynomial polynomial = new Polynomial(0, 0, 1, 0); double results[] = polynomial.solve0(); assertEquals(1, results.length); assertEquals(0.0, results[0], Polynomial.DELTA); polynomial = new Polynomial(0, 0, -2, 2); results = polynomial.solve0(); assertEquals(1, results.length, Polynomial.DELTA); assertEquals(1.0, results[0], Polynomial.DELTA); polynomial = new Polynomial(0, -3, 6, -3); results = polynomial.solve0(); assertEquals(2, results.length); assertEquals(1.0, results[0], Polynomial.DELTA); assertEquals(1.0, results[1], Polynomial.DELTA); polynomial = new Polynomial(0, 3, -4, 1); results = polynomial.solve0(); assertEquals(2, results.length); assertEquals(1.0, results[0], Polynomial.DELTA); assertEquals(1.0 / 3.0, results[1], Polynomial.DELTA); polynomial = new Polynomial(0, 2, 1, 2); results = polynomial.solve0(); assertEquals(0, results.length); try { new Polynomial(1, 1, 1, 1).solve0(); fail("No Error"); } catch (UnsupportedOperationException exception) { } } /** * Evaluate the polynomial. */ @Test public void testEval() { Polynomial polynomial = new Polynomial(0, 0, 0, 1); assertEquals(1.0, polynomial.eval(0), Polynomial.DELTA); assertEquals(1.0, polynomial.eval(1), Polynomial.DELTA); polynomial = new Polynomial(0, 0, 2, 1); assertEquals(1.0, polynomial.eval(0), Polynomial.DELTA); assertEquals(3.0, polynomial.eval(1), Polynomial.DELTA); assertEquals(7.0, polynomial.eval(3), Polynomial.DELTA); assertEquals(-3.0, polynomial.eval(-2), Polynomial.DELTA); polynomial = new Polynomial(0, -3, 2, 1); assertEquals(1.0, polynomial.eval(0), Polynomial.DELTA); assertEquals(0.0, polynomial.eval(1), Polynomial.DELTA); assertEquals(-20.0, polynomial.eval(3), Polynomial.DELTA); assertEquals(-15.0, polynomial.eval(-2), Polynomial.DELTA); polynomial = new Polynomial(1, -3, 2, 1); assertEquals(1.0, polynomial.eval(0), Polynomial.DELTA); assertEquals(1.0, polynomial.eval(1), Polynomial.DELTA); assertEquals(7.0, polynomial.eval(3), Polynomial.DELTA); assertEquals(-23.0, polynomial.eval(-2), Polynomial.DELTA); } }