From 7e40976f98acb0650e5bcbe00c98d1e5abacfe1f Mon Sep 17 00:00:00 2001
From: Martin Goik <goik@hdm-stuttgart.de>
Date: Tue, 16 Dec 2014 15:01:58 +0100
Subject: [PATCH] Well-formedness becomes precondition (Junit Assume) for test
 executions

---
 .../mi/sda1/saxhtml/v1/Memo2HtmlHandler.java  |  2 +-
 .../exam/testing}/AssertXpathResult.java      |  2 +-
 .../dom => mi/exam/testing}/DomAssert.java    |  2 +-
 .../exam/testing}/SaxFilterTest.java          | 33 +++++++++++--------
 .../v1/test/TestSimpleSaxTransform.java       |  9 ++---
 .../v2/test/TestComplexSaxTransform.java      |  4 +--
 6 files changed, 26 insertions(+), 26 deletions(-)
 rename Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/{testing/dom => mi/exam/testing}/AssertXpathResult.java (84%)
 rename Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/{testing/dom => mi/exam/testing}/DomAssert.java (98%)
 rename Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/{testing/dom => mi/exam/testing}/SaxFilterTest.java (71%)

diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/Memo2HtmlHandler.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/Memo2HtmlHandler.java
index 01d69f1f4..32b160ac6 100644
--- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/Memo2HtmlHandler.java
+++ b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/Memo2HtmlHandler.java
@@ -28,7 +28,7 @@ public class Memo2HtmlHandler extends DefaultHandler implements SaxFilter {
 	@Override
 	public void startDocument() throws SAXException {
 
-		out.print("<html>" + "\n  <head>" + "\n    <title>Memo message</title>"
+		out.print("<html" + "\n  <head>" + "\n    <title>Memo message</title>"
 				+ "\n  </head>" + "\n  <body>");
 	}
 
diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/AssertXpathResult.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/mi/exam/testing/AssertXpathResult.java
similarity index 84%
rename from Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/AssertXpathResult.java
rename to Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/mi/exam/testing/AssertXpathResult.java
index d36d86304..ff0cb5d63 100644
--- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/AssertXpathResult.java
+++ b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/mi/exam/testing/AssertXpathResult.java
@@ -1,4 +1,4 @@
-package de.hdm_stuttgart.de.testing.dom;
+package de.hdm_stuttgart.de.mi.exam.testing;
 
 /**
  * @author goik
diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/DomAssert.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/mi/exam/testing/DomAssert.java
similarity index 98%
rename from Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/DomAssert.java
rename to Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/mi/exam/testing/DomAssert.java
index 6d5cc5271..f8dc7676e 100644
--- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/DomAssert.java
+++ b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/mi/exam/testing/DomAssert.java
@@ -1,4 +1,4 @@
-package de.hdm_stuttgart.de.testing.dom;
+package de.hdm_stuttgart.de.mi.exam.testing;
 
 import java.util.List;
 
diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/SaxFilterTest.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/mi/exam/testing/SaxFilterTest.java
similarity index 71%
rename from Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/SaxFilterTest.java
rename to Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/mi/exam/testing/SaxFilterTest.java
index ffd28114d..0cfc85502 100644
--- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/SaxFilterTest.java
+++ b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/mi/exam/testing/SaxFilterTest.java
@@ -1,4 +1,4 @@
-package de.hdm_stuttgart.de.testing.dom;
+package de.hdm_stuttgart.de.mi.exam.testing;
 
 import java.io.BufferedReader;
 import java.io.FileNotFoundException;
@@ -13,6 +13,8 @@ import javax.xml.parsers.SAXParserFactory;
 import org.jdom2.Element;
 import org.jdom2.JDOMException;
 import org.jdom2.input.SAXBuilder;
+import org.junit.Assume;
+import org.junit.Before;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
 
@@ -28,7 +30,7 @@ public abstract class SaxFilterTest {
 
 	public final String xmlInputFileName, htmlOutputFileName;
 	final SaxFilter saxHandler;
-	protected static String errorInitString = null;
+	protected static String initializationErrorString = null;
 
 	protected static Element htmlRootElement = null;
 
@@ -39,14 +41,14 @@ public abstract class SaxFilterTest {
 		htmlOutputFileName = xmlInputFileName + resultFileExtension;
 		this.saxHandler = saxHandler;
 
-		if (null == htmlRootElement) {
+		if (null == htmlRootElement && null == initializationErrorString) {
 
 			final PrintStream out;
 
 			try {
 				out = new PrintStream(htmlOutputFileName);
 			} catch (FileNotFoundException e1) {
-				errorInitString = "Unable to open file '" + htmlOutputFileName
+				initializationErrorString = "Unable to open file '" + htmlOutputFileName
 						+ "' for writing";
 				return;
 			}
@@ -62,13 +64,13 @@ public abstract class SaxFilterTest {
 				xmlReader.setErrorHandler(new StandardErrorHandler());
 
 			} catch (SAXException | ParserConfigurationException e) {
-				errorInitString = "Unable to create XMLparser instance: " + e.getLocalizedMessage();
+				initializationErrorString = "Unable to create XMLparser instance: " + e.getLocalizedMessage();
 				return;
 			}
 			try {
 				xmlReader.parse(xmlInputFileName);
 			} catch (SAXException | IOException e) {
-				errorInitString = "Unable parse file '" + xmlInputFileName
+				initializationErrorString = "Unable parse file '" + xmlInputFileName
 						+ "': " + e.getLocalizedMessage();
 				return;
 			} 
@@ -80,18 +82,21 @@ public abstract class SaxFilterTest {
 			final SAXBuilder parser = new SAXBuilder();
 
 			try {
-				htmlRootElement = parser.build(htmlOutputFileName)
-						.getRootElement();
+				htmlRootElement = parser.build(htmlOutputFileName).getRootElement();
 			} catch (JDOMException | IOException e1) {
 				System.err.print(
-				errorInitString = "Unable to parse file '" + htmlOutputFileName
-						+ "':\n" + e1.getLocalizedMessage() +
-						"\n, exiting");
-				
-				System.exit(1);
+				initializationErrorString = "Unable to parse file '" + htmlOutputFileName
+						+ "':\n" + e1.getLocalizedMessage());
+				return;
 			}
 		}
 	}
+	
+   @Before
+   public void checkWellFormedness() {
+      Assume.assumeTrue("Previous error:" + initializationErrorString, null == initializationErrorString);
+      //Assert.assertNull("Unable to parse generated file:" + errorInitString, errorInitString);
+   }
 
 	private void printResultToStdout() {
 		try {
@@ -103,7 +108,7 @@ public abstract class SaxFilterTest {
 			}
 			saxResult.close();
 		} catch (IOException e) {
-			errorInitString = "Unable to open expected result output file '"
+			initializationErrorString = "Unable to open expected result output file '"
 					+ htmlOutputFileName + "' :" + e.getLocalizedMessage();
 		}
 	}
diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/sda1/saxhtml/v1/test/TestSimpleSaxTransform.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/sda1/saxhtml/v1/test/TestSimpleSaxTransform.java
index 8cfbef0fd..ffb786ecc 100644
--- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/sda1/saxhtml/v1/test/TestSimpleSaxTransform.java
+++ b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/sda1/saxhtml/v1/test/TestSimpleSaxTransform.java
@@ -1,10 +1,9 @@
 package de.hdm_stuttgart.de.sda1.saxhtml.v1.test;
 
-import org.junit.Assert;
 import org.junit.Test;
 
-import de.hdm_stuttgart.de.testing.dom.SaxFilterTest;
-import de.hdm_stuttgart.de.testing.dom.DomAssert;
+import de.hdm_stuttgart.de.mi.exam.testing.DomAssert;
+import de.hdm_stuttgart.de.mi.exam.testing.SaxFilterTest;
 import de.hdm_stuttgart.mi.sda1.saxhtml.v1.Memo2HtmlHandler;
 
 /**
@@ -17,10 +16,6 @@ public class TestSimpleSaxTransform extends SaxFilterTest {
       super("src/main/resources/memo.xml", new Memo2HtmlHandler(), ".1.html");
    }
    
-   @Test public void checkWellFormedness() {
-      Assert.assertNull("Unable to parse generated file:" + errorInitString, errorInitString);
-   }
-   
    @Test public void testSenderInHeader() {
       DomAssert.assertSingleNodeContent("<title>Memo message</title> must be the only child of <head>", htmlRootElement, "head/*", "title", "Memo message");
    }
diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/sda1/saxhtml/v2/test/TestComplexSaxTransform.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/sda1/saxhtml/v2/test/TestComplexSaxTransform.java
index 8fb9da9e6..418be404e 100644
--- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/sda1/saxhtml/v2/test/TestComplexSaxTransform.java
+++ b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/sda1/saxhtml/v2/test/TestComplexSaxTransform.java
@@ -2,8 +2,8 @@ package de.hdm_stuttgart.de.sda1.saxhtml.v2.test;
 
 import org.junit.Test;
 
-import de.hdm_stuttgart.de.testing.dom.SaxFilterTest;
-import de.hdm_stuttgart.de.testing.dom.DomAssert;
+import de.hdm_stuttgart.de.mi.exam.testing.DomAssert;
+import de.hdm_stuttgart.de.mi.exam.testing.SaxFilterTest;
 import de.hdm_stuttgart.mi.sda1.saxhtml.v2.Memo2HtmlHandler;
 
 /**
-- 
GitLab