From eb0b399a10f45d314db96c7eda60f41245c5b12a Mon Sep 17 00:00:00 2001
From: Martin Goik <goik@hdm-stuttgart.de>
Date: Wed, 28 Jun 2023 14:59:33 +0200
Subject: [PATCH] Test renaming, better zero categories

---
 .../mi/sd1/task2/QuadratPolynom.java          |  7 ++-
 .../mi/sd1/task2/QuadratPolynom.java          | 60 ++++++++++++-------
 .../mi/sd1/ShowReachedPoints.java             |  4 +-
 ...atPolynom.java => TestQuadratPolynom.java} |  2 +-
 4 files changed, 45 insertions(+), 28 deletions(-)
 rename Klausuren/Sd1/2021winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task2/{Test_QuadratPolynom.java => TestQuadratPolynom.java} (99%)

diff --git a/Klausuren/Sd1/2021winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task2/QuadratPolynom.java b/Klausuren/Sd1/2021winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task2/QuadratPolynom.java
index 577bf62c8..e00c9e875 100644
--- a/Klausuren/Sd1/2021winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task2/QuadratPolynom.java
+++ b/Klausuren/Sd1/2021winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/task2/QuadratPolynom.java
@@ -5,13 +5,14 @@ package de.hdm_stuttgart.mi.sd1.task2;
  *
  * <p>A quadratic polynomial \( p(x)  = a x² + b x + c \) is being defined by its three coefficients
  * \(a\), \(b\) and \(c\). This class limits coefficients \(a\), \(b\) and \(c\) to type <code>int</code>. For
- * \(a \neq 0\) a general solution is being provided by:</p>
+ * \(a \neq 0\) zeroes are being calculated by:</p>
  *
  * <p>\[ x_{1,2} = {{-b \pm \sqrt{b^2 - 4 ac}} \over {2a}} \]</p>
  *
- * <p>Depending on \( b^2 - 4 ac \) being positive, zero or negative we have either two, one or no real solutions.</p>
+ * <p>For \( a \neq 0 \) depending on \( b^2 - 4 ac \) being positive, zero or negative we have either two, one or no
+ * real solutions.</p>
  *
- * <p>The following sample illustrates zeroes calculation depending on given values of \(a\), \(b\) and \(c\):</p>
+ * <p>The following samples illustrates calculation of zeroes depending on given values of \(a\), \(b\) and \(c\):</p>
  *
  * <table class="goikTableDefaults">
  *     <caption>Sample code illustrating zero values calculation</caption>
diff --git a/Klausuren/Sd1/2021winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task2/QuadratPolynom.java b/Klausuren/Sd1/2021winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task2/QuadratPolynom.java
index 3defa74b4..78f5284e3 100644
--- a/Klausuren/Sd1/2021winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task2/QuadratPolynom.java
+++ b/Klausuren/Sd1/2021winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/task2/QuadratPolynom.java
@@ -5,7 +5,7 @@ package de.hdm_stuttgart.mi.sd1.task2;
  *
  * <p>A quadratic polynomial \( p(x)  = a x² + b x + c \) is being defined by its three coefficients
  * \(a\), \(b\) and \(c\). This class limits coefficients \(a\), \(b\) and \(c\) to type <code>int</code>. For
- * \(a \neq 0\) a general solution is being provided by:</p>
+ * \(a \neq 0\) zeroes are being calculated by:</p>
  *
  * <p>\[ x_{1,2} = {{-b \pm \sqrt{b^2 - 4 ac}} \over {2a}} \]</p>
  *
@@ -180,9 +180,8 @@ public class QuadratPolynom {
     /**
      * <p>Re- setting the square coefficient in \( a x² \).</p>
      * @param a The desired new value.
-     * @throws ArithmeticException  The square coefficient \( a x² \) must not be zero
      */
-    public void setA(final int a) throws ArithmeticException {
+    public void setA(final int a) {
         this.a = a;
     }
     /**
@@ -203,38 +202,55 @@ public class QuadratPolynom {
     /**
      * <p>Zeroes are all values of \(x\) solving \(a x² + b x + c = 0\).</p>
      *
-     * <p>For \(a \neq 0\) zeros are being calculated using:</p>
+     * <p>We observe different categories:</p>
      *
-     * <p>\[ x = {{ -b \pm \sqrt {b² - 4 a c}} \over {2 a}} \]</p>
+     * <dl>
      *
-     * @return <p>Distinct cases:</p>
+     *     <dt>\( a = 0\):</dt>
+     *     <dd>
+     *         <dl>
+     *             <dt>\( b = 0\):</dt>
+     *             <dd>
+     *                 <dl>
+     *                     <dt>\( c = 0 \)</dt>
+     *                     <dd>Infinite number of zeroes \mathbb{R}, an {@link ArithmeticException} will be thrown</dd>
      *
-     * <dl>
+     *                      <dt>\( c \neq 0 \)</dt>
+     *                      <dd>Empty set, no zero at all.</dd>
+     *                 </dl>
      *
-     *     <dt>\( a = b = c = 0\):</dt>
-     *     <dd><p>Zero function, throw an {@link ArithmeticException}</p>.</dd>
+     *             </dd>
      *
-     *     <dt>\( a = b = 0\) and \( c \neq 0\):</dt>
-     *     <dd><p><code>double[0]</code> empty array indicating the non-existence of any zero.</p></dd>
+     *             <dt>\( b \neq 0\):</dt>
+     *             <dd>Zero at \(-{c\over b}\)</dd>
      *
-     *     <dt>\( a = c = 0\) and \( b \neq 0\):</dt>
-     *     <dd><p><code>double[1]</code> array containing the single value \(0\)</p></dd>
+     *         </dl>
      *
-     *     <dt>\( b² - 4 a c &lt; 0\):</dt>
-     *     <dd><p><code>double[0]</code> empty array indicating the non-existence of any real zero.</p></dd>
+     *     </dd>
      *
-     *     <dt>\( b² - 4 a c = 0\):</dt>
-     *     <dd><p>An <code>double[1]</code> array containing the single zero {\(-b \over {2 a} \)}.</p></dd>
+     *     <dt>\( a \neq 0\):</dt>
+     *     <dd>
+     *         <dl>
+     *           <dt>\( b² - 4 a c &lt; 0\):</dt>
+     *           <dd><p>Empty array <code>double[0]</code> indicating the non-existence of any real zero.</p></dd>
      *
-     *     <dt>\( b² - 4 a c &gt; 0\):</dt>
-     *     <dd><p>An <code>double[2]</code> array containing two distinct zeroes
-     *     \( {1\over {2 a}}\left( -b - \sqrt {b² - 4 a c}\right) \)
-     *     and \( {1\over {2 a}}\left( -b + \sqrt {b² - 4 a c}\right) \) ordered by size.</p></dd>
+     *           <dt>\( b² - 4 a c = 0\):</dt>
+     *           <dd><p>An <code>double[1]</code> array containing the single zero {\(-b \over {2 a} \)}.</p></dd>
      *
+     *           <dt>\( b² - 4 a c &gt; 0\):</dt>
+     *           <dd><p>An array <code>double[2]</code> containing two distinct zeroes
+     *             \(-b + \sqrt {b² - 4 a c} \over {2 a} \)
+     *           and \(-b - \sqrt {b² - 4 a c} \over {2 a} \) ordered by size.</p></dd>
+     *         </dl>
+     *     </dd>
      * </dl>
      *
+     * @return The finite set of zeroes. In case of an infinite number of zeroes an arithmetic exception is being thrown.
+     *
+     * @throws ArithmeticException In case of \(a = b = c = 0 \) an infinite number of zeroes exists which cannot be
+     *                             represented by a finite array of double values.
      */
-    public double[] getZeroes() {
+    public double[] getZeroes() throws ArithmeticException {
 
         if (0 != a) {  // square polynomial
             final long radicand = ((long) b) * b - 4L * a * c; // Avoiding overflow errors
diff --git a/Klausuren/Sd1/2021winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/ShowReachedPoints.java b/Klausuren/Sd1/2021winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/ShowReachedPoints.java
index ae8720eb0..b561c3a7e 100644
--- a/Klausuren/Sd1/2021winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/ShowReachedPoints.java
+++ b/Klausuren/Sd1/2021winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/ShowReachedPoints.java
@@ -3,7 +3,7 @@ package de.hdm_stuttgart.mi.sd1;
 import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
 
 import de.hdm_stuttgart.mi.sd1.task1.*;
-import de.hdm_stuttgart.mi.sd1.task2.Test_QuadratPolynom;
+import de.hdm_stuttgart.mi.sd1.task2.TestQuadratPolynom;
 
 public class ShowReachedPoints {
 
@@ -17,6 +17,6 @@ public class ShowReachedPoints {
       "Task 1"
             , A_TrafficLightTest.class, B_StringHelperTest.class, C_ArrayHelperTest.class, D_TextFrameTest.class
       );
-    RunTests.exec("Task 2", Test_QuadratPolynom.class);
+    RunTests.exec("Task 2", TestQuadratPolynom.class);
   }
 }
\ No newline at end of file
diff --git a/Klausuren/Sd1/2021winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task2/Test_QuadratPolynom.java b/Klausuren/Sd1/2021winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task2/TestQuadratPolynom.java
similarity index 99%
rename from Klausuren/Sd1/2021winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task2/Test_QuadratPolynom.java
rename to Klausuren/Sd1/2021winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task2/TestQuadratPolynom.java
index 5b209d488..4fbd48f88 100644
--- a/Klausuren/Sd1/2021winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task2/Test_QuadratPolynom.java
+++ b/Klausuren/Sd1/2021winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/task2/TestQuadratPolynom.java
@@ -9,7 +9,7 @@ import org.junit.Test;
 import org.junit.runners.MethodSorters;
 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
 
-public class Test_QuadratPolynom extends ExaminationTestDefaults {
+public class TestQuadratPolynom extends ExaminationTestDefaults {
 
     @Test
     @Marking(points = 5)
-- 
GitLab