1 16 17 package org.apache.cocoon.woody.datatype; 18 19 import java.io.Writer ; 20 import java.util.Locale ; 21 22 import javax.xml.parsers.DocumentBuilder ; 23 import javax.xml.parsers.DocumentBuilderFactory ; 24 import javax.xml.transform.TransformerFactory ; 25 import javax.xml.transform.dom.DOMSource ; 26 import javax.xml.transform.stream.StreamResult ; 27 28 import org.apache.cocoon.core.container.ContainerTestCase; 29 import org.apache.cocoon.woody.Constants; 30 import org.apache.cocoon.xml.dom.DOMBuilder; 31 import org.apache.excalibur.source.impl.ResourceSource; 32 import org.custommonkey.xmlunit.Diff; 33 import org.w3c.dom.Document ; 34 import org.w3c.dom.Element ; 35 36 40 public class DynamicSelectionListTestCase extends ContainerTestCase { 41 42 protected DatatypeManager datatypeManager; 43 protected DocumentBuilder parser; 44 45 48 protected void setUp() throws Exception { 49 super.setUp(); 50 datatypeManager = (DatatypeManager) this.lookup(DatatypeManager.ROLE); 51 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 52 factory.setNamespaceAware(true); 53 parser = factory.newDocumentBuilder(); 54 } 55 56 59 protected void tearDown() throws Exception { 60 if (datatypeManager != null) { 61 this.release(datatypeManager); 62 } 63 super.tearDown(); 64 } 65 66 71 public void testGenerateSaxFragment() throws Exception { 72 DOMBuilder dest = new DOMBuilder(); 73 ResourceSource source = 74 new ResourceSource("resource://org/apache/cocoon/woody/datatype/DynamicSelectionListTestCase.source.xml"); 75 Document sourceDoc = parser.parse(source.getInputStream()); 76 Element datatypeElement = (Element ) sourceDoc.getElementsByTagNameNS(Constants.WD_NS, "convertor").item(0); 77 Datatype datatype = datatypeManager.createDatatype(datatypeElement, false); 78 DynamicSelectionList list = 79 new DynamicSelectionList(datatype, null, this.getManager()); 80 list.generateSaxFragment(dest, Locale.ENGLISH, source); 81 ResourceSource expectedSource = 82 new ResourceSource("resource://org/apache/cocoon/woody/datatype/DynamicSelectionListTestCase.dest.xml"); 83 Document expected = parser.parse(expectedSource.getInputStream()); 84 assertEqual("Test if output is what is expected", 85 expected, dest.getDocument()); 86 } 87 88 94 private void assertEqual(String message, Document expected, Document actual) { 95 expected.getDocumentElement().normalize(); 96 actual.getDocumentElement().normalize(); 97 actual.getDocumentElement().setAttribute(Constants.WI_PREFIX, 101 Constants.WI_NS); 102 Diff diff = new Diff(expected, actual); 103 assertTrue(message + ", " + diff.toString(), diff.similar()); 104 } 105 106 111 public final void print(Document document, Writer out) { 112 TransformerFactory factory = TransformerFactory.newInstance(); 113 try { 114 javax.xml.transform.Transformer serializer = 115 factory.newTransformer(); 116 serializer.transform( 117 new DOMSource (document), 118 new StreamResult (out)); 119 out.write('\n'); 120 } catch (Exception e) { 121 e.printStackTrace(); 122 } 123 } 124 } 125 | Popular Tags |