diff options
| author | Camil Staps | 2015-04-18 13:44:44 +0200 | 
|---|---|---|
| committer | Camil Staps | 2015-04-18 13:44:44 +0200 | 
| commit | 6a44b074f0169a1b0f9e92347af929c5e471746e (patch) | |
| tree | ae5663fe7c69881bf4ecfedbef99c2505f8ec964 /Week7 Polynomials/test | |
| parent | Added copyright to docs (diff) | |
Reorganised projects
Diffstat (limited to 'Week7 Polynomials/test')
| -rw-r--r-- | Week7 Polynomials/test/polynomial/PolynomialTest.java | 226 | 
1 files changed, 226 insertions, 0 deletions
| diff --git a/Week7 Polynomials/test/polynomial/PolynomialTest.java b/Week7 Polynomials/test/polynomial/PolynomialTest.java new file mode 100644 index 0000000..c00f165 --- /dev/null +++ b/Week7 Polynomials/test/polynomial/PolynomialTest.java @@ -0,0 +1,226 @@ +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("3x^5-4x+2.5-3.4x^-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 minus = plus (times -1) on many small 2-term polynomials +        for (float c1 = -10; c1 < 10; c1 += 2.3) +            for (int exp1 = 5; exp1 < 10; exp1++) +                for (float c2 = -10; c2 < 10; c2 += 2.3) +                    for (int exp2 = 5; exp2 < 10; exp2++) { +                        Polynomial fst = new Polynomial(c1 + " " + exp1 + " " + c2 + " " + exp2); +                        Polynomial snd = new Polynomial(c1 + " " + exp2 + " " + c2 + " " + exp1); +                        Polynomial fst_2 = new Polynomial(fst); +                        Polynomial snd_2 = new Polynomial(snd); +                        fst.minus(snd); +                        snd_2.times(new Polynomial("-1 0")); +                        fst_2.plus(snd_2); +                        assertEquals(true, fst.equals(fst_2)); +                    } +         +        // Test associativity for some random polynomials +        Polynomial a = new Polynomial("5 4 2 5 20 8 4 0"); +        Polynomial b = new Polynomial("9 2 48 2 10 8 28 2"); +        Polynomial c = new Polynomial("3 8 4 20 8 2 4 5 0 0"); +        Polynomial a_bc = new Polynomial(a); +        a_bc.minus(b); +        a_bc.minus(c); +        Polynomial a_cb = new Polynomial(a); +        a_cb.minus(c); +        a_cb.minus(b); +        assertEquals(true, a_bc.equals(a_cb)); +    } + +    /** +     * 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 associativity for some random polynomials +        Polynomial a = new Polynomial("5 4 2 5 20 8 4 0"); +        Polynomial b = new Polynomial("9 2 48 2 10 8 28 2"); +        Polynomial c = new Polynomial("3 8 4 20 8 2 4 5 0 0"); +        Polynomial a_bc = new Polynomial(a); +        a_bc.times(b); +        a_bc.times(c); +        Polynomial a_cb = new Polynomial(a); +        a_cb.times(c); +        a_cb.times(b); +        assertEquals(true, a_bc.equals(a_cb)); +         +        // Test commutativity +        Polynomial a_b = new Polynomial(a); +        a_b.times(b); +        Polynomial b_a = new Polynomial(b); +        b_a.times(a); +        assertEquals(true, a_b.equals(b_a)); +         +        // Test left distributivity +        Polynomial b_plus_c = new Polynomial(b); +        b_plus_c.plus(c); +        Polynomial a_times_b_plus_c = new Polynomial(a); +        a_times_b_plus_c.times(b_plus_c); +        Polynomial a_times_c = new Polynomial(a); +        a_times_c.times(c); +        Polynomial a_times_b_plus_a_times_c = new Polynomial(a); +        a_times_b_plus_a_times_c.times(b); +        a_times_b_plus_a_times_c.plus(a_times_c); +        assertEquals(true, a_times_b_plus_c.equals(a_times_b_plus_a_times_c)); +         +        // Test right distributivity +        Polynomial b_plus_c_times_a = new Polynomial(b); +        b_plus_c_times_a.plus(c); +        b_plus_c_times_a.times(a); +        Polynomial c_times_a = new Polynomial(c); +        c_times_a.times(a); +        Polynomial b_times_a_plus_c_times_a = new Polynomial(b); +        b_times_a_plus_c_times_a.times(a); +        b_times_a_plus_c_times_a.plus(c_times_a); +        assertEquals(true, b_plus_c_times_a.equals(b_times_a_plus_c_times_a)); +    } + +    /** +     * 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 associativity for some random polynomials +        Polynomial a = new Polynomial("5 4 2 5 20 8 4 0"); +        Polynomial b = new Polynomial("9 2 7 5 10 8 28 2"); +        Polynomial c = new Polynomial("3 8 4 20 8 2 4 5 0 0"); +        Polynomial a_bc = new Polynomial(a); +        a_bc.plus(b); +        a_bc.plus(c); +        Polynomial a_cb = new Polynomial(a); +        a_cb.plus(c); +        a_cb.plus(b); +        assertEquals(true, a_bc.equals(a_cb)); +         +        // Test commutativity +        Polynomial a_b = new Polynomial(a); +        a_b.plus(b); +        Polynomial b_a = new Polynomial(b); +        b_a.plus(a); +        assertEquals(true, a_b.equals(b_a)); +    } + +    /** +     * 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); +    } +     +} | 
