aboutsummaryrefslogtreecommitdiff
path: root/Week7 Polynomials/test/polynomial/PolynomialTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'Week7 Polynomials/test/polynomial/PolynomialTest.java')
-rw-r--r--Week7 Polynomials/test/polynomial/PolynomialTest.java226
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);
+ }
+
+}