From 1af0ecf099c7772503a7860abbf8ace5601cf480 Mon Sep 17 00:00:00 2001
From: Martin Goik <goik@hdm-stuttgart.de>
Date: Fri, 11 Mar 2016 20:29:06 +0100
Subject: [PATCH] Play it again, Sam

---
 Klausuren/Sd1/Ws2015/Exam/.gitignore          |   3 +
 Klausuren/Sd1/Ws2015/Exam/pom.xml             |  27 ++-
 .../mi/bitte_ignorieren/Marking.java          |  14 --
 .../mi/bitte_ignorieren/MarkingTest.java      |  29 ---
 .../mi/bitte_ignorieren/ResultCollector.java  | 172 ------------------
 .../mi/bitte_ignorieren/Run.java              |  31 ----
 .../mi/bitte_ignorieren/TestResult.java       |  19 --
 .../hdm_stuttgart/mi/runtests/AllTests.java   |   9 -
 .../mi/runtests/DetailedTestResults.java      |  21 ---
 .../mi/runtests/ReachedPoints.java            |  51 ------
 .../sw1/klausur/test/GetMarks.java            |  10 +
 .../sw1/klausur/test/Test_Helper.java         |   3 +-
 .../klausur/test/Test_SpielNaechsteRunde.java |   6 +-
 13 files changed, 42 insertions(+), 353 deletions(-)
 create mode 100644 Klausuren/Sd1/Ws2015/Exam/.gitignore
 delete mode 100644 Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/Marking.java
 delete mode 100644 Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/MarkingTest.java
 delete mode 100644 Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/ResultCollector.java
 delete mode 100644 Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/Run.java
 delete mode 100644 Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/TestResult.java
 delete mode 100644 Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/AllTests.java
 delete mode 100644 Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/DetailedTestResults.java
 delete mode 100644 Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/ReachedPoints.java
 create mode 100644 Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/GetMarks.java

diff --git a/Klausuren/Sd1/Ws2015/Exam/.gitignore b/Klausuren/Sd1/Ws2015/Exam/.gitignore
new file mode 100644
index 000000000..857955ec6
--- /dev/null
+++ b/Klausuren/Sd1/Ws2015/Exam/.gitignore
@@ -0,0 +1,3 @@
+/.classpath
+/.project
+/.settings
\ No newline at end of file
diff --git a/Klausuren/Sd1/Ws2015/Exam/pom.xml b/Klausuren/Sd1/Ws2015/Exam/pom.xml
index b39707ec4..00416b2d4 100644
--- a/Klausuren/Sd1/Ws2015/Exam/pom.xml
+++ b/Klausuren/Sd1/Ws2015/Exam/pom.xml
@@ -3,16 +3,31 @@
 	<modelVersion>4.0.0</modelVersion>
 
 	<groupId>de.hdm-stuttgart.sw1.klausur</groupId>
-	<artifactId>sw1Solution</artifactId>
+	<artifactId>sw1exam</artifactId>
 	<version>0.9</version>
 	<packaging>jar</packaging>
 
-	<name>sw1Solution</name>
+	<name>sw1Exam</name>
 	<url>http://maven.apache.org</url>
 
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 	</properties>
+	
+	<repositories>
+		<repository>
+			<releases>
+				<enabled>true</enabled>
+				<updatePolicy>always</updatePolicy>
+				<checksumPolicy>fail</checksumPolicy>
+			</releases>
+			<id>YourId</id>
+			<name>YourName</name>
+			<url>https://maven.mi.hdm-stuttgart.de/artifacts</url>
+			<layout>default</layout>
+		</repository>
+	</repositories>	
+	
 	<build>
 		<plugins>
 
@@ -73,6 +88,7 @@
 	</build>
 
 	<dependencies>
+	
 		<dependency>
 			<groupId>junit</groupId>
 			<artifactId>junit</artifactId>
@@ -84,11 +100,18 @@
 			<artifactId>log4j-api</artifactId>
 			<version>2.1</version>
 		</dependency>
+		
 		<dependency>
 			<groupId>org.apache.logging.log4j</groupId>
 			<artifactId>log4j-core</artifactId>
 			<version>2.1</version>
 		</dependency>
+		
+		<dependency>
+			<groupId>de.hdm_stuttgart.mi.exam</groupId>
+			<artifactId>unitmarking</artifactId>
+			<version>0.9</version>
+		</dependency>
 
 	</dependencies>
 </project>
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/Marking.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/Marking.java
deleted file mode 100644
index b9b00c7cf..000000000
--- a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/Marking.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package de.hdm_stuttgart.mi.bitte_ignorieren;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-
-@Retention( value = RetentionPolicy.RUNTIME)
-@Target( value = { ElementType.METHOD})
-public @interface Marking {
-
-	int points ();
-}
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/MarkingTest.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/MarkingTest.java
deleted file mode 100644
index fe99181ad..000000000
--- a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/MarkingTest.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package de.hdm_stuttgart.mi.bitte_ignorieren;
-
-import org.junit.AfterClass;
-import org.junit.Rule;
-import org.junit.runner.Description;
-
-public class MarkingTest {
-	
-	static public Description currentTestClass = null;
-	
-	static public boolean provideExtraInfo = false;
-	
-	public final static ResultCollector globalresultCollector = new ResultCollector();
-	
-	@Rule
-	public ResultCollector collectedResults = globalresultCollector;
-
-	@AfterClass public static void showResults() {
-		if (provideExtraInfo) {
-			System.out.println("Local:----------------------------------");
-			System.out.println(globalresultCollector.currentToString());
-			System.out.println("Global:++++++++++++++++++++++++++++++++++");
-			System.out.println("Global:++++++++++++++++++++++++++++++++++");
-			System.out.println(globalresultCollector.toString());
-			System.out.println("Global:++++++++++++++++++++++++++++++++++");
-			System.out.println("Global:++++++++++++++++++++++++++++++++++");
-		}
-	}
-}
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/ResultCollector.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/ResultCollector.java
deleted file mode 100644
index cf5529bdb..000000000
--- a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/ResultCollector.java
+++ /dev/null
@@ -1,172 +0,0 @@
-package de.hdm_stuttgart.mi.bitte_ignorieren;
-
-import java.lang.annotation.Annotation;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Vector;
-
-import org.junit.rules.TestWatcher;
-import org.junit.runner.Description;
-
-public class ResultCollector extends TestWatcher {
-
-   public final Map<String, List<TestResult>> 
-   failedByDescription = new HashMap<String,  List<TestResult>>(),
-   successByDescription = new HashMap<String, List<TestResult>>();
-
-   
-   
-   @Override
-   protected void starting(Description description) {
-      MarkingTest.currentTestClass = description;
-      
-      // Init with empty list: All tests may fail!
-      // Unfortunately there is no better hook in TestWatcher.
-      if (null == failedByDescription.get(description.getClassName())) {
-         failedByDescription.put(description.getClassName(), new Vector<TestResult>());
-      }
-      if (null == successByDescription.get(description.getClassName())) {
-         successByDescription.put(description.getClassName(), new Vector<TestResult>());
-      }
-   }
-
-   @Override
-   protected void failed(final Throwable e, final Description description) {
-      putAppend(failedByDescription, description.getClassName(), new TestResult(description,
-            getMarking(description), false));
-   }
-
-   @Override
-   protected void succeeded(final Description description) {
-      putAppend(successByDescription, description.getClassName(), new TestResult(description,
-            getMarking(description), true));
-   }
-
-   private static void putAppend(final Map<String, List<TestResult>> map, final String key, final TestResult testresult) {
-      List<TestResult> results = map.get(key);
-      if (null == results) {
-         results = new Vector<TestResult>();
-         map.put(key, results);
-      }
-      results.add(testresult);
-   }
-   private static Marking getMarking(final Description description) {
-
-      final Marking marking = description.getAnnotation(Marking.class);
-      if (null == marking) { // Default values: 1 point
-         return new Marking() {
-
-            @Override
-            public Class<? extends Annotation> annotationType() {
-               return Marking.class;
-            }
-
-            @Override
-            public int points() {
-               return 1;
-            }
-         };
-
-      }
-      return marking;
-   }
-
-   public String currentToString() {
-
-      final String currentTestClassName = MarkingTest.currentTestClass.getClassName();
-
-      int reachablePoints = 0, reachedPoints = 0, numSuccessfulTests = 0;
-
-      final List<TestResult> successfulTestResults = successByDescription.get(currentTestClassName);
-
-      if (null != successfulTestResults) {
-         for (final TestResult t : successfulTestResults) {
-            reachablePoints += t.marking.points();
-            reachedPoints += t.marking.points();
-            numSuccessfulTests++;
-         }
-      }
-
-      final StringBuffer failBuffer = new StringBuffer();
-
-      final List<TestResult> failedTestResults = failedByDescription.get(currentTestClassName);
-
-      if (null != failedTestResults) {
-         for (final TestResult t : failedTestResults) {
-            reachablePoints += t.marking.points();
-            failBuffer.append("  -" + t.testMethodDisplayName + "\n");
-         }
-      }
-
-      final StringBuffer buffer = new StringBuffer();
-
-      buffer.append(currentTestClassName + ":\nYou have reached " + reachedPoints + " of "
-            + reachablePoints + " possible points in " + numSuccessfulTests + " successful tests. ");
-
-      if (null != failedTestResults) {
-
-         final int numFailed = failedTestResults.size();
-         if (1 == numFailed) {
-            buffer.append(" The following test still fails:\n");
-         } else if (1 <  numFailed) {
-            buffer.append("\n\nThe following " + numFailed + " tests still fail:\n");
-         }
-         buffer.append(failBuffer + "\n");
-      }
-      buffer.append("\n");
-      return buffer.toString();
-   }
-   
-   public String getReachedPoints() {
-      final StringBuffer ret = new StringBuffer();
-
-      for (final Entry<String, List<TestResult>> successEntries: successByDescription.entrySet()) {
-         int sum = 0;
-         for (final TestResult t : successEntries.getValue()) {
-            sum +=t.marking.points();
-         }
-
-         ret.append(successEntries.getKey() +  "   " + sum + "    ");
-      }
-      return ret.toString();
-   }
-
-   @Override
-   public String toString() {
-
-      int reachablePoints = 0, reachedPoints = 0, successfulTests = 0, failedTests = 0;
-
-      for (final Entry<String, List<TestResult>> successEntries: successByDescription.entrySet()) {
-         for (final TestResult t : successEntries.getValue()) {
-            successfulTests++;
-            reachablePoints += t.marking.points();
-            reachedPoints += t.marking.points();
-         }
-      }
-
-      final StringBuffer failBuffer = new StringBuffer();
-      for (final Entry<String, List<TestResult>> failEntries: failedByDescription.entrySet()) {
-         for (final TestResult t : failEntries.getValue()) {
-            failedTests++;
-            reachablePoints += t.marking.points();
-            failBuffer.append("  -" + t.testMethodDisplayName + "\n");
-         }
-      }
-
-      final StringBuffer buffer = new StringBuffer();
-
-      buffer.append("You have reached " + reachedPoints + " of "
-            + reachablePoints + " possible points in "
-            + successfulTests + " successful tests\n");
-      if (1 == failedTests) {
-         buffer.append("\n\nThe following test still fails:\n");
-      } else if (1 < failedTests) {
-         buffer.append("\n\nThe following " + failedTests
-               + " tests still fail:\n");
-      }
-      buffer.append(failBuffer + "\n");
-      return buffer.toString();
-   }
-}
\ No newline at end of file
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/Run.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/Run.java
deleted file mode 100644
index d46c24a79..000000000
--- a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/Run.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package de.hdm_stuttgart.mi.bitte_ignorieren;
-
-import java.util.Set;
-
-import org.junit.runner.JUnitCore;
-
-import de.hdm_stuttgart.mi.runtests.ReachedPoints;
-
-public class Run {
-  public static void main(String[] args) {
-    JUnitCore.runClasses(ReachedPoints.class);
-    killStillRunningJUnitTestcaseThreads();
-  }
-  
-  @SuppressWarnings("deprecation")
-  private static void killStillRunningJUnitTestcaseThreads() {
-      Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
-      for (Thread thread : threadSet) {
-          if (!(thread.isDaemon())) {
-              final StackTraceElement[] threadStackTrace = thread.getStackTrace();
-              if (threadStackTrace.length > 1) {
-                  StackTraceElement firstMethodInvocation = threadStackTrace[threadStackTrace.length - 1];
-                  if (firstMethodInvocation.getClassName().startsWith("org.junit")) {
-                      // HACK: must use deprecated method
-                      thread.stop();
-                  }
-              }
-          }
-      }
-  }
-}
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/TestResult.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/TestResult.java
deleted file mode 100644
index d32e9e9de..000000000
--- a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/bitte_ignorieren/TestResult.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package de.hdm_stuttgart.mi.bitte_ignorieren;
-
-import org.junit.runner.Description;
-
-public class TestResult {
-
-	public final Description testMethodDisplayName;
-	public final Marking marking;
-	public final boolean success;
-	
-	public TestResult(final Description testMethodDisplayName,
-			final Marking marking,
-			final boolean success) {
-		
-		this.testMethodDisplayName = testMethodDisplayName;
-		this.marking = marking;
-		this.success = success;
-	}
-}
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/AllTests.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/AllTests.java
deleted file mode 100644
index 05883ffe6..000000000
--- a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/AllTests.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package de.hdm_stuttgart.mi.runtests;
-
-import org.junit.runner.JUnitCore;
-
-public class AllTests {
-  public static void main(String[] args) {
-    JUnitCore.runClasses(ReachedPoints.class);
-  }
-}
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/DetailedTestResults.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/DetailedTestResults.java
deleted file mode 100644
index 6e6d58d54..000000000
--- a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/DetailedTestResults.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package de.hdm_stuttgart.mi.runtests;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-
-import de.hdm_stuttgart.mi.bitte_ignorieren.MarkingTest;
-
-
-public class DetailedTestResults extends ReachedPoints {
-	
-	@BeforeClass public static void init() {
-		MarkingTest.provideExtraInfo = true;
-	}
-	
-	@AfterClass public static void showResults() {
-		System.out.println("---final------------------");
-		System.out.println(MarkingTest.globalresultCollector.toString());
-		//System.out.println(MarkingTest.globalresultCollector.);
-	}
-	
-}
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/ReachedPoints.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/ReachedPoints.java
deleted file mode 100644
index 02bdb7649..000000000
--- a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/mi/runtests/ReachedPoints.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package de.hdm_stuttgart.mi.runtests;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintStream;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-import de.hdm_stuttgart.mi.bitte_ignorieren.MarkingTest;
-import de.hdm_stuttgart.sw1.klausur.test.Test_Helper;
-import de.hdm_stuttgart.sw1.klausur.test.Test_SpielNaechsteRunde;
-
-
-
-
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
-	Test_Helper.class,
-	Test_SpielNaechsteRunde.class,
-})
-
-public class ReachedPoints {
-   
-   
-   static final PrintStream dummyStream = new PrintStream(new OutputStream() {
-
-      @Override
-      public void write(int b) throws IOException {}
-
-      @Override
-      public void write(byte[] b) throws IOException {}
-
-      @Override
-      public void write(byte[] b, int off, int len) throws IOException {}
-   });
-
-   final static PrintStream systemOutStream = System.out;
-	
-	@BeforeClass public static void init() {
-	   System.setOut(dummyStream);
-		MarkingTest.provideExtraInfo = false;
-	}
-	
-	@AfterClass public static void showResults() {
-	   System.setOut(systemOutStream); 
-		System.out.println(MarkingTest.globalresultCollector.getReachedPoints());
-	}
-}
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/GetMarks.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/GetMarks.java
new file mode 100644
index 000000000..aa165b221
--- /dev/null
+++ b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/GetMarks.java
@@ -0,0 +1,10 @@
+package de.hdm_stuttgart.sw1.klausur.test;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
+
+public class GetMarks {
+
+   public static void main(String[] args) {
+      RunTests.exec(Test_Helper.class, Test_SpielNaechsteRunde.class);
+   }
+}
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java
index a901e51b8..766ebaa26 100644
--- a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java
+++ b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java
@@ -4,11 +4,10 @@ import org.junit.Assert;
 import org.junit.Test;
 
 //import de.hdm_stuttgart.mi.bitte_ignorieren.Marking;
-import de.hdm_stuttgart.mi.bitte_ignorieren.MarkingTest;
 import static de.hdm_stuttgart.sw1.klausur.Helper.*;
 
 @SuppressWarnings({"javadoc"})
-public class Test_Helper  extends MarkingTest {
+public class Test_Helper {
 
 	// Abschnitt getHaeufigkeit
 	@Test(timeout=1000)
diff --git a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_SpielNaechsteRunde.java b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_SpielNaechsteRunde.java
index 32d9e5432..fc262bbf9 100644
--- a/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_SpielNaechsteRunde.java
+++ b/Klausuren/Sd1/Ws2015/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_SpielNaechsteRunde.java
@@ -3,13 +3,13 @@ package de.hdm_stuttgart.sw1.klausur.test;
 import org.junit.Assert;
 import org.junit.Test;
 
-import de.hdm_stuttgart.mi.bitte_ignorieren.Marking;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+
 //import de.hdm_stuttgart.mi.bitte_ignorieren.Marking;
-import de.hdm_stuttgart.mi.bitte_ignorieren.MarkingTest;
 import static de.hdm_stuttgart.sw1.klausur.Spielen.getTeilnehmerNaechsteRunde;
 
 @SuppressWarnings({"javadoc"})
-public class Test_SpielNaechsteRunde  extends MarkingTest {
+public class Test_SpielNaechsteRunde {
 
 	@Test(timeout=1000)
 	public void nullBehandlung () {
-- 
GitLab