commit 57ef7d273949c082f2cc48c18434bca9d48f6522 Author: Oliver Date: Mon Dec 13 10:48:20 2021 +0100 Init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..643f613 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.vscode/settings.json +.gitignore diff --git a/README.md b/README.md new file mode 100644 index 0000000..dd2c5a8 --- /dev/null +++ b/README.md @@ -0,0 +1,81 @@ +# Software Engineering im Studiengang Media Engineering + +## Assignment "TDD Einführung" + +### Ausgangssituation + +#### Test Driven Development (TDD) + +Bei TDD gilt die Regel: Produktivcode darf erst geschrieben werden, wenn +ein Test vorliegt, der scheitert. Und auch dann soll nur gerade so +viel Code geschrieben werden, um den Testfall (und alle anderen Tests) +erfolgreich ausführen zu können. + +#### Struktur des Assignments + +Das Assignment besteht aus zwei Java-Klassen: + +- TriangleChecker enthält den Produktivcode +- TriangleCheckerTest enthält die Tests + +Mit Hilfe von TDD soll insbesondere die Methode + + +checkTriangle(float a, float b, float c) + + +entwickelt werden. Diese Methode hat die Aufgabe, anhand +der übergebenen drei Seitenlängen zu entscheiden, ob es +sich um ein normales, ein gleichschenkliges, ein +gleichseitiges oder gar kein Dreieck handelt. + + +### Aufgabenstellung + +#### Normales Dreieck + +Mit dem Assignment kommt ein erster Testfall, +der überprüft, ob ein normales Dreieck richtig erkannt +wird. Sorgen Sie dafür, dass der Testfall nicht mehr scheitert. +Achten Sie darauf, dass Sie nicht mehr implementieren, als +zur Lösung dieses Testfalls notwendig ist. Weitere +Fälle müssen noch nicht erkannt werden. + +#### Gleichseitiges Dreieck + +Erstellen Sie nun einen Testfall, der überprüft, +ob ein gleichseitiges Dreieck erkannt wird. +Da Sie bisher nur normale Dreiecke identifizieren, +wird dieser Testfall zunächst scheitern. + +Nehmen Sie nun minimale Änderungen am Produktivcode vor, +so dass beide Testfälle fehlerfrei ausgeführt werden. + +#### Kein Dreieck + +Es gibt Zahlenkombinationen, die nicht zu einem +Dreieck passen (z.B. negative Zahlen oder +eine überlange Seite, so dass die anderen beiden +Seiten das Dreieck nicht abschließen können). + +Erstellen Sie jeweils eigene Testfälle für diese +Art von Zahlenkombinationen. Das sind mindestens +6 weitere Testfälle (warum?). + +Korrigieren Sie anschließend den Produktivcode, +so dass alle Tests durchlaufen. + +#### Gleichschenkliges Dreieck + +Schließlich sollen noch gleichschenklige Dreiecke +erkannt werden. Dabei soll die +Methode stets die genaueste Information +zurückliefern, d.h. +- bei einem gleichseitigen Dreieck *EQUILATERAL*, auch wenn + ein gleichseitiges Dreieck natürlich auch gleichschenklig + ist. +- bei einem gleichschenkligem Dreieck *ISOSCELES*, auch wenn + ein gleichschenkliges Dreieck natürlich auch ein + normales Dreieck ist. + +Verwenden Sie auch hier die TDD-Vorgehensweise. diff --git a/TriangleCheckerTDD.iml b/TriangleCheckerTDD.iml new file mode 100644 index 0000000..506243b --- /dev/null +++ b/TriangleCheckerTDD.iml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/jars/hamcrest-core-1.3.jar b/jars/hamcrest-core-1.3.jar new file mode 100644 index 0000000..9d5fe16 Binary files /dev/null and b/jars/hamcrest-core-1.3.jar differ diff --git a/jars/junit-4.12.jar b/jars/junit-4.12.jar new file mode 100644 index 0000000..3a7fc26 Binary files /dev/null and b/jars/junit-4.12.jar differ diff --git a/src/TriangleChecker.java b/src/TriangleChecker.java new file mode 100644 index 0000000..14f4841 --- /dev/null +++ b/src/TriangleChecker.java @@ -0,0 +1,54 @@ +import java.util.Scanner; + +public class TriangleChecker { + + public enum TriangleType { + NONE, + NORMAL, + ISOSCELES, // Gleichschenklig + EQUILATERAL // Gleichseitig + } + + + public static void main(String[] args) { + Scanner s = new Scanner(System.in); + System.out.println("Geben Sie die Seitenlängen ein."); + float a = enterFloat(s, "a: "); + float b = enterFloat(s, "b: "); + float c = enterFloat(s, "c: "); + s.close(); + printAnalysis(a, b, c); + } + + // Eingabe einer Seitenlänge + private static float enterFloat(Scanner s, String prompt) { + System.out.print(prompt); + return s.nextFloat(); + } + + // Ausgabe der ermittelten Dreiecksart + private static void printAnalysis(float a, float b, float c) { + TriangleType type = checkTriangle(a, b, c); + switch (type) { + case NONE: + System.out.println("Kein Dreieck"); + break; + case NORMAL: + System.out.println("Dreieck"); + break; + case ISOSCELES: + System.out.println("Gleichschenkliges Dreieck"); + break; + case EQUILATERAL: + System.out.println("Gleichseitiges Dreieck"); + break; + } + } + + // Analyse der Dreiecksart + public static TriangleType checkTriangle(float a, float b, float c) { + return TriangleType.NONE; + } + + +} \ No newline at end of file diff --git a/test/TriangleCheckerTest.java b/test/TriangleCheckerTest.java new file mode 100644 index 0000000..5c9ff57 --- /dev/null +++ b/test/TriangleCheckerTest.java @@ -0,0 +1,22 @@ +import org.junit.Test; +import static org.junit.Assert.*; + +public class TriangleCheckerTest { + + @Test + public void testValidTriangle() { + + // Arrange + float a = 2; + float b = 3; + float c = 4; + + // Act + TriangleChecker.TriangleType type = TriangleChecker.checkTriangle(a, b, c); + + // Assert + assertEquals(TriangleChecker.TriangleType.NORMAL, type); + + } + +}