/* * Copyright 2004 Sun Microsystems, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.rometools.unittest; import com.sun.syndication.io.XmlReader; import com.sun.syndication.io.impl.XmlFixerReader; import junit.framework.TestCase; import org.jdom.input.SAXBuilder; import java.io.*; /** * @author pat, tucu * */ public class TestXmlFixerReader extends TestCase { private static final String XML_PROLOG = ""; public void testTrim() throws Exception { _testValidTrim("",""); _testValidTrim("",XML_PROLOG+""); _testValidTrim(" ",""); _testValidTrim(" ",XML_PROLOG+""); _testValidTrim(" \n",""); _testValidTrim(" \n",XML_PROLOG+""); _testValidTrim("",""); _testValidTrim("",XML_PROLOG+""); _testValidTrim(" ",""); _testValidTrim(" ",XML_PROLOG+""); _testValidTrim(" ",""); _testValidTrim(" ",XML_PROLOG+""); _testValidTrim(" ",""); _testValidTrim(" ",XML_PROLOG+""); _testValidTrim(" \n ",""); _testValidTrim(" \n ",XML_PROLOG+""); _testInvalidTrim("x",""); _testInvalidTrim("x",XML_PROLOG+""); _testInvalidTrim(" x",""); _testInvalidTrim(" x",XML_PROLOG+""); _testInvalidTrim(" x\n",""); _testInvalidTrim(" x\n",XML_PROLOG+""); _testInvalidTrim("x ",""); _testInvalidTrim(" x ",XML_PROLOG+""); _testInvalidTrim(" x ",""); _testInvalidTrim(" x ",XML_PROLOG+""); _testInvalidTrim(" x\n ",""); _testInvalidTrim(" x\n ",XML_PROLOG+""); } public void testHtmlEntities() throws Exception { _testValidEntities(""); _testValidEntities(XML_PROLOG+""); _testValidEntities(" \n"+XML_PROLOG+""); _testValidEntities("'¥ú¥"); _testValidEntities(XML_PROLOG+"'¥ú¥"); _testValidEntities(" \n"+XML_PROLOG+"'¥ú¥"); _testInvalidEntities("'&yexn;ú¥"); _testInvalidEntities(XML_PROLOG+"'&yexn;ú¥"); _testInvalidEntities(" \n"+XML_PROLOG+"'&yexn;ú¥"); _testInvalidEntities("'¥x50;¥"); _testInvalidEntities(XML_PROLOG+"'¥x50;¥"); _testInvalidEntities(" \n"+XML_PROLOG+"'¥x50;¥"); } protected void _testXmlParse(String garbish,String xmlDoc) throws Exception { InputStream is = getStream(garbish,xmlDoc); Reader reader = new XmlReader(is); reader = new XmlFixerReader(reader); SAXBuilder saxBuilder = new SAXBuilder(); saxBuilder.build(reader); } protected void _testValidTrim(String garbish,String xmlDoc) throws Exception { _testXmlParse(garbish,xmlDoc); } protected void _testInvalidTrim(String garbish,String xmlDoc) throws Exception { try { _testXmlParse(garbish,xmlDoc); assertTrue(false); } catch (Exception ex) { } } protected void _testValidEntities(String xmlDoc) throws Exception { _testXmlParse("",xmlDoc); } protected void _testInvalidEntities(String xmlDoc) throws Exception { try { _testXmlParse("",xmlDoc); assertTrue(false); } catch (Exception ex) { } } // XML Stream generator protected InputStream getStream(String garbish,String xmlDoc) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(1024); Writer writer = new OutputStreamWriter(baos); writer.write(garbish); writer.write(xmlDoc); writer.close(); return new ByteArrayInputStream(baos.toByteArray()); } }