From d6e9813faa6d2ab820574418402014bd91050faf Mon Sep 17 00:00:00 2001
From: Martin Goik <goik@hdm-stuttgart.de>
Date: Mon, 13 Nov 2017 09:23:43 +0100
Subject: [PATCH] Simple test

---
 Tests/Sd1/00100/Exam/.gitignore               |   6 +
 Tests/Sd1/00100/Exam/Doc/klausur.xml          | 347 ++++++++++++++++++
 Tests/Sd1/00100/Exam/pom.xml                  |  94 +++++
 .../00100/Exam/src/main/assembly/assembly.xml |  36 ++
 .../hdm_stuttgart/mi/sd1/aufgabe1/Helper.java |  19 +
 .../00100/Exam/src/main/resources/log4j2.xml  |  21 ++
 .../mi/sd1/test/ShowReachedPoints.java        |  18 +
 .../mi/sd1/test/aufgabe1/Test_Helper.java     |  47 +++
 8 files changed, 588 insertions(+)
 create mode 100644 Tests/Sd1/00100/Exam/.gitignore
 create mode 100644 Tests/Sd1/00100/Exam/Doc/klausur.xml
 create mode 100644 Tests/Sd1/00100/Exam/pom.xml
 create mode 100644 Tests/Sd1/00100/Exam/src/main/assembly/assembly.xml
 create mode 100644 Tests/Sd1/00100/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java
 create mode 100644 Tests/Sd1/00100/Exam/src/main/resources/log4j2.xml
 create mode 100644 Tests/Sd1/00100/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java
 create mode 100644 Tests/Sd1/00100/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java

diff --git a/Tests/Sd1/00100/Exam/.gitignore b/Tests/Sd1/00100/Exam/.gitignore
new file mode 100644
index 000000000..450249b06
--- /dev/null
+++ b/Tests/Sd1/00100/Exam/.gitignore
@@ -0,0 +1,6 @@
+/.settings
+/.idea
+/*.iml
+/.classpath
+/.project
+/target
diff --git a/Tests/Sd1/00100/Exam/Doc/klausur.xml b/Tests/Sd1/00100/Exam/Doc/klausur.xml
new file mode 100644
index 000000000..3c02306fb
--- /dev/null
+++ b/Tests/Sd1/00100/Exam/Doc/klausur.xml
@@ -0,0 +1,347 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<book version="5.0" xml:id="klausur_SoSe_2017" xml:lang="de"
+      xmlns="http://docbook.org/ns/docbook"
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      xmlns:xila="http://www.w3.org/2001/XInclude/local-attributes"
+      xmlns:xi="http://www.w3.org/2001/XInclude"
+      xmlns:trans="http://docbook.org/ns/transclusion"
+      xmlns:svg="http://www.w3.org/2000/svg"
+      xmlns:m="http://www.w3.org/1998/Math/MathML"
+      xmlns:html="http://www.w3.org/1999/xhtml"
+      xmlns:db="http://docbook.org/ns/docbook">
+  <!-- saxon9he-xslt -s:klausur.xml -xsl:/usr/share/hdm-docbook-xsl/CustomLayer/Klausur/docbook2klausur.xsl -->
+
+  <info>
+    <title/>
+
+    <author>
+      <personname/>
+    </author>
+
+    <pubdate/>
+  </info>
+
+  <chapter xml:id="task1">
+    <title>Klassenmethoden</title>
+
+    <!-- Hier gemeinsames zip Archiv hochladen, auch von anderen Aufgaben. -->
+
+    <section xml:id="aufgabe1_prepare">
+      <title>Vorbereitung</title>
+
+      <para>Entpacken Sie das oben sichtbare Archiv
+      <filename>exam.zip</filename> und importieren Sie den resultierenden
+      Ordner <filename>Exam</filename> als <productname>Maven</productname>
+      Projekt.</para>
+    </section>
+
+    <section xml:id="aufgabe1_descr">
+      <title>Beschreibung</title>
+
+      <para>Implementieren Sie die vorbereiteten Methoden gemäß den in den
+      jeweiligen <productname>Javadoc</productname> Beschreibungen. Sie
+      bekommen bei unvollständiger Implementierung Teilpunkte.</para>
+    </section>
+
+    <section xml:id="aufgabe1_task">
+      <title>Aufgabe</title>
+
+      <para>Vervollständigen Sie die Implementierung aller Methoden der Klasse
+      Helper im <foreignphrase xml:lang="en">package</foreignphrase>
+      <package>de.hdm_stuttgart.mi.sd1.aufgabe1</package>.</para>
+
+      <tip>
+        <para>Das <foreignphrase xml:lang="en">package</foreignphrase>
+        <package>de.hdm_stuttgart.mi.sd1.aufgabe1</package> im Test Zweig
+        Ihres Projekts enthält eine zugehörige
+        <productname>Junit</productname> Testklasde TestHelper.</para>
+      </tip>
+    </section>
+
+    <section xml:id="aufgabe1_commonHints">
+      <title>Allgemeine Hinweise</title>
+
+      <itemizedlist>
+        <listitem>
+          <para>Für jede Methode stehen Ihnen in der zugehörigen Testklasse
+          korrespondierende Tests zur Verfügung. Nutzen Sie diese!</para>
+        </listitem>
+
+        <listitem>
+          <para>Die von Ihnen erreichte Punktzahl richtet sich nach der Anzahl
+          positiv bestandener Tests. Sie bekommen keine Punkte, wenn Ihre
+          Implementierung in Bezug auf einen einzelnen Test lediglich
+          <quote>fast richtig</quote> ist. Implementieren Sie im Zweifelsfall
+          weniger Methoden, diese dafür aber vollständig.</para>
+        </listitem>
+
+        <listitem>
+          <para>Die <productname>Javadoc</productname> Kommentare der
+          jeweiligen Methoden beschreiben das gewünschte Verhalten. Über den
+          Menüpunkt <guimenu>Tools</guimenu> <guisubmenu>Generate
+          JavaDoc</guisubmenu> erhalten Sie eine HTML Ansicht zur besseren
+          Lesbarkeit.</para>
+
+          <para>Lesen Sie die (ggf. generierte) Dokumentation <emphasis
+          role="bold">sehr genau</emphasis>.</para>
+        </listitem>
+
+        <listitem>
+          <para>Beachten Sie alle Sonderfälle. Dazu zählen insbesondere
+          <code>null</code> Werte von Variablen oder enthaltene
+          <code>null</code> Werte in <foreignphrase
+          xml:lang="en">Arrays</foreignphrase>.</para>
+        </listitem>
+
+        <listitem>
+          <para>Nutzen Sie den <foreignphrase
+          xml:lang="en">Debugger</foreignphrase> oder logging <foreignphrase
+          xml:lang="en">Statements</foreignphrase> im Fall fehlgeschlagener
+          Testfälle.</para>
+        </listitem>
+
+        <listitem>
+          <para>Die Ausführung von
+          <package>de.hdm_stuttgart.mi.sd1.test</package>.<classname>ShowAllReachedPoints</classname>
+          im Testzweig Ihres Projekts zeigt Ihnen die in allen
+          Programmieraufgaben aktuell erreichten Punkte.</para>
+        </listitem>
+      </itemizedlist>
+    </section>
+
+    <section version="5.1" xml:id="uploadFirst" xml:lang="de">
+      <title>Hochladen Ihrer Lösung in das Klausursystem</title>
+
+      <para>Exportieren Sie Ihr Projekt in ein Archiv mit Namen
+      <filename>solution_1.zip</filename>. Nutzen Sie dazu die durch
+      Rechtsklick auf Ihre Projektwurzel <guilabel>Compress</guilabel>
+      Funktion des Dateimanagers und akzeptieren Sie die Standard Option
+      <filename>.zip</filename>. Laden Sie danach
+      <filename>solution_1.zip</filename> über die <quote><foreignphrase
+      xml:lang="en">Upload</foreignphrase> File</quote> Funktion am unteren
+      Seitenende der Aufgabe in das <productname>Ilias</productname> System
+      hoch. Wichtige Punkte:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>Wählen Sie beim Hochladen nicht die falsche Datei, etwa das
+          Ausgangsarchiv <filename>exam.zip</filename> oder eine ältere
+          Version Ihres Projekts.</para>
+        </listitem>
+
+        <listitem>
+          <para>Kontrollieren Sie nach dem Hochladen die Sichtbarkeit Ihres
+          <filename>solution_1.zip</filename> Archivs im Klausursystem.</para>
+        </listitem>
+
+        <listitem>
+          <para>Sie können mehrere Versionen
+          <filename>solution_2.zip</filename> ... hochladen und bei Bedarf
+          ältere im <productname>Ilias</productname> System löschen. Nur die
+          zuletzt hochgeladene Version wird bewertet.</para>
+        </listitem>
+      </itemizedlist>
+
+      <caution>
+        <itemizedlist>
+          <listitem>
+            <para>Reservieren Sie für den Vorgang des Hochladens ausreichend
+            Zeit vor Klausurende.</para>
+          </listitem>
+
+          <listitem>
+            <para>Bearbeitungen, welche sich nach Klausurende lediglich auf
+            Ihrem Arbeitsplatzrechner befinden, werden nicht gewertet.</para>
+          </listitem>
+
+          <listitem>
+            <para>Laden Sie keine Projekte mit <productname>Java</productname>
+            Syntaxfehlern hoch, diese werden nicht bewertet!</para>
+          </listitem>
+
+          <listitem>
+            <para>Exportieren Sie Ihr Projekt nicht als
+            <filename>.tgz</filename>, <filename>.java</filename>,
+            <filename>.tar.gz</filename> <acronym>o.ä.</acronym>. Das
+            Klausursystem akzeptiert nur Archive mit der Endung
+            <filename>.zip</filename>.</para>
+          </listitem>
+        </itemizedlist>
+      </caution>
+    </section>
+  </chapter>
+
+  <chapter xml:id="task2">
+    <title>Ersatzteile</title>
+
+    <section xml:id="aufgabe2_prepare">
+      <title>Vorbereitung</title>
+
+      <para>Falls Sie die erste Aufgabe »<xref linkend="task1"/>« bearbeitet
+      haben, arbeiten Sie einfach an Ihrem <productname>Maven</productname>
+      Projekt weiter. Ansonsten lesen Sie bitte die Anleitung in der Aufgabe
+      »<xref linkend="task1"/>« zum <productname>Eclipse</productname>
+      <productname>Maven</productname> Projektimport sowie weitere Hinweise
+      zum Hochladen in das <productname>Ilias</productname> System.</para>
+    </section>
+
+    <section xml:id="aufgabe2_descr">
+      <title>Beschreibung</title>
+
+      <para>Implementierung von Methoden und einer neuen Klasse zur Verwaltung
+      von Ersatzteilen.</para>
+
+      <para>Das <productname>Maven</productname> Projektskelett enthält eine
+      Klasse <classname>Ersatzteil</classname> im <foreignphrase
+      xml:lang="en">Package</foreignphrase>
+      <package>de.hdm_stuttgart.mi.sd1.aufgabe2</package>.</para>
+
+      <para>Implementieren Sie die nachfolgend beschriebenen Funktionalitäten.
+      Sie bekommen bei unvollständiger Implementierung Teilpunkte. Nutzen Sie
+      zum Test Ihrer Implementierung die <productname>Junit</productname>
+      Tests in
+      <package>de.hdm_stuttgart.mi.sd1.test.aufgabe2</package>.<classname>Test_Ersatzteil</classname>.</para>
+    </section>
+
+    <section xml:id="aufgabe2_task">
+      <title>Aufgaben</title>
+
+      <orderedlist>
+        <listitem>
+          <para>Ein Ersatzteil soll durch Angabe einer Teilenummer und einer
+          Bezeichnung erstellt werden können. Wir betrachten ein Beispiel für
+          das gewünschte Verhalten:</para>
+
+          <programlisting language="java">final Ersatzteil kurbelwelle =
+   new Ersatzteil(12345, "Kurbelwelle");
+System.out.println(kurbelwelle);
+      
+final Ersatzteil brandneu =     // Bezeichnung noch
+   new Ersatzteil(54321, null); // unbekannt. 
+System.out.println(brandneu);</programlisting>
+
+          <para>Dies soll folgende Ausgabe liefern:</para>
+
+          <screen>Kurbelwelle, Teilenummer:12345
+Bezeichnung unbekannt, Teilenummer:54321</screen>
+
+          <para>Ergänzen Sie die Klasse <classname>Ersatzteil</classname> um
+          einen passenden Konstruktor, <code>private</code> Attribute und eine
+          <methodname
+          xlink:href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--">toString()</methodname>
+          Methode.</para>
+
+          <tip>
+            <itemizedlist>
+              <listitem>
+                <para>Das Kontextmenü <quote><foreignphrase
+                xml:lang="en">Source</foreignphrase></quote> →
+                <quote>Override/Implement <foreignphrase
+                xml:lang="en">Methods</foreignphrase>...</quote> in
+                <productname>Eclipse</productname> und die <interfacename
+                xlink:href="https://docs.oracle.com/javase/8/docs/api/java/lang/Override.html">@Override</interfacename>
+                Annotation sind Ihre Freunde.</para>
+              </listitem>
+
+              <listitem>
+                <para>Achten Sie im Hinblick auf die
+                <productname>Junit</productname> Tests sehr genau auf
+                Leerzeichen, Groß/Kleinschreibung etc. in der erzeugten
+                Zeichenkette. Erbsenzähler[innen] sind im Vorteil!</para>
+              </listitem>
+            </itemizedlist>
+          </tip>
+        </listitem>
+
+        <listitem>
+          <para>Zwei Ersatzteil Instanzen sollen bezüglich
+          <methodname>equals()</methodname> genau dann gleich sein, wenn ihre
+          Teilenummern gleich sind. Die Bezeichnung der Teile soll irrelevant
+          sein. Wir betrachten ein Beispiel für das gewünschte
+          Verhalten:</para>
+
+          <programlisting language="java">final Ersatzteil
+      kurbelwelle = new Ersatzteil(12345, "Kurbelwelle"),
+   schwurbelwelle = new Ersatzteil(12345, "Schwurbelwelle"), // Tippfehler?
+          lenkrad = new Ersatzteil(54321, "Lenkrad");
+
+System.out.println("kurbelwelle gleich schwurbelwelle? " + 
+      kurbelwelle.equals(schwurbelwelle));
+     
+System.out.println("kurbelwelle gleich lenkrad? " + 
+      kurbelwelle.equals(lenkrad));</programlisting>
+
+          <para>Dies soll folgende Ausgabe liefern:</para>
+
+          <screen>kurbelwelle gleich schwurbelwelle? true
+kurbelwelle gleich lenkrad? false</screen>
+        </listitem>
+
+        <listitem>
+          <para>Definieren Sie die
+          <classname>Ersatzteil</classname>.<methodname>equals()</methodname>
+          Methode dergestalt, dass sie in abgeleiteten Klassen nicht
+          überschrieben werden <emphasis role="bold">kann</emphasis>.</para>
+        </listitem>
+
+        <listitem>
+          <para>Leiten Sie eine Klasse <classname>Reifen</classname> von
+          <classname>Ersatzteil</classname> im selben <foreignphrase
+          xml:lang="en">Package</foreignphrase> (<emphasis>wichtig für
+          zugehörige <productname>Junit</productname> Tests!</emphasis>)
+          ab.</para>
+
+          <para>Für die Erzeugung von <classname>Reifen</classname> Instanzen
+          soll neben der Teilenummer die maximal erlaubte Fahrgeschwindigkeit
+          angegeben werden müssen. Die Teilebezeichnung in der Basisklasse
+          <classname>Ersatzteil</classname> soll automatisch auf
+          <code>"Reifen"</code> gesetzt werden:</para>
+
+          <programlisting language="java">final Reifen reifen =      // Reifen mit Teilenummer 1234 und Maximalgeschwindigkeit 160 Km pro Stunde,
+   new Reifen(1234, 160);  // Die feste Teilebezeichnung <emphasis role="bold">"Reifen"</emphasis> wird in der
+                           // Basisklasse <classname>Ersatzteil</classname> automatisch gesetzt.
+System.out.println(reifen);</programlisting>
+
+          <para>Nutzen Sie Ihre zuvor implementierte
+          <classname>Ersatzteil</classname>.<methodname>toString()</methodname>
+          Methode und überschreiben Sie diese in der Klasse
+          <classname>Reifen</classname> geeignet, damit Sie folgende Ausgabe
+          erhalten:</para>
+
+          <screen>Reifen, Teilenummer:1234, Maximalgeschwindigkeit:160 Kmh</screen>
+
+          <tip>
+            <para>Achten Sie auch diesmal sehr genau auf Leerzeichen,
+            Groß/Kleinschreibung etc. in der erzeugten Zeichenkette.
+            Erbsenzähler[innen] sind weiterhin im Vorteil!</para>
+          </tip>
+        </listitem>
+      </orderedlist>
+    </section>
+
+    <section version="5.1" xml:id="uploadFollow" xml:lang="de">
+      <title>Hochladen Ihrer Lösung in das Klausursystem</title>
+
+      <para>Laden Sie die Lösung dieser Aufgabe als gemeinsamen Projekt Export
+      mit der ersten Aufgabe <xref linkend="task1"/> gemäß den dortigen
+      Hinweisen hoch. Falls Sie die Aufgabe »<xref linkend="task1"/>«
+      ebenfalls bearbeitet haben, enthält Ihr <foreignphrase
+      xml:lang="en">Upload</foreignphrase> die Lösungen zu beiden
+      Aufgaben.</para>
+
+      <para>Tragen Sie im Freitextfeld weiter unten genau einen der beiden
+      Texte ein:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para>Ich habe die aktuelle Aufgabe bearbeitet und erhoffe dafür
+          Punkte.</para>
+        </listitem>
+
+        <listitem>
+          <para>Ich habe die aktuelle Aufgabe nicht bearbeitet.</para>
+        </listitem>
+      </itemizedlist>
+    </section>
+  </chapter>
+</book>
diff --git a/Tests/Sd1/00100/Exam/pom.xml b/Tests/Sd1/00100/Exam/pom.xml
new file mode 100644
index 000000000..98de57545
--- /dev/null
+++ b/Tests/Sd1/00100/Exam/pom.xml
@@ -0,0 +1,94 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>de.hdm-stuttgart.mi.sd1</groupId>
+	<artifactId>sd1_test_0100</artifactId>
+	<version>0.9</version>
+	<packaging>jar</packaging>
+
+	<name>sd1_test_0100</name>
+
+	<url>https://freedocs.mi.hdm-stuttgart.de/sd1FirstJavaProject.html</url>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+	</properties>
+
+	<repositories>
+		<repository>
+			<id>hdm-mi-internal-maven-repo</id>
+			<url>https://maven.mi.hdm-stuttgart.de/artifacts</url>
+		</repository>
+	</repositories>
+
+
+	<dependencies>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.12</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.logging.log4j</groupId>
+			<artifactId>log4j-core</artifactId>
+			<version>2.6</version>
+		</dependency>
+
+		<dependency>
+			<groupId>de.hdm_stuttgart.mi.exam</groupId>
+			<artifactId>unitmarking</artifactId>
+			<version>0.9</version>
+		</dependency>
+
+	</dependencies>
+
+	<build>
+		<plugins>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.5.1</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.10.3</version>
+				<configuration />
+			</plugin>
+
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<version>2.3</version>
+				<configuration>
+					<descriptor>src/main/assembly/assembly.xml</descriptor>
+				</configuration>
+				<executions>
+					<execution>
+						<id>make-assembly</id>
+						<phase>package</phase>
+						<goals>
+							<goal>single</goal>
+						</goals>
+						<configuration>
+							<archive>
+								<manifest>
+									<mainClass>de.hdm_stuttgart.mi.sd1.test.ShowReachedPoints</mainClass>
+								</manifest>
+							</archive>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+
+		</plugins>
+	</build>
+</project>
\ No newline at end of file
diff --git a/Tests/Sd1/00100/Exam/src/main/assembly/assembly.xml b/Tests/Sd1/00100/Exam/src/main/assembly/assembly.xml
new file mode 100644
index 000000000..1a2cd6054
--- /dev/null
+++ b/Tests/Sd1/00100/Exam/src/main/assembly/assembly.xml
@@ -0,0 +1,36 @@
+<assembly
+    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
+    <id>fat-tests</id>
+    <formats>
+        <format>jar</format>
+    </formats>
+    <includeBaseDirectory>false</includeBaseDirectory>
+    <dependencySets>
+        <dependencySet>
+            <outputDirectory>/</outputDirectory>
+            <useProjectArtifact>true</useProjectArtifact>
+            <unpack>true</unpack>
+            <scope>test</scope>
+        </dependencySet>
+    </dependencySets>
+    <fileSets>
+        <fileSet>
+            <directory>${project.build.directory}/test-classes</directory>
+            <outputDirectory>/</outputDirectory>
+            <includes>
+                <include>**/*.class</include>
+            </includes>
+            <useDefaultExcludes>true</useDefaultExcludes>
+        </fileSet>
+        <fileSet>
+            <directory>${project.build.directory}/classes</directory>
+            <outputDirectory>/</outputDirectory>
+            <includes>
+                <include>**/*.class</include>
+            </includes>
+            <useDefaultExcludes>true</useDefaultExcludes>
+        </fileSet>
+    </fileSets>
+</assembly>
diff --git a/Tests/Sd1/00100/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java b/Tests/Sd1/00100/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java
new file mode 100644
index 000000000..d2b8f9c60
--- /dev/null
+++ b/Tests/Sd1/00100/Exam/src/main/java/de/hdm_stuttgart/mi/sd1/aufgabe1/Helper.java
@@ -0,0 +1,19 @@
+package de.hdm_stuttgart.mi.sd1.aufgabe1;
+
+/**
+ * Helper methods
+ *
+ */
+public class Helper {
+
+   /**
+    * Find the smaller of two possibly different values.
+    *
+    * @param a The first value
+    * @param b The second value
+    * @return The first value if smaller than the second. The second value otherwise.
+    */
+   public static int getMinimum(int a, int b) {
+      return 1234;
+   }
+}
diff --git a/Tests/Sd1/00100/Exam/src/main/resources/log4j2.xml b/Tests/Sd1/00100/Exam/src/main/resources/log4j2.xml
new file mode 100644
index 000000000..130f87a14
--- /dev/null
+++ b/Tests/Sd1/00100/Exam/src/main/resources/log4j2.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <File name="A1" fileName="A1.log" append="false">
+            <PatternLayout pattern="%t %-5p %c{2} - %m%n"/>
+        </File>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+
+        <!-- You my want to define class or package level per-logger rules -->
+        <Logger name="de.hdm_stuttgart.mi.sd1.App" level="debug">
+            <AppenderRef ref="A1"/>
+        </Logger>
+        <Root level="info">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file
diff --git a/Tests/Sd1/00100/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java b/Tests/Sd1/00100/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java
new file mode 100644
index 000000000..05325e2b8
--- /dev/null
+++ b/Tests/Sd1/00100/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/ShowReachedPoints.java
@@ -0,0 +1,18 @@
+package de.hdm_stuttgart.mi.sd1.test;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
+import de.hdm_stuttgart.mi.sd1.test.aufgabe1.Test_Helper;
+
+public class ShowReachedPoints {
+
+   /**
+    * Execution reveals the number of reached points.
+    * 
+    * @param args Unused
+    */
+   public static void main(String[] args) {
+      RunTests.exec(
+            "Aufgabe 1" , Test_Helper.class);
+      
+   }
+}
diff --git a/Tests/Sd1/00100/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java b/Tests/Sd1/00100/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java
new file mode 100644
index 000000000..9f97a7197
--- /dev/null
+++ b/Tests/Sd1/00100/Exam/src/test/java/de/hdm_stuttgart/mi/sd1/test/aufgabe1/Test_Helper.java
@@ -0,0 +1,47 @@
+package de.hdm_stuttgart.mi.sd1.test.aufgabe1;
+
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.mi.sd1.aufgabe1.Helper;
+
+
+public class Test_Helper {
+  /**
+   * first argument smaller than second
+   */
+  @Test
+  @Marking(points=2)
+  public void test_100() {
+    Assert.assertEquals(1, Helper.getMinimum(1, 7));
+    Assert.assertEquals(0, Helper.getMinimum(0, 1));
+    Assert.assertEquals(-4, Helper.getMinimum(-4, -2));
+    Assert.assertEquals(-4, Helper.getMinimum(-4, 0));
+    Assert.assertEquals(-4, Helper.getMinimum(-4, 6));
+  }
+  /**
+   * first argument smaller than second
+   */
+  @Test
+  @Marking(points=2)
+  public void test_200() {
+    Assert.assertEquals(1, Helper.getMinimum(6, 1));
+    Assert.assertEquals(-1, Helper.getMinimum(0, -1));
+    Assert.assertEquals(-7, Helper.getMinimum(-4, -7));
+    Assert.assertEquals(-3, Helper.getMinimum(4, -3));
+  }
+  /**
+   * Arguments equal
+   */
+  @Test
+  @Marking(points=2)
+  public void test_300() {
+    Assert.assertEquals(5, Helper.getMinimum(5, 5));
+    Assert.assertEquals(0, Helper.getMinimum(0, 0));
+    Assert.assertEquals(-4, Helper.getMinimum(-4, -4));
+  }
+}
\ No newline at end of file
-- 
GitLab