/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package polynomial; 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.*; /** * A test class for the polynomial.Polynomial class * @author Camil Staps, s4498062 */ public class PolynomialTest { public PolynomialTest() { } @BeforeClass public static void setUpClass() { } @AfterClass public static void tearDownClass() { } @Before public void setUp() { } @After public void tearDown() { } /** * Test of toString method, of class Polynomial. */ @Test public void testToString() { System.out.println("toString"); // Test exp=0, exp=1, exp>1, positive & negative integer & floating point coefficients all at once assertEquals("3.000000x^5-4.000000x+2.500000-3.400000x^-7", new Polynomial("3 5 -4 1 2.5 0 -3.4 -7").toString()); // Test zero polynomial assertEquals("", new Polynomial().toString()); } /** * Test of minus method, of class Polynomial. */ @Test public void testMinus() { System.out.println("minus"); // Test cancelling out and exponents that don't exist in either of the two polynomials all at once Polynomial instance = new Polynomial("7 4 -4 2 3 1 5 0"); // 7x^4 - 4x^2 + 3x + 5 instance.minus(new Polynomial("5 3 4 2 3 1 10 0")); // 5x^3 + 4x^2 + 3x + 10 assertEquals(new Polynomial("7 4 -5 3 -8 2 -5 0"), instance); // 7x^4 - 5x^3 - 8x^2 - 5 } /** * Test of times method, of class Polynomial. */ @Test public void testTimes() { System.out.println("times"); // Simple case Polynomial instance = new Polynomial("7 1 6 3"); instance.times(new Polynomial("5 3 4 2")); assertEquals(new Polynomial("30 6 24 5 35 4 28 3"), instance); // Simple case with zero polynomial instance = new Polynomial("5 3"); instance.times(new Polynomial()); assertEquals(new Polynomial(), instance); // Advanced case with coefficient 0 in the result instance = new Polynomial("4 4 2 3"); // 4x^4 + 2x^3 instance.times(new Polynomial("2 2 -4 3")); // 2x^2 - 4x^3 assertEquals(new Polynomial("4 5 -16 7"), instance); // 4x^5 - 16x^7 (exponent 6 cancels out) } /** * Test of divide method, of class Polynomial. */ @Test public void testDivide() { System.out.println("divide"); Polynomial b = null; Polynomial instance = new Polynomial(); instance.divide(b); // TODO review the generated test code and remove the default call to fail. fail("The test case is a prototype."); } /** * Test of equals method, of class Polynomial. */ @Test public void testEquals() { System.out.println("equals"); // Order of terms irrelevant assertEquals(true, new Polynomial("4 2 3 5").equals(new Polynomial("3 5 4 2"))); // Terms with same exponent are added assertEquals(true, new Polynomial("5 5 10 5").equals(new Polynomial("15 5"))); // Simple coefficient 0 removed assertEquals(true, new Polynomial("0 7").equals(new Polynomial())); // Advanced coefficient 0 removed assertEquals(true, new Polynomial("5 10 -5 10").equals(new Polynomial())); // Difference in exponent matters assertEquals(false, new Polynomial("10 0").equals(new Polynomial("10 1"))); // Difference in coefficient matters assertEquals(false, new Polynomial("10 0").equals(new Polynomial("5 0"))); } /** * Test of plus method, of class Polynomial. */ @Test public void testPlus_Polynomial() { System.out.println("plus"); // Test cancelling out and exponents that don't exist in either of the two polynomials all at once Polynomial instance = new Polynomial("7 4 -4 2 7 1 5 0"); // 7x^4 - 4x^2 + 7x + 5 instance.plus(new Polynomial("5 3 4 2 3 1 10 0")); // 5x^3 + 4x^2 + 3x + 10 assertEquals(new Polynomial("7 4 5 3 10 1 15 0"), instance); // 7x^4 + 5x^3 + 10x + 15 } /** * Test of apply method, of class Polynomial. */ @Test public void testApply() { System.out.println("apply"); // Test zero coefficient, floating point coefficient and negative coefficient all at once Polynomial instance = new Polynomial("0 7 5 4 0.5 3 9 2 -8 0"); assertEquals(422654.5, instance.apply(17.0), 0.0); } }