package org.tigris.juxy.builder; import junit.framework.TestCase; import org.tigris.juxy.util.DOMUtil; import org.tigris.juxy.util.SAXUtil; import org.tigris.juxy.util.XSLTEngineSupport; import org.w3c.dom.Document; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import javax.xml.transform.Source; import javax.xml.transform.TransformerException; import javax.xml.transform.URIResolver; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.sax.SAXSource; import javax.xml.transform.stream.StreamSource; /** * $Id: UTestTracingURIResolver.java,v 1.3 2006-11-09 18:59:07 pavelsher Exp $ * * @author Pavel Sher */ public class UTestTracingURIResolver extends TestCase { private XSLTEngineSupport engineSupport; protected void setUp() throws Exception { super.setUp(); engineSupport = new XSLTEngineSupport(); } public void testOriginalResolverReturnedNull() throws TransformerException { TracingURIResolver resolver = new TracingURIResolver(new URIResolver() { public Source resolve(String href, String base) { return null; } }, engineSupport); assertNull(resolver.resolve("href", "base")); } public void testDOMSource() throws TransformerException { TracingURIResolver resolver = new TracingURIResolver(new URIResolver() { public Source resolve(String href, String base) throws TransformerException { try { Document doc = DOMUtil.parse("<root/>"); return new DOMSource(doc.getDocumentElement()); } catch (SAXException e) { throw new TransformerException(e); } } }, engineSupport); Source src = resolver.resolve("href", "base"); assertTrue(src instanceof DOMSource); assertEquals("root", ((DOMSource) src).getNode().getNodeName()); } public void testSAXSource_NoXMLReaderPassed() throws TransformerException { TracingURIResolver resolver = new TracingURIResolver(new URIResolver() { public Source resolve(String href, String base) { SAXSource src = new SAXSource(); src.setSystemId("stylesheet.xsl"); return src; } }, engineSupport); Source src = resolver.resolve("href", "base"); assertTrue(src instanceof SAXSource); SAXSource saxSrc = (SAXSource) src; assertEquals("stylesheet.xsl", saxSrc.getSystemId()); XMLReader xmlReader = saxSrc.getXMLReader(); assertNotNull(xmlReader); assertTrue(xmlReader instanceof TracingFilter); } public void testSAXSource_WasXMLReader() throws TransformerException { final XMLReader origReader = SAXUtil.newXMLReader(); TracingURIResolver resolver = new TracingURIResolver(new URIResolver() { public Source resolve(String href, String base) { SAXSource src = new SAXSource(); src.setSystemId("stylesheet.xsl"); src.setXMLReader(origReader); return src; } }, engineSupport); Source src = resolver.resolve("href", "base"); assertTrue(src instanceof SAXSource); SAXSource saxSrc = (SAXSource) src; XMLReader xmlReader = saxSrc.getXMLReader(); assertTrue(xmlReader instanceof TracingFilter); TracingFilter trFilter = (TracingFilter) xmlReader; assertSame(origReader, trFilter.getParent()); } public void testStreamSource() throws TransformerException { TracingURIResolver resolver = new TracingURIResolver(new URIResolver() { public Source resolve(String href, String base) { StreamSource src = new StreamSource(); src.setSystemId("stylesheet.xsl"); return src; } }, engineSupport); Source src = resolver.resolve("href", "base"); assertTrue(src instanceof SAXSource); SAXSource saxSrc = (SAXSource) src; assertEquals("stylesheet.xsl", saxSrc.getSystemId()); } }