| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You 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. |
| */ |
| |
| /* $Id$ */ |
| |
| package org.apache.fop.intermediate; |
| |
| import java.io.File; |
| import java.io.IOException; |
| import java.io.OutputStream; |
| import java.util.Collection; |
| |
| import javax.xml.transform.Result; |
| import javax.xml.transform.Source; |
| import javax.xml.transform.Templates; |
| import javax.xml.transform.Transformer; |
| import javax.xml.transform.dom.DOMResult; |
| import javax.xml.transform.dom.DOMSource; |
| import javax.xml.transform.sax.SAXResult; |
| import javax.xml.transform.sax.TransformerHandler; |
| |
| import org.apache.fop.apps.FOUserAgent; |
| import org.apache.fop.apps.Fop; |
| import org.apache.fop.apps.MimeConstants; |
| import org.apache.fop.area.AreaTreeModel; |
| import org.apache.fop.area.AreaTreeParser; |
| import org.apache.fop.area.RenderPagesModel; |
| import org.apache.fop.fonts.FontInfo; |
| import org.apache.fop.layoutengine.LayoutEngineTestUtils; |
| import org.apache.fop.render.Renderer; |
| import org.apache.fop.render.xml.XMLRenderer; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| import org.junit.runners.Parameterized; |
| import org.junit.runners.Parameterized.Parameters; |
| import org.w3c.dom.Document; |
| |
| /** |
| * Tests the area tree parser. |
| */ |
| @RunWith(Parameterized.class) |
| public class AreaTreeParserTestCase extends AbstractIntermediateTestCase { |
| |
| /** |
| * Creates the parameters for this test. |
| * |
| * @return the list of file arrays populated with test files |
| * @throws IOException if an I/O error occurs while reading the test file |
| */ |
| @Parameters |
| public static Collection<File[]> getParameters() throws IOException { |
| return LayoutEngineTestUtils.getTestFiles(); |
| } |
| /** |
| * Constructor for the test suite that is used for each test file. |
| * @param testFile the test file to run |
| * @throws IOException |
| * @throws IOException if an I/O error occurs while loading the test case |
| */ |
| public AreaTreeParserTestCase(File testFile) throws IOException { |
| super(testFile); |
| } |
| |
| /** {@inheritDoc} */ |
| protected String getIntermediateFileExtension() { |
| return ".at.xml"; |
| } |
| |
| /** {@inheritDoc} */ |
| protected Document buildIntermediateDocument(Templates templates) |
| throws Exception { |
| Transformer transformer = templates.newTransformer(); |
| setErrorListener(transformer); |
| |
| //Set up XMLRenderer to render to a DOM |
| TransformerHandler handler = testAssistant.getTransformerFactory().newTransformerHandler(); |
| DOMResult domResult = new DOMResult(); |
| handler.setResult(domResult); |
| |
| FOUserAgent userAgent = createUserAgent(); |
| |
| //Create an instance of the target renderer so the XMLRenderer can use its font setup |
| Renderer targetRenderer = userAgent.getRendererFactory().createRenderer( |
| userAgent, getTargetMIME()); |
| |
| XMLRenderer renderer = new XMLRenderer(); |
| renderer.mimicRenderer(targetRenderer); |
| renderer.setContentHandler(handler); |
| renderer.setUserAgent(userAgent); |
| |
| userAgent.setRendererOverride(renderer); |
| |
| Fop fop = fopFactory.newFop(MimeConstants.MIME_FOP_AREA_TREE, userAgent); |
| Result res = new SAXResult(fop.getDefaultHandler()); |
| transformer.transform(new DOMSource(testDoc), res); |
| |
| return (Document)domResult.getNode(); |
| } |
| |
| /** {@inheritDoc} */ |
| protected void parseAndRender(Source src, OutputStream out) throws Exception { |
| AreaTreeParser parser = new AreaTreeParser(); |
| |
| FOUserAgent userAgent = createUserAgent(); |
| FontInfo fontInfo = new FontInfo(); |
| AreaTreeModel treeModel = new RenderPagesModel(userAgent, |
| getTargetMIME(), fontInfo, out); |
| parser.parse(src, treeModel, userAgent); |
| treeModel.endDocument(); |
| } |
| |
| /** {@inheritDoc} */ |
| protected Document parseAndRenderToIntermediateFormat(Source src) throws Exception { |
| AreaTreeParser parser = new AreaTreeParser(); |
| |
| //Set up XMLRenderer to render to a DOM |
| TransformerHandler handler = testAssistant.getTransformerFactory().newTransformerHandler(); |
| DOMResult domResult = new DOMResult(); |
| handler.setResult(domResult); |
| XMLRenderer renderer = new XMLRenderer(); |
| renderer.setContentHandler(handler); |
| |
| FOUserAgent userAgent = createUserAgent(); |
| userAgent.setRendererOverride(renderer); |
| renderer.setUserAgent(userAgent); |
| |
| FontInfo fontInfo = new FontInfo(); |
| AreaTreeModel treeModel = new RenderPagesModel(userAgent, |
| MimeConstants.MIME_FOP_AREA_TREE, fontInfo, null); |
| parser.parse(src, treeModel, userAgent); |
| treeModel.endDocument(); |
| |
| return (Document)domResult.getNode(); |
| } |
| |
| @Override |
| @Test |
| public void runTest() throws Exception { |
| try { |
| testParserToIntermediateFormat(); |
| testParserToPDF(); |
| } catch (Exception e) { |
| org.apache.commons.logging.LogFactory.getLog(this.getClass()).error( |
| "Error on " + testFile.getName()); |
| throw e; |
| } |
| } |
| |
| } |