From e27f0f4551b8027267f907edff494e7fe2253a2d Mon Sep 17 00:00:00 2001 From: erik Date: Tue, 28 Mar 2006 09:51:01 +0000 Subject: [PATCH] --- .../xml/output-reportToHtml-report.xml | 63 +++++ .../org/wamblee/xml/reportToHtml-invalid.xsl | 99 ++++++++ .../xml/reportToHtml-nonwellformed.xsl | 99 ++++++++ .../test/org/wamblee/xml/reportToHtml.xsl | 1 + .../test/org/wamblee/xml/reportToHtml2.xsl | 101 ++++++++ .../test/org/wamblee/xml/reportToText.xsl | 9 + support/src/org/wamblee/xml/DomUtils.java | 10 + .../src/org/wamblee/xml/XslTransformer.java | 2 +- support/test/org/wamblee/xml/XmlUtils.java | 2 +- .../org/wamblee/xml/XslTransformerTest.java | 239 +++++++++++++++--- 10 files changed, 581 insertions(+), 44 deletions(-) create mode 100644 support/resources/test/org/wamblee/xml/output-reportToHtml-report.xml create mode 100644 support/resources/test/org/wamblee/xml/reportToHtml-invalid.xsl create mode 100644 support/resources/test/org/wamblee/xml/reportToHtml-nonwellformed.xsl create mode 100644 support/resources/test/org/wamblee/xml/reportToHtml2.xsl create mode 100644 support/resources/test/org/wamblee/xml/reportToText.xsl diff --git a/support/resources/test/org/wamblee/xml/output-reportToHtml-report.xml b/support/resources/test/org/wamblee/xml/output-reportToHtml-report.xml new file mode 100644 index 00000000..40f29fd3 --- /dev/null +++ b/support/resources/test/org/wamblee/xml/output-reportToHtml-report.xml @@ -0,0 +1,63 @@ + + + + KiSS crawler report + + +

KiSS crawler report

+

Successfully recorded programs

+ + + + + + + +
23:25 - 00:10: Wintertijd (Nederland + 1/Documentaire)
+
+ Some description MINSK - De presidentsverkiezingen + in Wit-Rusland zijn zondag met ruime cijfers gewonnen door + zittend president Aleksandr Loekasjenko. Dat bleek zondag uit + exitpolls uitgevoerd in opdracht van het totalitaire regime. Het + staatshoofd zou kunnen rekenen op ruim 82 procent van de + stemmen. Volgens de eerste gedeeltelijke uitslagen zou + Loekasjenko zelfs kunnen rekenen op bijna 89 procent. +
+
+
+

+

Possibly interesting programs

+

+ + + + + + + +
23:30 - 00:15: Brainiac (Discovery Channel/science)
+
+ Humor +
+
+
+

+

Category: horror

+

+ + + + + + + +
23:30 - 00:15: Andere tijden (Nederland 1/docu)
+
+ Documentaire +
+
+
+

+ + diff --git a/support/resources/test/org/wamblee/xml/reportToHtml-invalid.xsl b/support/resources/test/org/wamblee/xml/reportToHtml-invalid.xsl new file mode 100644 index 00000000..104234e1 --- /dev/null +++ b/support/resources/test/org/wamblee/xml/reportToHtml-invalid.xsl @@ -0,0 +1,99 @@ + + + + + + + + KiSS crawler report + + +

KiSS crawler report

+ + +

Possibly interesting programs

+ +
+ + No suitable programs found + + + + +
+ + +

+ + + +
+
+

+
+ + +

+ + + Successfully recorded programs + + + + Already recorded programs + + + + Conflicts with other recorded programs + + + + Programs that could not be recorded for + technical reasons. + + + +

+
+ + + + - : + + (/) + + + + +
+ + + +
+ + + + +
+ + + + + + + + + + + +

Category:

+ +
+
+ diff --git a/support/resources/test/org/wamblee/xml/reportToHtml-nonwellformed.xsl b/support/resources/test/org/wamblee/xml/reportToHtml-nonwellformed.xsl new file mode 100644 index 00000000..03d19083 --- /dev/null +++ b/support/resources/test/org/wamblee/xml/reportToHtml-nonwellformed.xsl @@ -0,0 +1,99 @@ + + + + + + + + KiSS crawler report + + +

KiSS crawler report

+ + +

Possibly interesting programs

+ + + + No suitable programs found + + + + +
+ + +

+ + + +
+
+

+
+ + +

+ + + Successfully recorded programs + + + + Already recorded programs + + + + Conflicts with other recorded programs + + + + Programs that could not be recorded for + technical reasons. + + + +

+
+ + + + - : + + (/) + + + + +
+ + + +
+ + + + +
+ + + + + + + + + + + +

Category:

+ +
+
+ diff --git a/support/resources/test/org/wamblee/xml/reportToHtml.xsl b/support/resources/test/org/wamblee/xml/reportToHtml.xsl index 44765a32..ce113d5a 100644 --- a/support/resources/test/org/wamblee/xml/reportToHtml.xsl +++ b/support/resources/test/org/wamblee/xml/reportToHtml.xsl @@ -1,6 +1,7 @@ + diff --git a/support/resources/test/org/wamblee/xml/reportToHtml2.xsl b/support/resources/test/org/wamblee/xml/reportToHtml2.xsl new file mode 100644 index 00000000..2cec21fe --- /dev/null +++ b/support/resources/test/org/wamblee/xml/reportToHtml2.xsl @@ -0,0 +1,101 @@ + + + + + + + + + + KiSS crawler report + + +

KiSS crawler report

+ + +

Possibly interesting programs

+ +
+ + No suitable programs found + + + + +
+ + +

+ + + +
+
+

+
+ + +

+ + + Successfully recorded programs + + + + Already recorded programs + + + + Conflicts with other recorded programs + + + + Programs that could not be recorded for + technical reasons. + + + +

+
+ + + + - : + + (/) + + + + +
+ + + +
+ + + + +
+ + + + + + + + + + + +

Category:

+ +
+
+ diff --git a/support/resources/test/org/wamblee/xml/reportToText.xsl b/support/resources/test/org/wamblee/xml/reportToText.xsl new file mode 100644 index 00000000..c1f7023c --- /dev/null +++ b/support/resources/test/org/wamblee/xml/reportToText.xsl @@ -0,0 +1,9 @@ + + + + + + Hello world! + + + diff --git a/support/src/org/wamblee/xml/DomUtils.java b/support/src/org/wamblee/xml/DomUtils.java index 75ba7f6d..3718debf 100644 --- a/support/src/org/wamblee/xml/DomUtils.java +++ b/support/src/org/wamblee/xml/DomUtils.java @@ -16,6 +16,7 @@ package org.wamblee.xml; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; @@ -56,6 +57,15 @@ public final class DomUtils { // Empty. } + /** + * Parses an XML document from a string. + * @param aDocument document. + * @return + */ + public static Document read(String aDocument) throws SAXException, ParserConfigurationException, IOException { + ByteArrayInputStream is = new ByteArrayInputStream(aDocument.getBytes()); + return read(is); + } /** * Parses an XML document from a stream. diff --git a/support/src/org/wamblee/xml/XslTransformer.java b/support/src/org/wamblee/xml/XslTransformer.java index 9cc70fed..3fd65bfe 100644 --- a/support/src/org/wamblee/xml/XslTransformer.java +++ b/support/src/org/wamblee/xml/XslTransformer.java @@ -167,7 +167,7 @@ public class XslTransformer { Transformer transformer = _factory.newTransformer(aXslt); transformer.transform(aSource, aResult); } catch (TransformerConfigurationException e) { - throw new RuntimeException( + throw new TransformerException( "Configuration problem of XSLT transformation", e); } } diff --git a/support/test/org/wamblee/xml/XmlUtils.java b/support/test/org/wamblee/xml/XmlUtils.java index 5c6bf43c..7d0fb123 100644 --- a/support/test/org/wamblee/xml/XmlUtils.java +++ b/support/test/org/wamblee/xml/XmlUtils.java @@ -67,7 +67,7 @@ public final class XmlUtils { */ public static void assertEquals(String aMsg, Document aExpected, Document aActual) { - assertEquals(aMsg, aExpected.getRootElement(), aActual.getRootElement()); + assertEquals(aMsg + "/" + aExpected.getRootElement().getName(), aExpected.getRootElement(), aActual.getRootElement()); } /** diff --git a/support/test/org/wamblee/xml/XslTransformerTest.java b/support/test/org/wamblee/xml/XslTransformerTest.java index cede6bb0..71c8e582 100644 --- a/support/test/org/wamblee/xml/XslTransformerTest.java +++ b/support/test/org/wamblee/xml/XslTransformerTest.java @@ -12,22 +12,25 @@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ + */ package org.wamblee.xml; import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Result; import javax.xml.transform.Source; +import javax.xml.transform.TransformerException; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import junit.framework.TestCase; +import org.springframework.core.io.ClassPathResource; import org.w3c.dom.Document; import org.wamblee.io.FileSystemUtils; import org.wamblee.io.InputResource; @@ -37,78 +40,230 @@ import org.wamblee.io.TestResource; * Tests the XSL transformer. */ public class XslTransformerTest extends TestCase { - + private static final String REPORT_XML = "report.xml"; + private static final String REPORT_TO_HTML_XSLT = "reportToHtml.xsl"; + private static final String REPORT_TO_HTML2_XSLT = "reportToHtml2.xsl"; + + private static final String REPORT_TO_HTML_INVALID_XSLT = "reportToHtml-invalid.xsl"; + + private static final String REPORT_TO_HTML_NONWELLFORMED_XSLT = "reportToHtml-nonwellformed.xsl"; + + private static final String REPORT_TO_TEXT_XSLT = "reportToText.xsl"; + + /** - * Transforms a file while using the default resolver, - * where the included file can be found. - * Verifies the transformation is done correctly. - * + * Transforms a file while using the default resolver, where the included + * file can be found. Verifies the transformation is done correctly. + * */ public void testTransformUsingDefaultResolver() throws Exception { XslTransformer transformer = new XslTransformer(); - - InputResource xmlResource = new TestResource(XslTransformerTest.class, REPORT_XML); - Source xslt = new StreamSource(new File( FileSystemUtils.getTestInputDir(XslTransformerTest.class), REPORT_TO_HTML_XSLT)); - - byte[] documentData = FileSystemUtils.read(xmlResource.getInputStream()).getBytes(); - DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); + + InputResource xmlResource = new TestResource(XslTransformerTest.class, + REPORT_XML); + Source xslt = new StreamSource( + new File(FileSystemUtils + .getTestInputDir(XslTransformerTest.class), + REPORT_TO_HTML_XSLT)); + + byte[] documentData = FileSystemUtils + .read(xmlResource.getInputStream()).getBytes(); + DocumentBuilder builder = DocumentBuilderFactory.newInstance() + .newDocumentBuilder(); Document document = builder.parse(xmlResource.getInputStream()); Source documentSource = new StreamSource(xmlResource.getInputStream()); - - Document output1 = transformer.transform(documentData, xslt); + + Document expected = DomUtils.read(new TestResource( + XslTransformerTest.class, "output-reportToHtml-report.xml") + .getInputStream()); + + Document output1 = transformer.transform(documentData, xslt); + XmlUtils.assertEquals("byte[] transform", expected, output1); + Document output2 = transformer.transform(document, xslt); - XmlUtils.assertEquals("output", output1, output2); - ByteArrayOutputStream os = new ByteArrayOutputStream(); + XmlUtils.assertEquals("document transform", expected, output2); + + ByteArrayOutputStream os = new ByteArrayOutputStream(); Result output = new StreamResult(os); transformer.transform(documentSource, output, xslt); - transformer.textTransform(documentData, xslt); + XmlUtils.assertEquals("document source transform", expected, DomUtils + .read(os.toString())); + + String result = transformer.textTransform(documentData, xslt); + XmlUtils + .assertEquals("text transform", expected, DomUtils.read(result)); } - + /** - * Transforms a file using the default resolver where the - * included file cannot be found. - * Verifies that a TransformerException is thrown. - * + * Transforms a file using the default resolver where the included file + * cannot be found. Verifies that a TransformerException is thrown. + * */ - public void testTransformUsingDefaultResolverFails() { - fail(); + public void testTransformUsingDefaultResolverFails() throws IOException { + XslTransformer transformer = new XslTransformer(); + + InputResource xmlResource = new TestResource(XslTransformerTest.class, + REPORT_XML); + Source xslt = new StreamSource(new File(FileSystemUtils + .getTestInputDir(XslTransformerTest.class), + REPORT_TO_HTML2_XSLT)); + + byte[] documentData = FileSystemUtils + .read(xmlResource.getInputStream()).getBytes(); + try { + Document output1 = transformer.transform(documentData, xslt); + } catch (TransformerException e) { + return; // ok + } + fail(); } - + /** - * Transforms a file using an invalid Xslt. - * Verifies that a TransformerException is thrown. - * + * Transforms a file using an invalid Xslt. Verifies that a + * TransformerException is thrown. + * */ - public void testTransformInvalidXslt() { - fail(); + public void testTransformInvalidXslt() throws IOException { + XslTransformer transformer = new XslTransformer(); + + InputResource xmlResource = new TestResource(XslTransformerTest.class, + REPORT_XML); + Source xslt = new StreamSource(new File(FileSystemUtils + .getTestInputDir(XslTransformerTest.class), + REPORT_TO_HTML_INVALID_XSLT)); + + byte[] documentData = FileSystemUtils + .read(xmlResource.getInputStream()).getBytes(); + try { + Document output1 = transformer.transform(documentData, xslt); + } catch (TransformerException e) { + return; // ok + } + fail(); } - + /** - * Transforms a file using a non-well formed xslt. - * Verifies that a TransformerException is thrown. - * + * Transforms a file using a non-well formed xslt. Verifies that a + * TransformerException is thrown. + * */ - public void testTransformNonWellformedXslt() { + public void testTransformNonWellformedXslt() throws IOException { + XslTransformer transformer = new XslTransformer(); + + InputResource xmlResource = new TestResource(XslTransformerTest.class, + REPORT_XML); + Source xslt = new StreamSource(new File(FileSystemUtils + .getTestInputDir(XslTransformerTest.class), + REPORT_TO_HTML_NONWELLFORMED_XSLT)); + + byte[] documentData = FileSystemUtils + .read(xmlResource.getInputStream()).getBytes(); + try { + Document output1 = transformer.transform(documentData, xslt); + } catch (TransformerException e) { + return; // ok + } fail(); } + + /** + * Transforms a file using a class path resolver. + * + */ + public void testTransformUsingClassPathResolver() throws Exception { + XslTransformer transformer = new XslTransformer(new ClasspathUriResolver()); + + InputResource xmlResource = new TestResource(XslTransformerTest.class, + REPORT_XML); + Source xslt = new StreamSource(new File(FileSystemUtils + .getTestInputDir(XslTransformerTest.class), + REPORT_TO_HTML2_XSLT)); + + byte[] documentData = FileSystemUtils + .read(xmlResource.getInputStream()).getBytes(); + + Document output1 = transformer.transform(documentData, xslt); + Document expected = DomUtils.read(new TestResource( + XslTransformerTest.class, "output-reportToHtml-report.xml") + .getInputStream()); + XmlUtils.assertEquals("doc", expected, output1); + } + + /** + * Transforms a file to text output. Verifies the file is transformed + * correctly. + * + */ + public void testTransformToTextOutput() throws Exception { + XslTransformer transformer = new XslTransformer(new ClasspathUriResolver()); + + InputResource xmlResource = new TestResource(XslTransformerTest.class, + REPORT_XML); + Source xslt = new StreamSource( + new File(FileSystemUtils + .getTestInputDir(XslTransformerTest.class), + REPORT_TO_TEXT_XSLT)); + + byte[] documentData = FileSystemUtils + .read(xmlResource.getInputStream()).getBytes(); + DocumentBuilder builder = DocumentBuilderFactory.newInstance() + .newDocumentBuilder(); + + String result = transformer.textTransform(documentData, xslt); + String expected = "Hello world!"; + assertEquals("text transform", expected, result); + } + /** - * Transforms a file using a class path resolver. + * Tests resolving a file using {@link XslTransformer#resolve(String)}. * */ - public void testTransformUsingClassPathResolver() { - fail(); + public void testResolveWithDefaultResolver() throws Exception { + XslTransformer transformer = new XslTransformer(); + File utilities = new File(FileSystemUtils.getTestInputDir(XslTransformerTest.class), "utilities.xsl"); + Source source = transformer.resolve(utilities.getAbsolutePath()); + assert(source instanceof StreamSource); + StreamSource ssource = (StreamSource)source; + String data = FileSystemUtils.read(ssource.getInputStream()); + String expected = FileSystemUtils.read(new ClassPathResource("org/wamblee/xml/utilities.xsl").getInputStream()); + assertEquals(expected, data); } - + /** - * Transforms a file to text output. - * Verifies the file is transformed correctly. + * Tests resolving a file using {@link XslTransformer#resolve(String)} with the + * default resolver where the file does not exist. * */ - public void testTransformToTextOutput() { + public void testResolveWithDefaultResolverFileNotFound() { + XslTransformer transformer = new XslTransformer(); + try { + Source source = transformer.resolve("org/wamblee/xml/utilities-nonexistent.xsl"); + } catch (TransformerException e) { + return; // ok + } fail(); } + + + /** + * Tests resolving a file using {@link XslTransformer#resolve(String)} with the + * default resolver. + * + */ + public void testResolveWithClasspathResolver() throws Exception { + XslTransformer transformer = new XslTransformer(new ClasspathUriResolver()); + Source source = transformer.resolve("org/wamblee/xml/utilities.xsl"); + assert(source instanceof StreamSource); + StreamSource ssource = (StreamSource)source; + String data = FileSystemUtils.read(ssource.getInputStream()); + String expected = FileSystemUtils.read(new ClassPathResource("org/wamblee/xml/utilities.xsl").getInputStream()); + assertEquals(expected, data); + } + } + + \ No newline at end of file -- 2.31.1