/* * 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.render; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.File; import org.junit.Test; import org.apache.commons.io.output.NullOutputStream; import org.apache.fop.apps.FOPException; import org.apache.fop.apps.FOUserAgent; import org.apache.fop.apps.FopFactory; import org.apache.fop.apps.MimeConstants; import org.apache.fop.area.AreaTreeHandler; import org.apache.fop.fo.FOEventHandler; import org.apache.fop.render.intermediate.IFContext; import org.apache.fop.render.intermediate.IFDocumentHandler; import org.apache.fop.render.intermediate.IFRenderer; import org.apache.fop.render.pdf.PDFDocumentHandler; import org.apache.fop.render.rtf.RTFHandler; /** * Tests for {@link RendererFactory}. */ public class RendererFactoryTestCase { @Test public void testDocumentHandlerLevel() throws Exception { FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI()); RendererFactory factory = fopFactory.getRendererFactory(); FOUserAgent ua; IFDocumentHandler handler; IFDocumentHandler overrideHandler; ua = fopFactory.newFOUserAgent(); handler = factory.createDocumentHandler(ua, MimeConstants.MIME_PDF); ua = fopFactory.newFOUserAgent(); overrideHandler = new PDFDocumentHandler(new IFContext(ua)); ua.setDocumentHandlerOverride(overrideHandler); handler = factory.createDocumentHandler(ua, null); assertTrue(handler == overrideHandler); ua = fopFactory.newFOUserAgent(); try { handler = factory.createDocumentHandler(ua, "invalid/format"); fail("Expected UnsupportedOperationException"); } catch (UnsupportedOperationException uoe) { //expected } } @Test public void testRendererLevel() throws Exception { FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI()); RendererFactory factory = fopFactory.getRendererFactory(); FOUserAgent ua; Renderer renderer; ua = fopFactory.newFOUserAgent(); renderer = factory.createRenderer(ua, MimeConstants.MIME_PDF); assertTrue(renderer instanceof IFRenderer); ua = fopFactory.newFOUserAgent(); renderer = factory.createRenderer(ua, MimeConstants.MIME_FOP_IF); assertTrue(renderer instanceof IFRenderer); ua = fopFactory.newFOUserAgent(); IFDocumentHandler overrideHandler; overrideHandler = new PDFDocumentHandler(new IFContext(ua)); ua.setDocumentHandlerOverride(overrideHandler); renderer = factory.createRenderer(ua, null); assertTrue(renderer instanceof IFRenderer); ua = fopFactory.newFOUserAgent(); try { renderer = factory.createRenderer(ua, "invalid/format"); fail("Expected UnsupportedOperationException"); } catch (UnsupportedOperationException uoe) { //expected } } @Test public void testFOEventHandlerLevel() throws Exception { FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI()); RendererFactory factory = fopFactory.getRendererFactory(); FOUserAgent ua; FOEventHandler foEventHandler; FOEventHandler overrideFOEventHandler; ua = fopFactory.newFOUserAgent(); foEventHandler = factory.createFOEventHandler( ua, MimeConstants.MIME_PDF, new NullOutputStream()); assertTrue(foEventHandler instanceof AreaTreeHandler); ua = fopFactory.newFOUserAgent(); foEventHandler = factory.createFOEventHandler( ua, MimeConstants.MIME_RTF, new NullOutputStream()); assertTrue(foEventHandler instanceof RTFHandler); ua = fopFactory.newFOUserAgent(); try { foEventHandler = factory.createFOEventHandler( ua, "invalid/format", new NullOutputStream()); fail("Expected UnsupportedOperationException"); } catch (UnsupportedOperationException uoe) { //expected } ua = fopFactory.newFOUserAgent(); try { foEventHandler = factory.createFOEventHandler( ua, MimeConstants.MIME_PDF, null); fail("Expected FOPException because of missing OutputStream"); } catch (FOPException fe) { //expected } ua = fopFactory.newFOUserAgent(); overrideFOEventHandler = new RTFHandler(ua, new NullOutputStream()); ua.setFOEventHandlerOverride(overrideFOEventHandler); foEventHandler = factory.createFOEventHandler( ua, null, null); assertTrue(foEventHandler == overrideFOEventHandler); } }