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));
- }*/
}