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.transformation.I18nTransformer; 30 import org.apache.cocoon.woody.Constants; 31 import org.apache.cocoon.woody.datatype.typeimpl.EnumType; 32 import org.apache.cocoon.xml.dom.DOMBuilder; 33 import org.apache.excalibur.source.impl.ResourceSource; 34 import org.custommonkey.xmlunit.Diff; 35 import org.w3c.dom.Document ; 36 37 41 public class EnumSelectionListTestCase extends ContainerTestCase { 42 43 protected DatatypeManager datatypeManager; 44 protected DocumentBuilder parser; 45 46 49 protected void setUp() throws Exception { 50 super.setUp(); 51 datatypeManager = (DatatypeManager) this.lookup(DatatypeManager.ROLE); 52 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 53 factory.setNamespaceAware(true); 54 parser = factory.newDocumentBuilder(); 55 } 56 57 60 protected void tearDown() throws Exception { 61 if (datatypeManager != null) { 62 this.release(datatypeManager); 63 } 64 super.tearDown(); 65 } 66 67 72 public void testGenerateSaxFragment() throws Exception { 73 DOMBuilder dest = new DOMBuilder(); 74 EnumSelectionList list = 75 new EnumSelectionList(Sex.class.getName(), new EnumType(), false); 76 list.generateSaxFragment(dest, Locale.ENGLISH); 77 ResourceSource expectedSource = 78 new ResourceSource("resource://org/apache/cocoon/woody/datatype/EnumSelectionListTestCase.dest-no-null.xml"); 79 Document expected = parser.parse(expectedSource.getInputStream()); 80 assertEqual("Test if output is what is expected", 81 expected, dest.getDocument()); 82 } 83 84 89 public void testGenerateSaxFragmentNullable() throws Exception { 90 DOMBuilder dest = new DOMBuilder(); 91 EnumSelectionList list = 92 new EnumSelectionList(Sex.class.getName(), new EnumType(), true); 93 list.generateSaxFragment(dest, Locale.ENGLISH); 94 ResourceSource expectedSource = 95 new ResourceSource("resource://org/apache/cocoon/woody/datatype/EnumSelectionListTestCase.dest.xml"); 96 Document expected = parser.parse(expectedSource.getInputStream()); 97 assertEqual("Test if output is what is expected", 98 expected, dest.getDocument()); 99 } 100 101 107 private void assertEqual(String message, Document expected, Document actual) { 108 expected.getDocumentElement().normalize(); 109 actual.getDocumentElement().normalize(); 110 actual.getDocumentElement().setAttribute(Constants.WI_PREFIX, 114 Constants.WI_NS); 115 actual.getDocumentElement().setAttribute("i18n", 116 I18nTransformer.I18N_NAMESPACE_URI); 117 Diff diff = new Diff(expected, actual); 118 assertTrue(message + ", " + diff.toString(), diff.similar()); 119 } 120 121 126 public final void print(Document document, Writer out) { 127 TransformerFactory factory = TransformerFactory.newInstance(); 128 try { 129 javax.xml.transform.Transformer serializer = 130 factory.newTransformer(); 131 serializer.transform( 132 new DOMSource (document), 133 new StreamResult (out)); 134 out.write('\n'); 135 } catch (Exception e) { 136 e.printStackTrace(); 137 } 138 } 139 } 140 | Popular Tags |