1 37 package net.sourceforge.cruisecontrol.util; 38 39 import java.io.StringReader ; 40 import java.io.StringWriter ; 41 import java.io.Writer ; 42 43 import org.jdom.Document; 44 import org.jdom.input.SAXBuilder; 45 import org.jdom.output.XMLOutputter; 46 import org.xml.sax.XMLFilter ; 47 48 import junit.framework.TestCase; 49 50 54 public class EmptyElementFilterTest extends TestCase { 55 56 private SAXBuilder builder; 57 58 protected void setUp() throws Exception { 59 builder = new SAXBuilder("org.apache.xerces.parsers.SAXParser"); 60 XMLFilter emptyTaskFilter = new EmptyElementFilter("task"); 61 XMLFilter emptyMessageFilter = new EmptyElementFilter("message"); 62 emptyTaskFilter.setParent(emptyMessageFilter); 63 builder.setXMLFilter(emptyTaskFilter); 64 } 65 66 public void testFiltering() throws Exception { 67 String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" 68 + "<?xml-stylesheet type=\"text/xsl\" HREF=\"log.xsl\"?>\n\n" 69 + "<build time=\"43 seconds\">\n" 70 + "\t<task location=\"nightlybuild.xml:5: \" name=\"property\" time=\"0 seconds\"></task>\n" 72 + "\t<target name=\"build\" time=\"43 seconds\">\n" 73 + "\t\t<task location=\"nightlybuild.xml:21: \" name=\"exec\" time=\"1 seconds\">\n" 74 + "\t\t\t<message priority=\"info\"><![CDATA[Generating buildscript... done]]></message>\n" 75 + "\t\t\t<message priority=\"warn\"><![CDATA[]]></message>\n" 77 + "\t\t</task>\n" 78 + "\t</target>\n" 79 + "</build>\n"; 80 81 Document doc = builder.build(new StringReader (xml)); 82 Writer stringWriter = new StringWriter (); 83 new XMLOutputter().output(doc, stringWriter); 84 String filteredXml = stringWriter.toString(); 85 assertTrue("empty <task> should have been filtered", 86 filteredXml.indexOf("<task location=\"nightlybuild.xml:5: \"") == -1); 87 assertTrue("empty <message> should have been filtered", 88 filteredXml.indexOf("<message priority=\"warn\"") == -1); 89 assertTrue("non-empty task should not have been filtered", 90 filteredXml.indexOf("<task location=\"nightlybuild.xml:21: \"") != -1); 91 assertTrue("non-empty message should not have been filtered", 92 filteredXml.indexOf("<message priority=\"info\">") != -1); 93 } 94 95 } 96 | Popular Tags |