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