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

Reply via email to