Author: ugo Date: Sun Oct 24 23:12:42 2004 New Revision: 55488 Removed: cocoon/trunk/src/test/org/apache/cocoon/generation/FileGeneratorTestCase.xtest Modified: cocoon/trunk/src/test/org/apache/cocoon/acting/ResourceExistsActionTestCase.java cocoon/trunk/src/test/org/apache/cocoon/generation/FileGeneratorTestCase.java Log: Refactoring some tests to use mocks
Modified: cocoon/trunk/src/test/org/apache/cocoon/acting/ResourceExistsActionTestCase.java ============================================================================== --- cocoon/trunk/src/test/org/apache/cocoon/acting/ResourceExistsActionTestCase.java (original) +++ cocoon/trunk/src/test/org/apache/cocoon/acting/ResourceExistsActionTestCase.java Sun Oct 24 23:12:42 2004 @@ -43,7 +43,6 @@ public void testExists() throws Exception { String src = "don't care"; Parameters parameters = new Parameters(); - ResourceExistsAction action = new ResourceExistsAction(); action.enableLogging(new MockLogger(action.getClass())); Mock resolver = new Mock(SourceResolver.class); @@ -62,7 +61,6 @@ public void testNotExists() throws Exception { String src = "don't care"; Parameters parameters = new Parameters(); - ResourceExistsAction action = new ResourceExistsAction(); action.enableLogging(new MockLogger(action.getClass())); Mock resolver = new Mock(SourceResolver.class); Modified: cocoon/trunk/src/test/org/apache/cocoon/generation/FileGeneratorTestCase.java ============================================================================== --- cocoon/trunk/src/test/org/apache/cocoon/generation/FileGeneratorTestCase.java (original) +++ cocoon/trunk/src/test/org/apache/cocoon/generation/FileGeneratorTestCase.java Sun Oct 24 23:12:42 2004 @@ -16,41 +16,166 @@ package org.apache.cocoon.generation; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + import org.apache.avalon.framework.parameters.Parameters; -import org.apache.cocoon.SitemapComponentTestCase; +import org.apache.avalon.framework.service.ServiceManager; +import org.apache.cocoon.MockLogger; +import org.apache.cocoon.ProcessingException; +import org.apache.cocoon.components.source.SourceUtil; +import org.apache.cocoon.environment.SourceResolver; +import org.apache.cocoon.xml.WhitespaceFilter; +import org.apache.cocoon.xml.dom.DOMBuilder; +import org.apache.excalibur.source.Source; +import org.apache.excalibur.source.impl.ResourceSource; +import org.apache.excalibur.xml.sax.SAXParser; +import org.custommonkey.xmlunit.Diff; +import org.jmock.Mock; +import org.jmock.MockObjectTestCase; +import org.w3c.dom.Document; +import org.xml.sax.ContentHandler; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.XMLReader; +import org.xml.sax.ext.LexicalHandler; +import org.xml.sax.helpers.XMLReaderFactory; /** * * @version CVS $Id$ */ -public class FileGeneratorTestCase extends SitemapComponentTestCase { - +public class FileGeneratorTestCase extends MockObjectTestCase { + private Map objectModel = new HashMap(); + private SAXParser parser; + private Mock manager = new Mock(ServiceManager.class); + + public void setUp() throws SAXException { + final XMLReader xmlReader = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser"); + parser = new SAXParser() { + + public void parse(InputSource src, + ContentHandler contentHandler) throws SAXException, IOException { + xmlReader.setContentHandler(contentHandler); + xmlReader.parse(src); + } + + public void parse(InputSource src, + ContentHandler contentHandler, + LexicalHandler lexicalHandler) throws SAXException, IOException { + parse(src, contentHandler); + } + + }; + } + public void testFileGenerator() throws Exception { - - System.out.println("testFileGenerator()"); - - String type = "file"; String src = "resource://org/apache/cocoon/generation/FileGeneratorTestCase.source.xml"; Parameters parameters = new Parameters(); String result = "resource://org/apache/cocoon/generation/FileGeneratorTestCase.source.xml"; + FileGenerator generator = new FileGenerator(); + generator.enableLogging(new MockLogger(generator.getClass())); + manager.expects(atLeastOnce()).method("lookup").with(same(SAXParser.ROLE)). + will(returnValue(parser)); + manager.expects(once()).method("release").with(same(parser)); + Mock resolver = new Mock(SourceResolver.class); + Source source = new ResourceSource(src); + resolver.expects(once()).method("resolveURI").with(same(src)). + will(returnValue(source)); + resolver.expects(once()).method("release").with(same(source)); + generator.service((ServiceManager) manager.proxy()); + generator.setup((SourceResolver) resolver.proxy(), objectModel, src, parameters); + DOMBuilder builder = new DOMBuilder(); + generator.setConsumer(new WhitespaceFilter(builder)); + generator.generate(); + assertEqual(load(result), builder.getDocument()); + } - assertEqual(load(result), generate(type, src, parameters)); + protected Document load(String src) throws ProcessingException, SAXException, IOException { + Source source = new ResourceSource(src); + manager.expects(atLeastOnce()).method("lookup").with(same(SAXParser.ROLE)). + will(returnValue(parser)); + manager.expects(once()).method("release").with(same(parser)); + DOMBuilder builder = new DOMBuilder(); + SourceUtil.parse((ServiceManager) manager.proxy(), source, new WhitespaceFilter(builder)); + return builder.getDocument(); + } + + /** + * Compare two XML documents provided as strings + * @param control Control document + * @param test Document to test + * @return Diff object describing differences in documents + */ + public final Diff compareXML(Document control, Document test) { + return new Diff(control, test); } - /* - All comments get lost. The comments within the doctype and _also_ the comments - within the document. + /** + * Assert that the result of an XML comparison is similar. + * + * @param msg The assertion message + * @param expected The expected XML document + * @param actual The actual XML Document + */ + public final void assertEqual(String msg, Document expected, Document actual) { - public void testBUG17763() { - String type = "file"; - String src = "resource://org/apache/cocoon/generation/filetest-input1.xml"; - Parameters parameters = new Parameters(); - String result = "resource://org/apache/cocoon/generation/filetest-result1.xml"; + expected.getDocumentElement().normalize(); + actual.getDocumentElement().normalize(); + + Diff diff = compareXML(expected, actual); + + assertEquals(msg + ", " + diff.toString(), true, diff.similar()); + } - //print(generate(type, src, parameters)); + /** + * Assert that the result of an XML comparison is similar. + * + * @param expected The expected XML document + * @param actual The actual XML Document + */ + public final void assertEqual(Document expected, Document actual) { - //print(load(result)); + expected.getDocumentElement().normalize(); + actual.getDocumentElement().normalize(); + + Diff diff = compareXML(expected, actual); + + assertEquals("Test if the assertion document is equal, " + diff.toString(), true, diff.similar()); + } + + /** + * Assert that the result of an XML comparison is identical. + * + * @param msg The assertion message + * @param expected The expected XML document + * @param actual The actual XML Document + */ + public final void assertIdentical(String msg, Document expected, Document actual) { + + expected.getDocumentElement().normalize(); + actual.getDocumentElement().normalize(); + + Diff diff = compareXML(expected, actual); + + assertEquals(msg + ", " + diff.toString(), true, diff.identical()); + } + + /** + * Assert that the result of an XML comparison is identical. + * + * @param expected The expected XML document + * @param actual The actual XML Document + */ + public final void assertIdentical(Document expected, Document actual) { + + expected.getDocumentElement().normalize(); + actual.getDocumentElement().normalize(); + + Diff diff = compareXML(expected, actual); + + assertEquals("Test if the assertion document is equal, " + diff.toString(), true, diff.identical()); + } - //assertEqual(load(result), generate(type, src, parameters)); - }*/ }