diff --git a/Klausuren/Sd1/2018winter/Exam/pom.xml b/Klausuren/Sd1/2018winter/Exam/pom.xml index 1f3182dc770de4b392e847fe7608258a29c611a6..cbab63b6df66fbce7044a2f9ce22fc87ba498f22 100644 --- a/Klausuren/Sd1/2018winter/Exam/pom.xml +++ b/Klausuren/Sd1/2018winter/Exam/pom.xml @@ -68,6 +68,10 @@ <artifactId>maven-javadoc-plugin</artifactId> <version>3.1.0</version> <configuration> + <additionalOptions> + <additionalOption>-html5 --allow-script-in-comments -header + <![CDATA['<script type="text/javascript" src="https://freedocs.mi.hdm-stuttgart.de/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>']]></additionalOption> + </additionalOptions> <javaApiLinks> <property> <name>api_11</name> diff --git a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_1_Helper.java similarity index 99% rename from Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java rename to Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_1_Helper.java index 2cb72260baac3b58981f03544f70cca76e9e0b74..249c66f228a976394a2d60791ebc54f82a049f80 100644 --- a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java +++ b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_1_Helper.java @@ -3,7 +3,7 @@ package de.hdm_stuttgart.mi.sd1.aufgabe1; /** * Hilfsmethoden. */ -public class Helper { +public class _1_Helper { /** * Sind alle drei Strings von <code>null</code> verschieden? diff --git a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Person.java b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_2_Person.java similarity index 93% rename from Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Person.java rename to Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_2_Person.java index d0dcac3e82f2bdca1999cb4e17ee62aa182310b0..b85b1b7dfb446c051930c9ec8a4a633ba4ada4e1 100644 --- a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Person.java +++ b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_2_Person.java @@ -11,7 +11,7 @@ package de.hdm_stuttgart.mi.sd1.aufgabe1; * * System.out.println(ute); <b style="color:red;">// Ausgabe: "Ute Kurz (w)"</b></pre> */ -public class Person { +public class _2_Person { /** * Geschlechtsangabe »weiblich« @@ -36,7 +36,7 @@ public class Person { * @param nachname Nachname der Person * @param geschlecht Geschlechtsangabe der Person. */ - public Person(final String vorname, final String nachname, final char geschlecht) { + public _2_Person(final String vorname, final String nachname, final char geschlecht) { // TODO: Implementiere mich! } diff --git a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/ArrayHelper.java b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_3_ArrayHelper.java similarity index 98% rename from Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/ArrayHelper.java rename to Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_3_ArrayHelper.java index 09cfd169da0bb38af1b4a68430331b1b32dff8f1..50b66f97425e92b5f416c8b0a7161db6d3e557e9 100644 --- a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/ArrayHelper.java +++ b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_3_ArrayHelper.java @@ -5,7 +5,7 @@ import java.util.Arrays; /** * Hilfsmethoden für Arrays. */ -public class ArrayHelper { +public class _3_ArrayHelper { /** * <p>Gesamtlänge aller in einem Array enthaltenen Strings.</p> diff --git a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java index a01764bdcf5abad21433c35844089149d0983714..e9381af0413c8a8e9cc9341f09e9eaeb1a1d7e7c 100644 --- a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java +++ b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java @@ -1,7 +1,9 @@ package de.hdm_stuttgart.mi.sd1.aufgabe2; /** - * <p>Längen- oder Breitenangaben in Grad, Winkelminuten und Winkelsekunden. Dabei gilt:</p> + * Umrechnung zweier verschiedener Darstellungen von Breitenangaben. + * + * <p>Längen- oder Breitenangaben können in Grad, Winkelminuten und Winkelsekunden angegeben werden. Dabei gilt:</p> * * <ul> * <li>360° Grad entsprechen dem Vollkreis.</li> @@ -10,16 +12,156 @@ package de.hdm_stuttgart.mi.sd1.aufgabe2; * </ul> * * <p>Beispiel: Die geographische Breitenangabe von Stuttgart lautet <b style="color: red;">48°</b> - * <b style="color: green;">46′</b> <b style="color: blue;">56″</b> (Nord, wird in dieser Aufgabe ignoriert). Diese - * Darstellung als Grad, Bogenminuten und Bogensekunden kann in die dezimale Grad-Darstellung umgerechnet werden:</p> + * <b style="color: green;">46′</b> <b style="color: blue;">56″</b> (Nord, wird in dieser Aufgabe ignoriert).</p> + * + * <p>Alternativ gibt es auch eine dezimale Graddarstellung: Diese geht ebenfalls von einem Vollkreis zu 360° aus. + * Allerdings werden die Minuten- und Sekundenanteile als Dezimalbruch angegeben. Die geographische Breite + * <b style="color: red;">48°</b> <b style="color: green;">46′</b> <b style="color: blue;">56″</b> von Stuttgart + * beispielsweise ergibt sich in dieser Darstellung zu:</p> + * + * \[\color{red}{48} + {\color{green}{46}\over 60} + {\color{blue}{56} \over {60 \times 60}} = 48.782222\dots \] + * + * <p>Instanzen von {@link Geo} können aus beiden Darstellungen erzeugt werden:</p> + * + * <pre>final Geo stuttartBreite1 = new Geo(48, 46, 56), + * stuttartBreite2 = new Geo(48.782222); // Identische Breite bis auf Rundungsfehler</pre> + * + * <section class="implementationHints"> + * <h3>Hinweis:</h3> + * + * <p>Verwenden Sie als Interndarstellung die Angabe in Grad, Winkelminuten und -sekunden. Sie müssen dann + * für den Konstruktor aus einer dezimalen <code>double</code> Gradangabe zunächst Werte wie 48.782222 in den + * ganzzahligen Gradanteil 48 und den gebrochenen Anteil 0.782222 zerlegen. Dazu kann die Methode + * {@link Math#floor(double)} in Zusammenarbeit mit einer cast Operation verwendet werden.</p> + * </section> + * + * <p>Eine Instanz von {@link Geo} stellt beide Darstellungen bereit:</p> + * + * <pre>final Geo breite = ... ; + * + * final int grad = breite.grad, + * minuten = breite.minuten, + * sekunden = breite.sekunden; + * + * final double breiteDezimal = breite.getDezimal(); + * + * </pre> + * + * <p>Instanzen von {@link Geo} werden im Standard wie folgt ausgegeben:</p> + * + * <table class="goikTableDefaults"> + * <tr> + * <td> + * <pre>final Geo stuttartBreite = new Geo(48.782222); + *System.out.println(stuttartBreite);</pre> + * </td> + * <td>48° 46´ 56´´</td> + * </tr> + * </table> + * + * <p>Das Format der Ausgabe kann zur Laufzeit global für alle Instanzen gewechselt werden. Dabei werden für die + * Dezimaldarstellung genau sechs Nachkommastellen ausgegeben:</p> + * + * <table class="goikTableDefaults"> + * <tr> + * <td> + * <pre> ... + * Geo.nutzeDezimalStandard(true); + * System.out.println(stuttartBreite);</pre> + * </td> + * <td>48.782222</td> + * </tr> + * </table> + * + * <section class="implementationHints"> + * <h3>Hinweis:</h3> + * + * <p>Nutzen Sie {@link java.text.DecimalFormat} und verwenden Sie + * {@link java.text.DecimalFormat#setMaximumIntegerDigits(int)} und + * {@link java.text.DecimalFormat#setMaximumFractionDigits(int)}.</p> + * </section> + * + * <p>Instanzen von Geo sollen auf Wertgleichheit geprüft werden können:</p> + * + * <table class="goikTableDefaults"> + * <tr> + * <td> + * <pre> final Geo + * g1 = new Geo(33, 53, 19), + * g2 = new Geo(45, 22, 13), + * g1_klon = new Geo(33, 53, 19); + * + * System.out.println(g1.equals(g2)); + * System.out.println(g1.equals(g1_klon));</pre> + * </td> + * <td> + * <pre> false + * true</pre> + * </td> + * </tr> + * </table> + * + * <p>Winkelangaben sollen aufsteigend sortierbar sein:</p> + * + * <table class="goikTableDefaults"> + * <tr> + * <td> + * <pre> final Geo + * stuttartBreite = new Geo(48, 46, 56), + * beirutBreite = new Geo(33, 53, 19), + * atlantaBreite = new Geo(33, 44, 56); + * + * final Geo[] breitenAngaben = + * {stuttartBreite, beirutBreite, atlantaBreite}; + * + * Arrays.sort(breitenAngaben); + * + * System.out.println("Breitengrade Stuttgart, Beirut und Atlanta" + * + "\naufsteigend sortiert:"); + * + * for (final Geo g: breitenAngaben) { + * System.out.println(g); + * }</pre> + * </td> + * <td> + * <pre> Breitengrade Stuttgart, Beirut und Atlanta + * aufsteigend sortiert: + * 41° 53´ 30´´ + * 48° 46´ 56´´ + * 51° 28´ 38´´</pre> + * </td> + * </tr> + * </table> + * + * <section class="implementationHints"> + * <h3>Hinweis:</h3> + * + * <p>Beachten Sie {@link java.lang.Comparable}.</p> + * + * </section> + * + * <p>Instanzen von {@link Geo} sind unveränderbar (immutable). Der folgende Code führt beispielsweise zu einem Compile + * time Fehler:</p> + * + * <table class="goikTableDefaults"> + * <tr> + * <td> + * <pre> final Geo g = new Geo(22); + * g.sekunden = 44;</pre> + * </td> + * <td style="color: red;">Cannot assign a value to final variable 'sekunden'</td> + * </tr> + * </table> + * + * <section class="implementationHints"> + * <h3>Hinweis:</h3> * - * <p><b style="color: red;">48</b> + <b style="color: green;">46</b>/60 + <b style="color: blue;">56</b> / 3600 - * == 48.78222222222...</p> + * <p>Die Klasse {@link GeoUsageSample} enthält auskommentierten Code, welcher Ihnen als Leitlinie für die + * Verwendung von {@link Geo} dienen kann.</p> * - * <p>Die Klasse {@link Geo (double)} kann zur Umwandlung von Grad/Minuten/Sekundenangaben in - * Dezimalkoordinaten und umgekehrt verwendet werden:</p> + * </section> * */ public class Geo { // TODO: Implementiere mich! -} \ No newline at end of file +} diff --git a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/extra/GeoUsageSample.java b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/GeoUsageSample.java similarity index 90% rename from Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/extra/GeoUsageSample.java rename to Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/GeoUsageSample.java index 2e57cc9ed62cf39355bb5c9fae572d5f834095a7..e5cf6c907d22a8254f8d92878652c4fb6f896190 100644 --- a/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/extra/GeoUsageSample.java +++ b/Klausuren/Sd1/2018winter/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/GeoUsageSample.java @@ -1,4 +1,4 @@ -package de.hdm_stuttgart.mi.sd1.aufgabe2.extra; +package de.hdm_stuttgart.mi.sd1.aufgabe2; import de.hdm_stuttgart.mi.sd1.aufgabe2.Geo; @@ -7,6 +7,9 @@ import java.util.Arrays; /** * Diese Klasse dient lediglich als Beispiel zur Verwendung von {@link Geo}. + * + * <p>Sobald Sie Ihre Implementierung fertiggestellt haben, können Sie die main() Methode einkommentieren und + * ausführen.</p> */ public class GeoUsageSample { diff --git a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java index 9311840ddd21fd5c375a6e59946cc6544959eb77..6bf261cfbdc3d8abeceac484c6d4f178bc8da3ae 100644 --- a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java +++ b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java @@ -1,9 +1,9 @@ package de.hdm_stuttgart.mi.sd1.test; import de.hdm_stuttgart.mi.exam.unitmarking.RunTests; -import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_ArrayHelper; -import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_Helper; -import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_Person; +import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_3_ArrayHelper; +import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_1_Helper; +import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_2_Person; import de.hdm_stuttgart.mi.sd1.test.aufgabe2.Test_Geo; public class ShowReachedPoints { @@ -15,7 +15,7 @@ public class ShowReachedPoints { */ public static void main(String[] args) { RunTests.exec( - "Aufgabe 1", Test_Helper.class, Test_Person.class, Test_ArrayHelper.class + "Aufgabe 1", Test_1_Helper.class, Test_2_Person.class, Test_3_ArrayHelper.class ); RunTests.exec("Aufgabe 2", Test_Geo.class); } diff --git a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_1_Helper.java b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_1_Helper.java new file mode 100644 index 0000000000000000000000000000000000000000..a071cc674591333272a5117b1a0ce39430d112ae --- /dev/null +++ b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_1_Helper.java @@ -0,0 +1,104 @@ +package de.hdm_stuttgart.mi.sd1.test.aufgabe1; + +import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults; +import de.hdm_stuttgart.mi.exam.unitmarking.Marking; +import de.hdm_stuttgart.mi.sd1.aufgabe1._1_Helper; +import org.junit.Assert; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +@SuppressWarnings({"UnusedDeclaration"}) +public class Test_1_Helper extends ExaminationTestDefaults { + + /** + * Abschnitt 1: 3 Strings null? + */ + @Test @Marking(points = 5) public void test_100_stringsAllNull() { + Assert.assertTrue(_1_Helper.keinStringIstNull("", "", "")); + Assert.assertTrue(_1_Helper.keinStringIstNull("A", "BB", "CC")); + + Assert.assertFalse(_1_Helper.keinStringIstNull(null, "XY", "Z")); + Assert.assertFalse(_1_Helper.keinStringIstNull("XYZ", null, "Z")); + Assert.assertFalse(_1_Helper.keinStringIstNull(null, null, "Z")); + Assert.assertFalse(_1_Helper.keinStringIstNull("XYZ", "XY", null)); + Assert.assertFalse(_1_Helper.keinStringIstNull(null, "XY", null)); + Assert.assertFalse(_1_Helper.keinStringIstNull("XYZ", null, null)); + Assert.assertFalse(_1_Helper.keinStringIstNull(null, null, null)); + } + + /** + * Abschnitt 2: 3 Strings mit Mindestlänge 1? + */ + @Test @Marking(points = 4) public void test_200_stringsMindestLaenge() { + Assert.assertFalse(_1_Helper.alleMindestlaengeEins("", "", "")); + Assert.assertFalse(_1_Helper.alleMindestlaengeEins(null, "As", "Ass")); + Assert.assertFalse(_1_Helper.alleMindestlaengeEins("Nicht Null", null, "Null")); + Assert.assertFalse(_1_Helper.alleMindestlaengeEins("a", "b", null)); + Assert.assertFalse(_1_Helper.alleMindestlaengeEins("", "Ces", "Def")); + Assert.assertFalse(_1_Helper.alleMindestlaengeEins("Ces", "", "Def")); + Assert.assertFalse(_1_Helper.alleMindestlaengeEins("Def", "Ces", "")); + + Assert.assertTrue(_1_Helper.alleMindestlaengeEins("A", "B", "C")); + Assert.assertTrue(_1_Helper.alleMindestlaengeEins("A", "Brett", "Caesar")); + } + + + /** + * Abschnitt 3: Irgendwie teilbar? + */ + @Test @Marking(points = 4) + public void test_300_teilbar() { + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(18, 3)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(3, 18)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(18, -3)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-3, 18)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-18, 3)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(3, -18)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-64, -16)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-16, -64)); + } + /** + * Sonderfall einfache 0 ist immer teilbar. + */ + @Test @Marking(points = 4) public void test_320_nullIstTeilbar() { + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(1, 0)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(0, 1)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(0, 987)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-987, 0)); + } + /** + * Sonderfall doppelte 0 ist nicht teilbar. + */ + @Test public void test_340_nichtTeilbar() { + Assert.assertFalse(_1_Helper.istIrgendwieTeilbar(0, 0)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(0, 1)); + } + + + /** + * Abschnitt 4: Zeige Leerzeichen + */ + + @Test @Marking(points = 2) public void test_400_empty() { + Assert.assertEquals("", _1_Helper.markiereLeerzeichen("")); + } + @Test @Marking(points = 2) public void test_420_single() { + Assert.assertEquals("a", _1_Helper.markiereLeerzeichen("a")); + } + @Test @Marking(points = 2) public void test_430_einmalLeer() { + Assert.assertEquals("_a", _1_Helper.markiereLeerzeichen(" a")); + Assert.assertEquals("a_", _1_Helper.markiereLeerzeichen("a ")); + } + @Test @Marking(points = 2) public void test_440_einmalLeer() { + Assert.assertEquals("abc_def", _1_Helper.markiereLeerzeichen("abc def")); + Assert.assertEquals("_abcdef", _1_Helper.markiereLeerzeichen(" abcdef")); + Assert.assertEquals("abcdef_", _1_Helper.markiereLeerzeichen("abcdef ")); + } + + @Test @Marking(points = 2) public void test_460_einmalLeer() { + Assert.assertEquals("__abc_def___", _1_Helper.markiereLeerzeichen(" abc def ")); + Assert.assertEquals("_abc___def", _1_Helper.markiereLeerzeichen(" abc def")); + } +} \ No newline at end of file diff --git a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Person.java b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_2_Person.java similarity index 59% rename from Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Person.java rename to Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_2_Person.java index 7165b09492a841b1709dce6ef6d7cc5925a7d1c5..bf3ad8b00328a10430caaa5e3a75f0771b8a4163 100644 --- a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Person.java +++ b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_2_Person.java @@ -1,22 +1,22 @@ package de.hdm_stuttgart.mi.sd1.test.aufgabe1; import de.hdm_stuttgart.mi.exam.unitmarking.Marking; -import de.hdm_stuttgart.mi.sd1.aufgabe1.Person; +import de.hdm_stuttgart.mi.sd1.aufgabe1._2_Person; import org.junit.Assert; import org.junit.Test; -public class Test_Person { +public class Test_2_Person { @Test @Marking(points = 7) public void test_100_anrede() { { - final Person renate = new Person("Renate", "Schulz", Person.WEIBLICH); + final _2_Person renate = new _2_Person("Renate", "Schulz", _2_Person.WEIBLICH); Assert.assertEquals("Sehr geehrte Frau Schulz", renate.getAnrede()); } { - final Person uwe = new Person("Uwe", "Schick", Person.MAENNLICH); + final _2_Person uwe = new _2_Person("Uwe", "Schick", _2_Person.MAENNLICH); Assert.assertEquals("Sehr geehrter Herr Schick", uwe.getAnrede()); } } @@ -25,12 +25,12 @@ public class Test_Person { public void test_120_print() { { - final Person renate = new Person("Renate", "Schulz", Person.WEIBLICH); + final _2_Person renate = new _2_Person("Renate", "Schulz", _2_Person.WEIBLICH); Assert.assertEquals("Renate Schulz (w)", renate.toString()); } { - final Person uwe = new Person("Uwe", "Schick", Person.MAENNLICH); + final _2_Person uwe = new _2_Person("Uwe", "Schick", _2_Person.MAENNLICH); Assert.assertEquals("Uwe Schick (m)", uwe.toString()); } } diff --git a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_3_ArrayHelper.java b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_3_ArrayHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..a2ec5b7ca35e6c5a84ce3cb9c229500fc671b5e4 --- /dev/null +++ b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_3_ArrayHelper.java @@ -0,0 +1,97 @@ +package de.hdm_stuttgart.mi.sd1.test.aufgabe1; + +import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults; +import de.hdm_stuttgart.mi.sd1.aufgabe1._3_ArrayHelper; +import org.junit.Assert; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class Test_3_ArrayHelper extends ExaminationTestDefaults { + + /** + * Abschnitt 1: Summe Stringlängen + */ + @Test + public void test_100_null() { + Assert.assertEquals("Für null anstelle eines Arrays wird die Länge 0 erwartet", + 0, _3_ArrayHelper.getGesamtLaenge(null)); + } + @Test + public void test_110_arrayContentNull() { + Assert.assertEquals(0, _3_ArrayHelper.getGesamtLaenge(new String[]{null})); + Assert.assertEquals(0, _3_ArrayHelper.getGesamtLaenge(new String[]{null, null})); + } + @Test + public void test_112_arrayContentEmpty() { + Assert.assertEquals(0, _3_ArrayHelper.getGesamtLaenge(new String[]{})); + } + + @Test + public void test_110_standard() { + Assert.assertEquals(8, _3_ArrayHelper.getGesamtLaenge(new String[]{"1", "234", "5678"})); + } + + @Test + public void test_120_MixedNull() { + Assert.assertEquals(9, _3_ArrayHelper.getGesamtLaenge(new String[]{null, "1", null, "234", null, "56789"})); + } + + /** + * Abschnitt 2: Summe Höhenanstiege + */ + + @Test public void test_200_ein() { + Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{111})); + } + @Test public void test_220_zwei() { + Assert.assertEquals(1, _3_ArrayHelper.getHoehenAnstieg(new int[]{111, 112})); + Assert.assertEquals(487, _3_ArrayHelper.getHoehenAnstieg(new int[]{-428, 59})); // Totes Meer / Masada + } + @Test public void test_240_standard() { + Assert.assertEquals(380, _3_ArrayHelper.getHoehenAnstieg(new int[]{320, 400, 530, 200, 370})); + } + @Test public void test_260_Null() { + Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{111, 111})); + Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{10, 0})); + Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{500, 400, 400, 300, 200, 0, -30})); + } + + /** + * Abschnitt 3: Wertefolge in Array + */ + + @Test + public void test_300_common() { + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5}, new int[]{1, 5, 6, 2})); + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{6}, new int[]{1, 5, 6, 2})); + Assert.assertFalse(_3_ArrayHelper.contains(new int[]{7}, new int[]{1, 5, 6, 2})); + + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5, 6}, new int[]{1, 5, 6, 2})); + Assert.assertFalse(_3_ArrayHelper.contains(new int[]{6, 5}, new int[]{1, 5, 6, 2})); + } + @Test + public void test_320_limits() { + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{1}, new int[]{1, 5, 6, 2})); + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{1, 5}, new int[]{1, 5, 6, 2})); + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{1, 5, 6}, new int[]{1, 5, 6, 2})); + + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5, 6, 2}, new int[]{1, 5, 6, 2})); + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{6, 2}, new int[]{1, 5, 6, 2})); + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{2}, new int[]{1, 5, 6, 2})); + + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{55}, new int[]{55})); + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5, 6, -1, 2}, new int[]{5, 6, -1, 2})); + + Assert.assertFalse(_3_ArrayHelper.contains(new int[]{6}, new int[]{1})); + } + @Test + public void test_340_emptyOrOversize() { + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{}, new int[]{})); + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{}, new int[]{1, 5, 6, 2})); + + Assert.assertFalse(_3_ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{})); + Assert.assertFalse(_3_ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{5, 6})); + } +} \ No newline at end of file diff --git a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_ArrayHelper.java b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_ArrayHelper.java deleted file mode 100644 index f579daa9a8dbbadb3feb09b6ea7bd7acd349c997..0000000000000000000000000000000000000000 --- a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_ArrayHelper.java +++ /dev/null @@ -1,97 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.test.aufgabe1; - -import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults; -import de.hdm_stuttgart.mi.sd1.aufgabe1.ArrayHelper; -import org.junit.Assert; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.runners.MethodSorters; - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class Test_ArrayHelper extends ExaminationTestDefaults { - - /** - * Abschnitt 1: Summe Stringlängen - */ - @Test - public void test_100_null() { - Assert.assertEquals("Für null anstelle eines Arrays wird die Länge 0 erwartet", - 0, ArrayHelper.getGesamtLaenge(null)); - } - @Test - public void test_110_arrayContentNull() { - Assert.assertEquals(0, ArrayHelper.getGesamtLaenge(new String[]{null})); - Assert.assertEquals(0, ArrayHelper.getGesamtLaenge(new String[]{null, null})); - } - @Test - public void test_112_arrayContentEmpty() { - Assert.assertEquals(0, ArrayHelper.getGesamtLaenge(new String[]{})); - } - - @Test - public void test_110_standard() { - Assert.assertEquals(8, ArrayHelper.getGesamtLaenge(new String[]{"1", "234", "5678"})); - } - - @Test - public void test_120_MixedNull() { - Assert.assertEquals(9, ArrayHelper.getGesamtLaenge(new String[]{null, "1", null, "234", null, "56789"})); - } - - /** - * Abschnitt 2: Summe Höhenanstiege - */ - - @Test public void test_200_ein() { - Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{111})); - } - @Test public void test_220_zwei() { - Assert.assertEquals(1, ArrayHelper.getHoehenAnstieg(new int[]{111, 112})); - Assert.assertEquals(487, ArrayHelper.getHoehenAnstieg(new int[]{-428, 59})); // Totes Meer / Masada - } - @Test public void test_240_standard() { - Assert.assertEquals(380, ArrayHelper.getHoehenAnstieg(new int[]{320, 400, 530, 200, 370})); - } - @Test public void test_260_Null() { - Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{111, 111})); - Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{10, 0})); - Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{500, 400, 400, 300, 200, 0, -30})); - } - - /** - * Abschnitt 3: Wertefolge in Array - */ - - @Test - public void test_300_common() { - Assert.assertTrue(ArrayHelper.contains(new int[]{5}, new int[]{1, 5, 6, 2})); - Assert.assertTrue(ArrayHelper.contains(new int[]{6}, new int[]{1, 5, 6, 2})); - Assert.assertFalse(ArrayHelper.contains(new int[]{7}, new int[]{1, 5, 6, 2})); - - Assert.assertTrue(ArrayHelper.contains(new int[]{5, 6}, new int[]{1, 5, 6, 2})); - Assert.assertFalse(ArrayHelper.contains(new int[]{6, 5}, new int[]{1, 5, 6, 2})); - } - @Test - public void test_320_limits() { - Assert.assertTrue(ArrayHelper.contains(new int[]{1}, new int[]{1, 5, 6, 2})); - Assert.assertTrue(ArrayHelper.contains(new int[]{1, 5}, new int[]{1, 5, 6, 2})); - Assert.assertTrue(ArrayHelper.contains(new int[]{1, 5, 6}, new int[]{1, 5, 6, 2})); - - Assert.assertTrue(ArrayHelper.contains(new int[]{5, 6, 2}, new int[]{1, 5, 6, 2})); - Assert.assertTrue(ArrayHelper.contains(new int[]{6, 2}, new int[]{1, 5, 6, 2})); - Assert.assertTrue(ArrayHelper.contains(new int[]{2}, new int[]{1, 5, 6, 2})); - - Assert.assertTrue(ArrayHelper.contains(new int[]{55}, new int[]{55})); - Assert.assertTrue(ArrayHelper.contains(new int[]{5, 6, -1, 2}, new int[]{5, 6, -1, 2})); - - Assert.assertFalse(ArrayHelper.contains(new int[]{6}, new int[]{1})); - } - @Test - public void test_340_emptyOrOversize() { - Assert.assertTrue(ArrayHelper.contains(new int[]{}, new int[]{})); - Assert.assertTrue(ArrayHelper.contains(new int[]{}, new int[]{1, 5, 6, 2})); - - Assert.assertFalse(ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{})); - Assert.assertFalse(ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{5, 6})); - } -} \ No newline at end of file diff --git a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java b/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java deleted file mode 100644 index 6f5090cb32e037bb32c16524835fe51b58fa810c..0000000000000000000000000000000000000000 --- a/Klausuren/Sd1/2018winter/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java +++ /dev/null @@ -1,104 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.test.aufgabe1; - -import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults; -import de.hdm_stuttgart.mi.exam.unitmarking.Marking; -import de.hdm_stuttgart.mi.sd1.aufgabe1.Helper; -import org.junit.Assert; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.runners.MethodSorters; - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -@SuppressWarnings({"UnusedDeclaration"}) -public class Test_Helper extends ExaminationTestDefaults { - - /** - * Abschnitt 1: 3 Strings null? - */ - @Test @Marking(points = 5) public void test_100_stringsAllNull() { - Assert.assertTrue(Helper.keinStringIstNull("", "", "")); - Assert.assertTrue(Helper.keinStringIstNull("A", "BB", "CC")); - - Assert.assertFalse(Helper.keinStringIstNull(null, "XY", "Z")); - Assert.assertFalse(Helper.keinStringIstNull("XYZ", null, "Z")); - Assert.assertFalse(Helper.keinStringIstNull(null, null, "Z")); - Assert.assertFalse(Helper.keinStringIstNull("XYZ", "XY", null)); - Assert.assertFalse(Helper.keinStringIstNull(null, "XY", null)); - Assert.assertFalse(Helper.keinStringIstNull("XYZ", null, null)); - Assert.assertFalse(Helper.keinStringIstNull(null, null, null)); - } - - /** - * Abschnitt 2: 3 Strings mit Mindestlänge 1? - */ - @Test @Marking(points = 4) public void test_200_stringsMindestLaenge() { - Assert.assertFalse(Helper.alleMindestlaengeEins("", "", "")); - Assert.assertFalse(Helper.alleMindestlaengeEins(null, "As", "Ass")); - Assert.assertFalse(Helper.alleMindestlaengeEins("Nicht Null", null, "Null")); - Assert.assertFalse(Helper.alleMindestlaengeEins("a", "b", null)); - Assert.assertFalse(Helper.alleMindestlaengeEins("", "Ces", "Def")); - Assert.assertFalse(Helper.alleMindestlaengeEins("Ces", "", "Def")); - Assert.assertFalse(Helper.alleMindestlaengeEins("Def", "Ces", "")); - - Assert.assertTrue(Helper.alleMindestlaengeEins("A", "B", "C")); - Assert.assertTrue(Helper.alleMindestlaengeEins("A", "Brett", "Caesar")); - } - - - /** - * Abschnitt 3: Irgendwie teilbar? - */ - @Test @Marking(points = 4) - public void test_300_teilbar() { - Assert.assertTrue(Helper.istIrgendwieTeilbar(18, 3)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(3, 18)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(18, -3)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(-3, 18)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(-18, 3)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(3, -18)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(-64, -16)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(-16, -64)); - } - /** - * Sonderfall einfache 0 ist immer teilbar. - */ - @Test @Marking(points = 4) public void test_320_nullIstTeilbar() { - Assert.assertTrue(Helper.istIrgendwieTeilbar(1, 0)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(0, 1)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(0, 987)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(-987, 0)); - } - /** - * Sonderfall doppelte 0 ist nicht teilbar. - */ - @Test public void test_340_nichtTeilbar() { - Assert.assertFalse(Helper.istIrgendwieTeilbar(0, 0)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(0, 1)); - } - - - /** - * Abschnitt 4: Zeige Leerzeichen - */ - - @Test @Marking(points = 2) public void test_400_empty() { - Assert.assertEquals("", Helper.markiereLeerzeichen("")); - } - @Test @Marking(points = 2) public void test_420_single() { - Assert.assertEquals("a", Helper.markiereLeerzeichen("a")); - } - @Test @Marking(points = 2) public void test_430_einmalLeer() { - Assert.assertEquals("_a", Helper.markiereLeerzeichen(" a")); - Assert.assertEquals("a_", Helper.markiereLeerzeichen("a ")); - } - @Test @Marking(points = 2) public void test_440_einmalLeer() { - Assert.assertEquals("abc_def", Helper.markiereLeerzeichen("abc def")); - Assert.assertEquals("_abcdef", Helper.markiereLeerzeichen(" abcdef")); - Assert.assertEquals("abcdef_", Helper.markiereLeerzeichen("abcdef ")); - } - - @Test @Marking(points = 2) public void test_460_einmalLeer() { - Assert.assertEquals("__abc_def___", Helper.markiereLeerzeichen(" abc def ")); - Assert.assertEquals("_abc___def", Helper.markiereLeerzeichen(" abc def")); - } -} \ No newline at end of file diff --git a/Klausuren/Sd1/2018winter/Solve/pom.xml b/Klausuren/Sd1/2018winter/Solve/pom.xml index 35581d84aeea269887bddd8037bedef0a9a9f6ef..9d337c4676dbd809864f73156c7b2a962c0946af 100644 --- a/Klausuren/Sd1/2018winter/Solve/pom.xml +++ b/Klausuren/Sd1/2018winter/Solve/pom.xml @@ -68,6 +68,11 @@ <artifactId>maven-javadoc-plugin</artifactId> <version>3.1.0</version> <configuration> + <additionalOptions> + <additionalOption>-html5 --allow-script-in-comments -header + <![CDATA['<script type="text/javascript" src="https://freedocs.mi.hdm-stuttgart.de/mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>']]></additionalOption> + </additionalOptions> + <javaApiLinks> <property> <name>api_11</name> diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_1_Helper.java similarity index 99% rename from Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java rename to Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_1_Helper.java index e393ed9811e3340ce21a6ff9233bc49d9966e1d6..1da1d050b6560fd27ddc2665f68109c5ab4c6186 100644 --- a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java +++ b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_1_Helper.java @@ -3,7 +3,7 @@ package de.hdm_stuttgart.mi.sd1.aufgabe1; /** * Hilfsmethoden. */ -public class Helper { +public class _1_Helper { /** * Sind alle drei Strings von <code>null</code> verschieden? @@ -98,4 +98,4 @@ public class Helper { public static String markiereLeerzeichen(final String s) { return s.replace(' ', '_'); } -} \ No newline at end of file +} diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Person.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_2_Person.java similarity index 94% rename from Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Person.java rename to Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_2_Person.java index 690a529adf16984effa4e4b532e32a177b989f77..d2e4cdf622efa1a6ec8f05fbd361568300edbed8 100644 --- a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Person.java +++ b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_2_Person.java @@ -11,7 +11,7 @@ package de.hdm_stuttgart.mi.sd1.aufgabe1; * * System.out.println(ute); <b style="color:red;">// Ausgabe: "Ute Kurz (w)"</b></pre> */ -public class Person { +public class _2_Person { /** * Geschlechtsangabe »weiblich« @@ -39,7 +39,7 @@ public class Person { * @param nachname Nachname der Person * @param geschlecht Geschlechtsangabe der Person. */ - public Person(final String vorname, final String nachname, final char geschlecht) { + public _2_Person(final String vorname, final String nachname, final char geschlecht) { this.vorname = vorname; this.nachname = nachname; this.geschlecht = geschlecht; @@ -63,4 +63,4 @@ public class Person { public String toString() { return vorname + " " + nachname + " (" + geschlecht + ")"; } -} \ No newline at end of file +} diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/ArrayHelper.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_3_ArrayHelper.java similarity index 99% rename from Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/ArrayHelper.java rename to Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_3_ArrayHelper.java index a5d3fb33437c13204a692d08532d32912ebe08fc..6629b974c7155bda6c1933ac93008952df8580b4 100644 --- a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/ArrayHelper.java +++ b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/_3_ArrayHelper.java @@ -5,7 +5,7 @@ import java.util.Arrays; /** * Hilfsmethoden für Arrays. */ -public class ArrayHelper { +public class _3_ArrayHelper { /** * <p>Gesamtlänge aller in einem Array enthaltenen Strings.</p> @@ -84,4 +84,4 @@ public class ArrayHelper { } return false; } -} \ No newline at end of file +} diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/package-info.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/package-info.java new file mode 100644 index 0000000000000000000000000000000000000000..e0285e2abc668f8285317f1c31b5b137e7d4ef70 --- /dev/null +++ b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/package-info.java @@ -0,0 +1,15 @@ +/** + * Dieser Aufgabenteil enthält im Wesentlichen statische Methoden, deren Implementierung noch korrigiert werden muss. + * + * <p>Hinweise:</p> + * + * <ul> + * <li><code>mvn javadoc:javadoc</code> entweder in der Shell oder über die IDE ausführen.</li> + * + * <li>Korrespondierende Unit Tests sowie die Klasse <code>de.hdm_stuttgart.mi.sd1.test.ShowReachedPoints</code> + * aus dem Test Zweig des Projekts ausführen.</li> + * + * </ul> + * + */ +package de.hdm_stuttgart.mi.sd1.aufgabe1; \ No newline at end of file diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java index 9fafe92496a8a0de981bddb98e2d1739e641bd83..2ebc85e076751a17a8f48ff687aa65eb7761abe2 100644 --- a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java +++ b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/Geo.java @@ -1,9 +1,10 @@ package de.hdm_stuttgart.mi.sd1.aufgabe2; import java.text.DecimalFormat; - /** - * <p>Längen- oder Breitenangaben in Grad, Winkelminuten und Winkelsekunden. Dabei gilt:</p> + * Umrechnung zweier verschiedener Darstellungen von Breitenangaben. + * + * <p>Längen- oder Breitenangaben können in Grad, Winkelminuten und Winkelsekunden angegeben werden. Dabei gilt:</p> * * <ul> * <li>360° Grad entsprechen dem Vollkreis.</li> @@ -12,14 +13,122 @@ import java.text.DecimalFormat; * </ul> * * <p>Beispiel: Die geographische Breitenangabe von Stuttgart lautet <b style="color: red;">48°</b> - * <b style="color: green;">46′</b> <b style="color: blue;">56″</b> (Nord, wird in dieser Aufgabe ignoriert). Diese - * Darstellung als Grad, Bogenminuten und Bogensekunden kann in die dezimale Grad-Darstellung umgerechnet werden:</p> + * <b style="color: green;">46′</b> <b style="color: blue;">56″</b> (Nord, wird in dieser Aufgabe ignoriert).</p> + * + * <p>Alternativ gibt es auch eine dezimale Graddarstellung: Diese geht ebenfalls von einem Vollkreis zu 360° aus. + * Allerdings werden die Minuten- und Sekundenanteile als Dezimalbruch angegeben. Die geographische Breite + * <b style="color: red;">48°</b> <b style="color: green;">46′</b> <b style="color: blue;">56″</b> von Stuttgart + * beispielsweise ergibt sich in dieser Darstellung zu:</p> + * + * \[\color{red}{48} + {\color{green}{46}\over 60} + {\color{blue}{56} \over {60 \times 60}} = 48.782222\dots \] + * + * <p>Instanzen von {@link Geo} können aus beiden Darstellungen erzeugt werden:</p> + * + * <pre>final Geo stuttartBreite1 = new Geo(48, 46, 56), + * stuttartBreite2 = new Geo(48.782222); // Identische Breite bis auf Rundungsfehler</pre> + * + * <p>Eine Instanz von {@link Geo} stellt beide Darstellungen bereit:</p> + * + * <pre>final Geo breite = ... ; + * + * final int grad = breite.grad, + * minuten = breite.minuten, + * sekunden = breite.sekunden; + * + * final double breiteDezimal = breite.getDezimal(); + * + * </pre> + * + * <p>Instanzen von {@link Geo} werden im Standard wie folgt ausgegeben:</p> + * + * <table class="goikTableDefaults"> + * <tr> + * <td> + * <pre>final Geo stuttartBreite = new Geo(48.782222); + *System.out.println(stuttartBreite);</pre> + * </td> + * <td>48° 46´ 56´´</td> + * </tr> + * </table> + * + * <p>Das Format der Ausgabe kann zur Laufzeit global für alle Instanzen gewechselt werden. Dabei werden für die + * Dezimaldarstellung genau sechs Nachkommastellen ausgegeben:</p> + * + * <table class="goikTableDefaults"> + * <tr> + * <td> + * <pre> ... + * Geo.nutzeDezimalStandard(true); + * System.out.println(stuttartBreite);</pre> + * </td> + * <td>48.782222</td> + * </tr> + * </table> + * + * <p>Instanzen von Geo sollen auf Wertgleichheit geprüft werden können:</p> + * + * <table class="goikTableDefaults"> + * <tr> + * <td> + * <pre> final Geo + * g1 = new Geo(33, 53, 19), + * g2 = new Geo(45, 22, 13), + * g1_klon = new Geo(33, 53, 19); + * + * System.out.println(g1.equals(g2)); + * System.out.println(g1.equals(g1_klon));</pre> + * </td> + * <td> + * <pre> false + * true</pre> + * </td> + * </tr> + * </table> + * + * <p>Winkelangaben sollen aufsteigend sortierbar sein:</p> + * + * <table class="goikTableDefaults"> + * <tr> + * <td> + * <pre> final Geo + * stuttartBreite = new Geo(48, 46, 56), + * beirutBreite = new Geo(33, 53, 19), + * atlantaBreite = new Geo(33, 44, 56); + * + * final Geo[] breitenAngaben = + * {stuttartBreite, beirutBreite, atlantaBreite}; + * + * Arrays.sort(breitenAngaben); + * + * System.out.println("Breitengrade Stuttgart, Beirut und Atlanta" + * + "\naufsteigend sortiert:"); + * + * for (final Geo g: breitenAngaben) { + * System.out.println(g); + * }</pre> + * </td> + * <td> + * <pre> Breitengrade Stuttgart, Beirut und Atlanta + * aufsteigend sortiert: + * 41° 53´ 30´´ + * 48° 46´ 56´´ + * 51° 28´ 38´´</pre> + * </td> + * </tr> + * </table> * - * <p><b style="color: red;">48</b> + <b style="color: green;">46</b>/60 + <b style="color: blue;">56</b> / 3600 - * == 48.78222222222...</p> + * <p>Instanzen von {@link Geo} sind unveränderbar (immutable). Der folgende Code führt beispielsweise zu einem Compile + * time Fehler:</p> * - * <p>Die Klasse {@link Geo (double)} kann zur Umwandlung von Grad/Minuten/Sekundenangaben in - * Dezimalkoordinaten und umgekehrt verwendet werden:</p> + * <table class="goikTableDefaults"> + * <tr> + * <td> + * <pre> final Geo g = new Geo(22); + * g.sekunden = 44;</pre> + * </td> + * <td>Cannot assign a value to final variable 'sekunden'</td> + * </tr> + * </table> * */ public class Geo implements Comparable<Geo> { @@ -131,4 +240,4 @@ public class Geo implements Comparable<Geo> { public int hashCode() { return 3600 * grad + 60 * minuten + sekunden; } -} \ No newline at end of file +} diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/extra/GeoUsageSample.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/GeoUsageSample.java similarity index 89% rename from Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/extra/GeoUsageSample.java rename to Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/GeoUsageSample.java index a85d4a25c4c6f379fe740c65d72f7bd1a1a826f0..381bc8a9de7344b6dcfd35cc462b7527bf47656e 100644 --- a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/extra/GeoUsageSample.java +++ b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/GeoUsageSample.java @@ -1,4 +1,4 @@ -package de.hdm_stuttgart.mi.sd1.aufgabe2.extra; +package de.hdm_stuttgart.mi.sd1.aufgabe2; import de.hdm_stuttgart.mi.sd1.aufgabe2.Geo; @@ -7,13 +7,14 @@ import java.util.Arrays; /** * Diese Klasse dient lediglich als Beispiel zur Verwendung von {@link Geo}. + * + * <p>Sobald Sie Ihre Implementierung fertiggestellt haben, können Sie die main() Methode einkommentieren und + * ausführen.</p> */ public class GeoUsageSample { public static void main(String[] args) { - /* - final Geo stuttartBreite = new Geo(48, 46, 56); final int breiteGrad = stuttartBreite.grad, @@ -54,6 +55,5 @@ public class GeoUsageSample { // Nutze Dezimaldarstellung auf 6 Nachkommastellen Geo.nutzeDezimalStandard(true); System.out.println("Dezimaldarstellung Breite Stuttgart:" + stuttartBreite); - */ } -} \ No newline at end of file +} diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/package-info.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/package-info.java new file mode 100644 index 0000000000000000000000000000000000000000..a7e5ca8d51c63e90abbd7b239d662d86db9d6e17 --- /dev/null +++ b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe2/package-info.java @@ -0,0 +1,15 @@ +/** + * Weitere gemäß Dokumentation zu implementierende Skelettklassen. + * + * <p>Hinweise:</p> + * + * <ul> + * <li><code>mvn javadoc:javadoc</code> entweder in der Shell oder über die IDE ausführen.</li> + * + * <li>Korrespondierende Unit Tests sowie die Klasse <code>de.hdm_stuttgart.mi.sd1.test.ShowReachedPoints</code> + * aus dem Test Zweig des Projekts ausführen.</li> + * + * </ul> + * + */ +package de.hdm_stuttgart.mi.sd1.aufgabe2; \ No newline at end of file diff --git a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/extra/ZeitDauer.java b/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/extra/ZeitDauer.java deleted file mode 100644 index d403a178ed2b3a55f9f6c47a3432f92e76ccce8b..0000000000000000000000000000000000000000 --- a/Klausuren/Sd1/2018winter/Solve/src/main/java/de/hdm_stuttgart/mi/sd1/extra/ZeitDauer.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.extra; - -public class ZeitDauer { - final int stunden, minuten, sekunden; - - /** - * Zeitangabe kleiner als 1 Tag - * - * @param stunden Werte von 0 bis 23 - * @param minuten Werte von 0 bis 59 - * @param sekunden Werte von 0 bis 59 - */ - public ZeitDauer(final int stunden, final int minuten, final int sekunden) { - this.stunden = stunden; - this.minuten = minuten; - this.sekunden = sekunden; - } - - @Override - public boolean equals(Object o) { - if (o instanceof ZeitDauer) { - return sekunden == ((ZeitDauer) o).sekunden && - minuten == ((ZeitDauer) o).minuten && - stunden == ((ZeitDauer) o).stunden; - } else { - return false; - } - } - - @Override public int hashCode() { - return sekunden + 60 * minuten + 3600 * stunden; - } - public int hashCode2() { - return sekunden + minuten + stunden; - } -} diff --git a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java index 9311840ddd21fd5c375a6e59946cc6544959eb77..1cfa2ca4e3b57583924a645e2d97eff6c1fae582 100644 --- a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java +++ b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java @@ -1,9 +1,9 @@ package de.hdm_stuttgart.mi.sd1.test; import de.hdm_stuttgart.mi.exam.unitmarking.RunTests; -import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_ArrayHelper; -import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_Helper; -import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_Person; +import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_3_ArrayHelper; +import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_1_Helper; +import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_2_Person; import de.hdm_stuttgart.mi.sd1.test.aufgabe2.Test_Geo; public class ShowReachedPoints { @@ -15,8 +15,12 @@ public class ShowReachedPoints { */ public static void main(String[] args) { RunTests.exec( - "Aufgabe 1", Test_Helper.class, Test_Person.class, Test_ArrayHelper.class + "Aufgabe 1", + Test_1_Helper.class, + Test_2_Person.class, + Test_3_ArrayHelper.class ); - RunTests.exec("Aufgabe 2", Test_Geo.class); + RunTests.exec("Aufgabe 2", + Test_Geo.class); } -} \ No newline at end of file +} diff --git a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_1_Helper.java b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_1_Helper.java new file mode 100644 index 0000000000000000000000000000000000000000..a071cc674591333272a5117b1a0ce39430d112ae --- /dev/null +++ b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_1_Helper.java @@ -0,0 +1,104 @@ +package de.hdm_stuttgart.mi.sd1.test.aufgabe1; + +import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults; +import de.hdm_stuttgart.mi.exam.unitmarking.Marking; +import de.hdm_stuttgart.mi.sd1.aufgabe1._1_Helper; +import org.junit.Assert; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +@SuppressWarnings({"UnusedDeclaration"}) +public class Test_1_Helper extends ExaminationTestDefaults { + + /** + * Abschnitt 1: 3 Strings null? + */ + @Test @Marking(points = 5) public void test_100_stringsAllNull() { + Assert.assertTrue(_1_Helper.keinStringIstNull("", "", "")); + Assert.assertTrue(_1_Helper.keinStringIstNull("A", "BB", "CC")); + + Assert.assertFalse(_1_Helper.keinStringIstNull(null, "XY", "Z")); + Assert.assertFalse(_1_Helper.keinStringIstNull("XYZ", null, "Z")); + Assert.assertFalse(_1_Helper.keinStringIstNull(null, null, "Z")); + Assert.assertFalse(_1_Helper.keinStringIstNull("XYZ", "XY", null)); + Assert.assertFalse(_1_Helper.keinStringIstNull(null, "XY", null)); + Assert.assertFalse(_1_Helper.keinStringIstNull("XYZ", null, null)); + Assert.assertFalse(_1_Helper.keinStringIstNull(null, null, null)); + } + + /** + * Abschnitt 2: 3 Strings mit Mindestlänge 1? + */ + @Test @Marking(points = 4) public void test_200_stringsMindestLaenge() { + Assert.assertFalse(_1_Helper.alleMindestlaengeEins("", "", "")); + Assert.assertFalse(_1_Helper.alleMindestlaengeEins(null, "As", "Ass")); + Assert.assertFalse(_1_Helper.alleMindestlaengeEins("Nicht Null", null, "Null")); + Assert.assertFalse(_1_Helper.alleMindestlaengeEins("a", "b", null)); + Assert.assertFalse(_1_Helper.alleMindestlaengeEins("", "Ces", "Def")); + Assert.assertFalse(_1_Helper.alleMindestlaengeEins("Ces", "", "Def")); + Assert.assertFalse(_1_Helper.alleMindestlaengeEins("Def", "Ces", "")); + + Assert.assertTrue(_1_Helper.alleMindestlaengeEins("A", "B", "C")); + Assert.assertTrue(_1_Helper.alleMindestlaengeEins("A", "Brett", "Caesar")); + } + + + /** + * Abschnitt 3: Irgendwie teilbar? + */ + @Test @Marking(points = 4) + public void test_300_teilbar() { + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(18, 3)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(3, 18)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(18, -3)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-3, 18)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-18, 3)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(3, -18)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-64, -16)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-16, -64)); + } + /** + * Sonderfall einfache 0 ist immer teilbar. + */ + @Test @Marking(points = 4) public void test_320_nullIstTeilbar() { + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(1, 0)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(0, 1)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(0, 987)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(-987, 0)); + } + /** + * Sonderfall doppelte 0 ist nicht teilbar. + */ + @Test public void test_340_nichtTeilbar() { + Assert.assertFalse(_1_Helper.istIrgendwieTeilbar(0, 0)); + Assert.assertTrue(_1_Helper.istIrgendwieTeilbar(0, 1)); + } + + + /** + * Abschnitt 4: Zeige Leerzeichen + */ + + @Test @Marking(points = 2) public void test_400_empty() { + Assert.assertEquals("", _1_Helper.markiereLeerzeichen("")); + } + @Test @Marking(points = 2) public void test_420_single() { + Assert.assertEquals("a", _1_Helper.markiereLeerzeichen("a")); + } + @Test @Marking(points = 2) public void test_430_einmalLeer() { + Assert.assertEquals("_a", _1_Helper.markiereLeerzeichen(" a")); + Assert.assertEquals("a_", _1_Helper.markiereLeerzeichen("a ")); + } + @Test @Marking(points = 2) public void test_440_einmalLeer() { + Assert.assertEquals("abc_def", _1_Helper.markiereLeerzeichen("abc def")); + Assert.assertEquals("_abcdef", _1_Helper.markiereLeerzeichen(" abcdef")); + Assert.assertEquals("abcdef_", _1_Helper.markiereLeerzeichen("abcdef ")); + } + + @Test @Marking(points = 2) public void test_460_einmalLeer() { + Assert.assertEquals("__abc_def___", _1_Helper.markiereLeerzeichen(" abc def ")); + Assert.assertEquals("_abc___def", _1_Helper.markiereLeerzeichen(" abc def")); + } +} \ No newline at end of file diff --git a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Person.java b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_2_Person.java similarity index 59% rename from Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Person.java rename to Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_2_Person.java index 7165b09492a841b1709dce6ef6d7cc5925a7d1c5..bf3ad8b00328a10430caaa5e3a75f0771b8a4163 100644 --- a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Person.java +++ b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_2_Person.java @@ -1,22 +1,22 @@ package de.hdm_stuttgart.mi.sd1.test.aufgabe1; import de.hdm_stuttgart.mi.exam.unitmarking.Marking; -import de.hdm_stuttgart.mi.sd1.aufgabe1.Person; +import de.hdm_stuttgart.mi.sd1.aufgabe1._2_Person; import org.junit.Assert; import org.junit.Test; -public class Test_Person { +public class Test_2_Person { @Test @Marking(points = 7) public void test_100_anrede() { { - final Person renate = new Person("Renate", "Schulz", Person.WEIBLICH); + final _2_Person renate = new _2_Person("Renate", "Schulz", _2_Person.WEIBLICH); Assert.assertEquals("Sehr geehrte Frau Schulz", renate.getAnrede()); } { - final Person uwe = new Person("Uwe", "Schick", Person.MAENNLICH); + final _2_Person uwe = new _2_Person("Uwe", "Schick", _2_Person.MAENNLICH); Assert.assertEquals("Sehr geehrter Herr Schick", uwe.getAnrede()); } } @@ -25,12 +25,12 @@ public class Test_Person { public void test_120_print() { { - final Person renate = new Person("Renate", "Schulz", Person.WEIBLICH); + final _2_Person renate = new _2_Person("Renate", "Schulz", _2_Person.WEIBLICH); Assert.assertEquals("Renate Schulz (w)", renate.toString()); } { - final Person uwe = new Person("Uwe", "Schick", Person.MAENNLICH); + final _2_Person uwe = new _2_Person("Uwe", "Schick", _2_Person.MAENNLICH); Assert.assertEquals("Uwe Schick (m)", uwe.toString()); } } diff --git a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_3_ArrayHelper.java b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_3_ArrayHelper.java new file mode 100644 index 0000000000000000000000000000000000000000..c8a662e95dca8e5ee4fdc882f1486989ccba1e4e --- /dev/null +++ b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_3_ArrayHelper.java @@ -0,0 +1,95 @@ +package de.hdm_stuttgart.mi.sd1.test.aufgabe1; + +import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults; +import de.hdm_stuttgart.mi.sd1.aufgabe1._3_ArrayHelper; +import org.junit.Assert; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class Test_3_ArrayHelper extends ExaminationTestDefaults { + + /** + * Abschnitt 1: Summe Stringlängen + */ + @Test + public void test_100_null() { + Assert.assertEquals("Für null anstelle eines Arrays wird die Länge 0 erwartet", + 0, _3_ArrayHelper.getGesamtLaenge(null)); + } + @Test + public void test_110_arrayContentNull() { + Assert.assertEquals(0, _3_ArrayHelper.getGesamtLaenge(new String[]{null})); + Assert.assertEquals(0, _3_ArrayHelper.getGesamtLaenge(new String[]{null, null})); + } + @Test + public void test_112_arrayContentEmpty() { + Assert.assertEquals(0, _3_ArrayHelper.getGesamtLaenge(new String[]{})); + } + + @Test + public void test_110_standard() { + Assert.assertEquals(8, _3_ArrayHelper.getGesamtLaenge(new String[]{"1", "234", "5678"})); + } + + @Test + public void test_120_MixedNull() { + Assert.assertEquals(9, _3_ArrayHelper.getGesamtLaenge(new String[]{null, "1", null, "234", null, "56789"})); + } + + /** + * Abschnitt 2: Summe Höhenanstiege + */ + + @Test public void test_200_ein() { + Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{111})); + } + @Test public void test_220_zwei() { + Assert.assertEquals(1, _3_ArrayHelper.getHoehenAnstieg(new int[]{111, 112})); + Assert.assertEquals(487, _3_ArrayHelper.getHoehenAnstieg(new int[]{-428, 59})); // Totes Meer / Masada + } + @Test public void test_240_standard() { + Assert.assertEquals(380, _3_ArrayHelper.getHoehenAnstieg(new int[]{320, 400, 530, 200, 370})); + } + @Test public void test_260_Null() { + Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{111, 111})); + Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{10, 0})); + Assert.assertEquals(0, _3_ArrayHelper.getHoehenAnstieg(new int[]{500, 400, 400, 300, 200, 0, -30})); + } + + /** + * Abschnitt 3: Wertefolge in Array + */ + + @Test + public void test_300_common() { + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5}, new int[]{1, 5, 6, 2})); + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{6}, new int[]{1, 5, 6, 2})); + Assert.assertFalse(_3_ArrayHelper.contains(new int[]{7}, new int[]{1, 5, 6, 2})); + + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5, 6}, new int[]{1, 5, 6, 2})); + Assert.assertFalse(_3_ArrayHelper.contains(new int[]{6, 5}, new int[]{1, 5, 6, 2})); + } + @Test + public void test_320_limits() { + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{1}, new int[]{1, 5, 6, 2})); + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{1, 5}, new int[]{1, 5, 6, 2})); + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{1, 5, 6}, new int[]{1, 5, 6, 2})); + + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5, 6, 2}, new int[]{1, 5, 6, 2})); + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{6, 2}, new int[]{1, 5, 6, 2})); + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{2}, new int[]{1, 5, 6, 2})); + + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{55}, new int[]{55})); + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{5, 6, -1, 2}, new int[]{5, 6, -1, 2})); + } + @Test + public void test_340_emptyOrOversize() { + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{}, new int[]{})); + Assert.assertTrue(_3_ArrayHelper.contains(new int[]{}, new int[]{1, 5, 6, 2})); + + Assert.assertFalse(_3_ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{})); + Assert.assertFalse(_3_ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{5, 6})); + } +} \ No newline at end of file diff --git a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_ArrayHelper.java b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_ArrayHelper.java deleted file mode 100644 index c0f5fb50c290f757f51a3923d552d1d5865749cf..0000000000000000000000000000000000000000 --- a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_ArrayHelper.java +++ /dev/null @@ -1,95 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.test.aufgabe1; - -import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults; -import de.hdm_stuttgart.mi.sd1.aufgabe1.ArrayHelper; -import org.junit.Assert; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.runners.MethodSorters; - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class Test_ArrayHelper extends ExaminationTestDefaults { - - /** - * Abschnitt 1: Summe Stringlängen - */ - @Test - public void test_100_null() { - Assert.assertEquals("Für null anstelle eines Arrays wird die Länge 0 erwartet", - 0, ArrayHelper.getGesamtLaenge(null)); - } - @Test - public void test_110_arrayContentNull() { - Assert.assertEquals(0, ArrayHelper.getGesamtLaenge(new String[]{null})); - Assert.assertEquals(0, ArrayHelper.getGesamtLaenge(new String[]{null, null})); - } - @Test - public void test_112_arrayContentEmpty() { - Assert.assertEquals(0, ArrayHelper.getGesamtLaenge(new String[]{})); - } - - @Test - public void test_110_standard() { - Assert.assertEquals(8, ArrayHelper.getGesamtLaenge(new String[]{"1", "234", "5678"})); - } - - @Test - public void test_120_MixedNull() { - Assert.assertEquals(9, ArrayHelper.getGesamtLaenge(new String[]{null, "1", null, "234", null, "56789"})); - } - - /** - * Abschnitt 2: Summe Höhenanstiege - */ - - @Test public void test_200_ein() { - Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{111})); - } - @Test public void test_220_zwei() { - Assert.assertEquals(1, ArrayHelper.getHoehenAnstieg(new int[]{111, 112})); - Assert.assertEquals(487, ArrayHelper.getHoehenAnstieg(new int[]{-428, 59})); // Totes Meer / Masada - } - @Test public void test_240_standard() { - Assert.assertEquals(380, ArrayHelper.getHoehenAnstieg(new int[]{320, 400, 530, 200, 370})); - } - @Test public void test_260_Null() { - Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{111, 111})); - Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{10, 0})); - Assert.assertEquals(0, ArrayHelper.getHoehenAnstieg(new int[]{500, 400, 400, 300, 200, 0, -30})); - } - - /** - * Abschnitt 3: Wertefolge in Array - */ - - @Test - public void test_300_common() { - Assert.assertTrue(ArrayHelper.contains(new int[]{5}, new int[]{1, 5, 6, 2})); - Assert.assertTrue(ArrayHelper.contains(new int[]{6}, new int[]{1, 5, 6, 2})); - Assert.assertFalse(ArrayHelper.contains(new int[]{7}, new int[]{1, 5, 6, 2})); - - Assert.assertTrue(ArrayHelper.contains(new int[]{5, 6}, new int[]{1, 5, 6, 2})); - Assert.assertFalse(ArrayHelper.contains(new int[]{6, 5}, new int[]{1, 5, 6, 2})); - } - @Test - public void test_320_limits() { - Assert.assertTrue(ArrayHelper.contains(new int[]{1}, new int[]{1, 5, 6, 2})); - Assert.assertTrue(ArrayHelper.contains(new int[]{1, 5}, new int[]{1, 5, 6, 2})); - Assert.assertTrue(ArrayHelper.contains(new int[]{1, 5, 6}, new int[]{1, 5, 6, 2})); - - Assert.assertTrue(ArrayHelper.contains(new int[]{5, 6, 2}, new int[]{1, 5, 6, 2})); - Assert.assertTrue(ArrayHelper.contains(new int[]{6, 2}, new int[]{1, 5, 6, 2})); - Assert.assertTrue(ArrayHelper.contains(new int[]{2}, new int[]{1, 5, 6, 2})); - - Assert.assertTrue(ArrayHelper.contains(new int[]{55}, new int[]{55})); - Assert.assertTrue(ArrayHelper.contains(new int[]{5, 6, -1, 2}, new int[]{5, 6, -1, 2})); - } - @Test - public void test_340_emptyOrOversize() { - Assert.assertTrue(ArrayHelper.contains(new int[]{}, new int[]{})); - Assert.assertTrue(ArrayHelper.contains(new int[]{}, new int[]{1, 5, 6, 2})); - - Assert.assertFalse(ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{})); - Assert.assertFalse(ArrayHelper.contains(new int[]{1, 5, 6, 2}, new int[]{5, 6})); - } -} \ No newline at end of file diff --git a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java b/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java deleted file mode 100644 index 6f5090cb32e037bb32c16524835fe51b58fa810c..0000000000000000000000000000000000000000 --- a/Klausuren/Sd1/2018winter/Solve/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java +++ /dev/null @@ -1,104 +0,0 @@ -package de.hdm_stuttgart.mi.sd1.test.aufgabe1; - -import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults; -import de.hdm_stuttgart.mi.exam.unitmarking.Marking; -import de.hdm_stuttgart.mi.sd1.aufgabe1.Helper; -import org.junit.Assert; -import org.junit.FixMethodOrder; -import org.junit.Test; -import org.junit.runners.MethodSorters; - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -@SuppressWarnings({"UnusedDeclaration"}) -public class Test_Helper extends ExaminationTestDefaults { - - /** - * Abschnitt 1: 3 Strings null? - */ - @Test @Marking(points = 5) public void test_100_stringsAllNull() { - Assert.assertTrue(Helper.keinStringIstNull("", "", "")); - Assert.assertTrue(Helper.keinStringIstNull("A", "BB", "CC")); - - Assert.assertFalse(Helper.keinStringIstNull(null, "XY", "Z")); - Assert.assertFalse(Helper.keinStringIstNull("XYZ", null, "Z")); - Assert.assertFalse(Helper.keinStringIstNull(null, null, "Z")); - Assert.assertFalse(Helper.keinStringIstNull("XYZ", "XY", null)); - Assert.assertFalse(Helper.keinStringIstNull(null, "XY", null)); - Assert.assertFalse(Helper.keinStringIstNull("XYZ", null, null)); - Assert.assertFalse(Helper.keinStringIstNull(null, null, null)); - } - - /** - * Abschnitt 2: 3 Strings mit Mindestlänge 1? - */ - @Test @Marking(points = 4) public void test_200_stringsMindestLaenge() { - Assert.assertFalse(Helper.alleMindestlaengeEins("", "", "")); - Assert.assertFalse(Helper.alleMindestlaengeEins(null, "As", "Ass")); - Assert.assertFalse(Helper.alleMindestlaengeEins("Nicht Null", null, "Null")); - Assert.assertFalse(Helper.alleMindestlaengeEins("a", "b", null)); - Assert.assertFalse(Helper.alleMindestlaengeEins("", "Ces", "Def")); - Assert.assertFalse(Helper.alleMindestlaengeEins("Ces", "", "Def")); - Assert.assertFalse(Helper.alleMindestlaengeEins("Def", "Ces", "")); - - Assert.assertTrue(Helper.alleMindestlaengeEins("A", "B", "C")); - Assert.assertTrue(Helper.alleMindestlaengeEins("A", "Brett", "Caesar")); - } - - - /** - * Abschnitt 3: Irgendwie teilbar? - */ - @Test @Marking(points = 4) - public void test_300_teilbar() { - Assert.assertTrue(Helper.istIrgendwieTeilbar(18, 3)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(3, 18)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(18, -3)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(-3, 18)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(-18, 3)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(3, -18)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(-64, -16)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(-16, -64)); - } - /** - * Sonderfall einfache 0 ist immer teilbar. - */ - @Test @Marking(points = 4) public void test_320_nullIstTeilbar() { - Assert.assertTrue(Helper.istIrgendwieTeilbar(1, 0)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(0, 1)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(0, 987)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(-987, 0)); - } - /** - * Sonderfall doppelte 0 ist nicht teilbar. - */ - @Test public void test_340_nichtTeilbar() { - Assert.assertFalse(Helper.istIrgendwieTeilbar(0, 0)); - Assert.assertTrue(Helper.istIrgendwieTeilbar(0, 1)); - } - - - /** - * Abschnitt 4: Zeige Leerzeichen - */ - - @Test @Marking(points = 2) public void test_400_empty() { - Assert.assertEquals("", Helper.markiereLeerzeichen("")); - } - @Test @Marking(points = 2) public void test_420_single() { - Assert.assertEquals("a", Helper.markiereLeerzeichen("a")); - } - @Test @Marking(points = 2) public void test_430_einmalLeer() { - Assert.assertEquals("_a", Helper.markiereLeerzeichen(" a")); - Assert.assertEquals("a_", Helper.markiereLeerzeichen("a ")); - } - @Test @Marking(points = 2) public void test_440_einmalLeer() { - Assert.assertEquals("abc_def", Helper.markiereLeerzeichen("abc def")); - Assert.assertEquals("_abcdef", Helper.markiereLeerzeichen(" abcdef")); - Assert.assertEquals("abcdef_", Helper.markiereLeerzeichen("abcdef ")); - } - - @Test @Marking(points = 2) public void test_460_einmalLeer() { - Assert.assertEquals("__abc_def___", Helper.markiereLeerzeichen(" abc def ")); - Assert.assertEquals("_abc___def", Helper.markiereLeerzeichen(" abc def")); - } -} \ No newline at end of file