diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/tools/ContentRedirect.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/tools/SaxFilter.java similarity index 81% rename from Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/tools/ContentRedirect.java rename to Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/tools/SaxFilter.java index 8c27ccce0c413cba216528e833e207a29f2cc436..bd105d01fdbf8702d9e2d6c26d58161a45ff99f1 100644 --- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/tools/ContentRedirect.java +++ b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/tools/SaxFilter.java @@ -4,7 +4,7 @@ import java.io.PrintStream; import org.xml.sax.ContentHandler; -public interface ContentRedirect extends ContentHandler { +public interface SaxFilter extends ContentHandler { /** * Allow output redirection. diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/MyErrorHandler.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/tools/StandardErrorHandler.java similarity index 88% rename from Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/MyErrorHandler.java rename to Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/tools/StandardErrorHandler.java index 1fce5e72ba64cc54e3195ac822c4c2e1a8605947..cb23819bf28efc1ddf8f0449884b44cc0e6e62e1 100644 --- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/MyErrorHandler.java +++ b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/tools/StandardErrorHandler.java @@ -1,11 +1,11 @@ -package de.hdm_stuttgart.mi.sda1.saxhtml.v1; +package de.hdm_stuttgart.mi.sda1.saxhtml.tools; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.ErrorHandler; /** Handle parsing errors */ -public class MyErrorHandler implements ErrorHandler { +public class StandardErrorHandler implements ErrorHandler { /** @see ErrorHandler#warning(SAXParseException) */ public void warning(SAXParseException e) { System.err.println("[Warning]" + getLocationString(e)); diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/Driver.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/Driver.java deleted file mode 100644 index 1a3cd8f294bc311b7d3c83a64c606af9f74bab85..0000000000000000000000000000000000000000 --- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/Driver.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.hdm_stuttgart.mi.sda1.saxhtml.v1; - -/** Driver */ -public class Driver { - /** @param argv unused */ - public static void main(String argv[]) { - try{ - Memo2Html memo2html = new Memo2Html(new Memo2HtmlHandler()); - memo2html.parse("src/main/resources/memo.xml"); - - } catch (Exception e){ - e.printStackTrace(System.err); - } - } -} \ No newline at end of file diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/Memo2Html.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/Memo2Html.java deleted file mode 100644 index ef3ccc5541a4ce0a7f4d9a57f294cf27a5714895..0000000000000000000000000000000000000000 --- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/Memo2Html.java +++ /dev/null @@ -1,49 +0,0 @@ -package de.hdm_stuttgart.mi.sda1.saxhtml.v1; - -import java.io.IOException; - -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; - -import org.xml.sax.ContentHandler; -import org.xml.sax.SAXException; -import org.xml.sax.XMLReader; - -/** Parser, content- and error handler assembly */ -public class Memo2Html { - - private final XMLReader xmlReader; - private final MyErrorHandler errorHandler = new MyErrorHandler(); - - /** - * @param out - * @throws SAXException - * Parsing may fail. - * @throws ParserConfigurationException - * Unable to instantiate parser. - */ - public Memo2Html(final ContentHandler handler) throws SAXException, - ParserConfigurationException { - final SAXParserFactory saxPf = SAXParserFactory.newInstance(); - final SAXParser saxParser = saxPf.newSAXParser(); - xmlReader = saxParser.getXMLReader(); - - xmlReader.setContentHandler(handler); - xmlReader.setErrorHandler(errorHandler); - } - - /** - * Parse an existing memo instance and create HTML output. - * - * @param uri - * The resource to be parsed - * @throws IOException - * Access related problems - * @throws SAXException - * Parsing may fail - */ - public void parse(final String uri) throws IOException, SAXException { - xmlReader.parse(uri); - } -} \ No newline at end of file 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 7e8189ad00daa285369f461487beca5c8ead4998..01d69f1f407147b5a72d3c52d534237f790949ec 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 @@ -6,13 +6,13 @@ import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; -import de.hdm_stuttgart.mi.sda1.saxhtml.tools.ContentRedirect; +import de.hdm_stuttgart.mi.sda1.saxhtml.tools.SaxFilter; /** * Turning <memo> documents to HTML * */ -public class Memo2HtmlHandler extends DefaultHandler implements ContentRedirect { +public class Memo2HtmlHandler extends DefaultHandler implements SaxFilter { private PrintStream out; diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/package-info.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/package-info.java deleted file mode 100644 index 58d138977c5d7cd36960680fdae2bc8c0a565e67..0000000000000000000000000000000000000000 --- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v1/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Create HTML output from XML data sources - */ -package de.hdm_stuttgart.mi.sda1.saxhtml.v1; \ No newline at end of file diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v2/Driver.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v2/Driver.java deleted file mode 100644 index 99616e0b9355e6a616dbb4de9449938da16b8165..0000000000000000000000000000000000000000 --- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v2/Driver.java +++ /dev/null @@ -1,17 +0,0 @@ -package de.hdm_stuttgart.mi.sda1.saxhtml.v2; - -import de.hdm_stuttgart.mi.sda1.saxhtml.v1.Memo2HtmlHandler; - -/** Driver */ -public class Driver { - /** @param argv unused */ - public static void main(String argv[]) { - try{ - Memo2Html memo2html = new Memo2Html(new Memo2HtmlHandler()); - memo2html.parse("src/main/resources/memo.xml"); - - } catch (Exception e){ - e.printStackTrace(System.err); - } - } -} \ No newline at end of file diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v2/Memo2Html.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v2/Memo2Html.java deleted file mode 100644 index c575ecd00f1079d4489cb3cd30713ba5638f507b..0000000000000000000000000000000000000000 --- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v2/Memo2Html.java +++ /dev/null @@ -1,51 +0,0 @@ -package de.hdm_stuttgart.mi.sda1.saxhtml.v2; - -import java.io.IOException; - -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; - -import org.xml.sax.ContentHandler; -import org.xml.sax.SAXException; -import org.xml.sax.XMLReader; - -import de.hdm_stuttgart.mi.sda1.saxhtml.v1.MyErrorHandler; - -/** Parser, content- and error handler assembly */ -public class Memo2Html { - - private final XMLReader xmlReader; - private final MyErrorHandler errorHandler = new MyErrorHandler(); - - /** - * @param out Write output to stream - * @throws SAXException - * Parsing may fail. - * @throws ParserConfigurationException - * Unable to instantiate parser. - */ - public Memo2Html(final ContentHandler handler) throws SAXException, - ParserConfigurationException { - final SAXParserFactory saxPf = SAXParserFactory.newInstance(); - final SAXParser saxParser = saxPf.newSAXParser(); - xmlReader = saxParser.getXMLReader(); - - xmlReader.setContentHandler(handler); - xmlReader.setErrorHandler(errorHandler); - } - - /** - * Parse an existing memo instance and create HTML output. - * - * @param uri - * The resource to be parsed - * @throws IOException - * Access related problems - * @throws SAXException - * Parsing may fail - */ - public void parse(final String uri) throws IOException, SAXException { - xmlReader.parse(uri); - } -} \ No newline at end of file diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v2/Memo2HtmlHandler.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v2/Memo2HtmlHandler.java index b898eef09cb575052c4b67b885846a18bbaa7fa7..2d8422c5afbde468c2ef05e10438e5a8801858a9 100644 --- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v2/Memo2HtmlHandler.java +++ b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v2/Memo2HtmlHandler.java @@ -8,13 +8,13 @@ import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; -import de.hdm_stuttgart.mi.sda1.saxhtml.tools.ContentRedirect; +import de.hdm_stuttgart.mi.sda1.saxhtml.tools.SaxFilter; /** * Turning <memo> documents to HTML * */ -public class Memo2HtmlHandler extends DefaultHandler implements ContentRedirect { +public class Memo2HtmlHandler extends DefaultHandler implements SaxFilter { private PrintStream out; diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v2/package-info.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v2/package-info.java deleted file mode 100644 index f3bbf67a292c8f105fc534388b883e2b7e97ab19..0000000000000000000000000000000000000000 --- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/main/java/de/hdm_stuttgart/mi/sda1/saxhtml/v2/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Create HTML output from XML data sources - */ -package de.hdm_stuttgart.mi.sda1.saxhtml.v2; \ No newline at end of file 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 f8bbf56bc58fcd24d629d5bd2c7edaea288648ba..8cfbef0fd97c3cafb6bab6b97c2ee36be37c63ea 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 @@ -3,7 +3,7 @@ package de.hdm_stuttgart.de.sda1.saxhtml.v1.test; import org.junit.Assert; import org.junit.Test; -import de.hdm_stuttgart.de.testing.dom.ConversionTest; +import de.hdm_stuttgart.de.testing.dom.SaxFilterTest; import de.hdm_stuttgart.de.testing.dom.DomAssert; import de.hdm_stuttgart.mi.sda1.saxhtml.v1.Memo2HtmlHandler; @@ -11,7 +11,7 @@ import de.hdm_stuttgart.mi.sda1.saxhtml.v1.Memo2HtmlHandler; * Unit testing XML to HTML output */ @SuppressWarnings("javadoc") -public class TestSimpleSaxTransform extends ConversionTest { +public class TestSimpleSaxTransform extends SaxFilterTest { public TestSimpleSaxTransform() { super("src/main/resources/memo.xml", new Memo2HtmlHandler(), ".1.html"); 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 9f981640c945a546fa0b84e2619042f2b6f2e2de..8fb9da9e6f8c78588e210214a3b5576173782934 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,7 +2,7 @@ package de.hdm_stuttgart.de.sda1.saxhtml.v2.test; import org.junit.Test; -import de.hdm_stuttgart.de.testing.dom.ConversionTest; +import de.hdm_stuttgart.de.testing.dom.SaxFilterTest; import de.hdm_stuttgart.de.testing.dom.DomAssert; import de.hdm_stuttgart.mi.sda1.saxhtml.v2.Memo2HtmlHandler; @@ -11,14 +11,14 @@ import de.hdm_stuttgart.mi.sda1.saxhtml.v2.Memo2HtmlHandler; */ @SuppressWarnings("javadoc") -public class TestComplexSaxTransform extends ConversionTest { +public class TestComplexSaxTransform extends SaxFilterTest { public TestComplexSaxTransform() { super("src/main/resources/memo.xml", new Memo2HtmlHandler(), ".2.html"); } @Test public void testSenderInHeader() { - DomAssert.assertSingleNodeContent("<title>Memo from M. Goik</title> must be child of <head>", htmlRootElement, "head/title", "Memo from M. Goik"); + DomAssert.assertSingleNodeContent("<title>Memo from M. Goik</title> must be child of <head>", htmlRootElement, "head/title", "title", "Memo from M. Goik"); } @Test public void testNumberfRecipients() { DomAssert.assertNumberOfNodes("There should be two <li> elements matching two recipients", htmlRootElement, "body/dl/dd/ul/li", 2); 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/testing/dom/DomAssert.java index 02f9ba8541a17ca9ad016a3c8c7063e87c23800d..6d5cc527160c8ec88b7a9993dc8ba827f2d1686d 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/testing/dom/DomAssert.java @@ -7,85 +7,77 @@ import org.jdom2.xpath.XPathExpression; import org.jdom2.xpath.XPathFactory; /** - * @author goik + * Helper methods for analyzing XML result documents * */ public class DomAssert { - - + final static XPathFactory xpf = XPathFactory.instance(); /** - * @param msg - * @param context - * @param xpath - * @param expectedNodeCount - */ -public static void assertNumberOfNodes(final String msg, final Element context, final String xpath, int expectedNodeCount) { - - @SuppressWarnings({ "unchecked", "rawtypes" }) - final XPathExpression<Element> xpathExpr = (XPathExpression<Element>) (XPathExpression) xpf.compile(xpath); + * A given XPath expression is being evaluated for returning an expected number of element nodes + * + * @param msg An informative text explaining an error's cause. + * @param context XPath evaluation will start from this node + * @param xpath + * @param expectedNodeCount + */ + public static void assertNumberOfNodes(final String msg, final Element context, + final String xpath, int expectedNodeCount) { - final List<Element> matchedNodes = xpathExpr.evaluate(context); - - if (expectedNodeCount != matchedNodes.size()) { - throw new AssertXpathResult(msg + "\nExpected " + expectedNodeCount + " node" + (expectedNodeCount == 1? "":"s") + " for xpath '" + xpath + - "' but found " + matchedNodes.size()); - } - } - - /** - * @param msg - * @param context - * @param xpath - * @param expectedContent - */ -public static void assertSingleNodeContent(final String msg, final Element context, final String xpath, String expectedContent) { - @SuppressWarnings({ "unchecked", "rawtypes" }) - final XPathExpression<Element> xpathExpr = (XPathExpression<Element>) (XPathExpression) xpf.compile(xpath); + final XPathExpression<Element> xpathExpr = (XPathExpression<Element>) (XPathExpression) xpf + .compile(xpath); final List<Element> matchedNodes = xpathExpr.evaluate(context); - if (1 == matchedNodes.size()) { - final String content = matchedNodes.get(0).getValue(); - if (!content.equals(expectedContent)) { - throw new AssertXpathResult(msg + "\nExpected content '" + expectedContent + "' for xpath '" + xpath + "' but found '" + content + "'"); - } - } else { - throw new AssertXpathResult("\nExactly one node expected for xpath '" + xpath + "' but found " + matchedNodes.size()); + + if (expectedNodeCount != matchedNodes.size()) { + throw new AssertXpathResult(msg + "\nExpected " + expectedNodeCount + + " node" + (expectedNodeCount == 1 ? "" : "s") + " for xpath '" + + xpath + "' but found " + matchedNodes.size()); } } /** - * @param msg - * @param context - * @param xpath - * @param expectedTagName - * @param expectedContent - */ -public static void assertSingleNodeContent(final String msg, final Element context, final String xpath, final String expectedTagName, String expectedContent) { - - @SuppressWarnings({ "unchecked", "rawtypes" }) - final XPathExpression<Element> xpathExpr = (XPathExpression<Element>) (XPathExpression) xpf.compile(xpath); + * A given XPath expression is being evaluated for returning exactly one element node of simple text content + * containing a given text. + * + * @param msg + * @param context + * @param xpath + * @param expectedTagName Will be evaluated unless being set to null + * @param expectedContent Will be evaluated unless being set to null + */ + public static void assertSingleNodeContent(final String msg, + final Element context, final String xpath, final String expectedTagName, + String expectedContent) { + @SuppressWarnings({ "unchecked", "rawtypes" }) + final XPathExpression<Element> xpathExpr = (XPathExpression<Element>) (XPathExpression) xpf + .compile(xpath); final List<Element> matchedNodes = xpathExpr.evaluate(context); + if (1 == matchedNodes.size()) { - final Element element = matchedNodes.get(0); - - final String elementTagName = element.getName(); - if (!expectedTagName.equals(elementTagName)) { - throw new AssertXpathResult(msg + "\nExpected <" + expectedTagName + "> for xpath '" + xpath + "' but found <" + - elementTagName + ">"); + + if (null != expectedTagName) { + final String actualTagName = element.getName(); + if (!expectedTagName.equals(actualTagName)) { + throw new AssertXpathResult(msg + "\nExpected <" + expectedTagName + + "> for xpath '" + xpath + "' but found <" + actualTagName + ">"); + } } - final String content = element.getValue(); - if (!expectedContent.equals(content)) { - throw new AssertXpathResult(msg + "\nExpected element content '" + expectedContent + "' for xpath '" + xpath + "' but found '" + - content + "'"); + if (null != expectedContent) { + final String actualContent = element.getValue(); + if (!expectedContent.equals(actualContent)) { + throw new AssertXpathResult(msg + "\nExpected element content '" + + expectedContent + "' for xpath '" + xpath + "' but found '" + + actualContent + "'"); + } } - } else { - throw new AssertXpathResult("Exactly node expected for xpath '" + xpath + "' but found " + matchedNodes.size()); + throw new AssertXpathResult("Exactly node expected for xpath '" + xpath + + "' but found " + matchedNodes.size()); } } } diff --git a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/ConversionTest.java b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/SaxFilterTest.java similarity index 68% rename from Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/ConversionTest.java rename to Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/SaxFilterTest.java index bd5c87eb05227b51717168005ac56f1ddf81d53e..ffd28114d2269a70d689b2863a41a20097ce2949 100644 --- a/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/ConversionTest.java +++ b/Sda1/Etest/SaxMemo2Html/SaxMemo2Hhtml_solution/src/test/java/de/hdm_stuttgart/de/testing/dom/SaxFilterTest.java @@ -7,32 +7,36 @@ import java.io.IOException; import java.io.PrintStream; import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.SAXBuilder; import org.xml.sax.SAXException; +import org.xml.sax.XMLReader; -import de.hdm_stuttgart.mi.sda1.saxhtml.tools.ContentRedirect; -import de.hdm_stuttgart.mi.sda1.saxhtml.v1.Memo2Html; +import de.hdm_stuttgart.mi.sda1.saxhtml.tools.SaxFilter; +import de.hdm_stuttgart.mi.sda1.saxhtml.tools.StandardErrorHandler; /** * Turning <memo> documents to HTML as being shown in sample document * memo.xml.2.sample.html */ @SuppressWarnings("javadoc") -public abstract class ConversionTest { +public abstract class SaxFilterTest { public final String xmlInputFileName, htmlOutputFileName; - final ContentRedirect saxHandler; + final SaxFilter saxHandler; protected static String errorInitString = null; protected static Element htmlRootElement = null; - protected ConversionTest(final String xmlInputFileName, - final ContentRedirect saxHandler, final String outputExtension) { + public SaxFilterTest(final String xmlInputFileName, + final SaxFilter saxHandler, + final String resultFileExtension) { this.xmlInputFileName = xmlInputFileName; - htmlOutputFileName = xmlInputFileName + outputExtension; + htmlOutputFileName = xmlInputFileName + resultFileExtension; this.saxHandler = saxHandler; if (null == htmlRootElement) { @@ -47,15 +51,22 @@ public abstract class ConversionTest { return; } saxHandler.setOutputStream(out); - final Memo2Html memo2html; + + final XMLReader xmlReader; try { - memo2html = new Memo2Html(saxHandler); - } catch (SAXException | ParserConfigurationException e2) { - e2.printStackTrace(); + final SAXParserFactory saxPf = SAXParserFactory.newInstance(); + final SAXParser saxParser = saxPf.newSAXParser(); + xmlReader = saxParser.getXMLReader(); + + xmlReader.setContentHandler(saxHandler); + xmlReader.setErrorHandler(new StandardErrorHandler()); + + } catch (SAXException | ParserConfigurationException e) { + errorInitString = "Unable to create XMLparser instance: " + e.getLocalizedMessage(); return; } try { - memo2html.parse(xmlInputFileName); + xmlReader.parse(xmlInputFileName); } catch (SAXException | IOException e) { errorInitString = "Unable parse file '" + xmlInputFileName + "': " + e.getLocalizedMessage();