aboutsummaryrefslogtreecommitdiffstats
path: root/test/java
diff options
context:
space:
mode:
authorVincent Hennebert <vhennebert@apache.org>2010-04-09 15:21:00 +0000
committerVincent Hennebert <vhennebert@apache.org>2010-04-09 15:21:00 +0000
commit83f36b614c3f1f1a866ff70fe9363cd5be31e986 (patch)
tree6e96940806b3600d3bd964eb24611a43fa7e7505 /test/java
parentfad33d93cca6ce80d6291b7b36f8ed5f01f6b6d7 (diff)
downloadxmlgraphics-fop-83f36b614c3f1f1a866ff70fe9363cd5be31e986.tar.gz
xmlgraphics-fop-83f36b614c3f1f1a866ff70fe9363cd5be31e986.zip
Added test cases to ensure that the event notification system runs smoothly
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@932461 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'test/java')
-rw-r--r--test/java/org/apache/fop/events/EventChecker.java52
-rw-r--r--test/java/org/apache/fop/events/EventProcessingTestCase.java117
2 files changed, 169 insertions, 0 deletions
diff --git a/test/java/org/apache/fop/events/EventChecker.java b/test/java/org/apache/fop/events/EventChecker.java
new file mode 100644
index 000000000..767c590ed
--- /dev/null
+++ b/test/java/org/apache/fop/events/EventChecker.java
@@ -0,0 +1,52 @@
+/*
+ * 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.events;
+
+import junit.framework.Assert;
+
+/**
+ * Class that checks that an expected event is produced, and only this one.
+ */
+class EventChecker extends Assert implements EventListener {
+
+ private final String expectedEventID;
+
+ private boolean eventReceived;
+
+ EventChecker(String expectedEventID) {
+ this.expectedEventID = expectedEventID;
+ }
+
+ public void processEvent(Event event) {
+ // Always create the message to make sure there is no error in the formatting process
+ String msg = EventFormatter.format(event);
+ if (event.getEventID().equals(expectedEventID)) {
+ eventReceived = true;
+ } else {
+ fail("Unexpected event: id = " + event.getEventID() + ": "+ msg);
+ }
+ }
+
+ void end() {
+ if (!eventReceived) {
+ fail("Did not received expected event: " + expectedEventID);
+ }
+ }
+}
diff --git a/test/java/org/apache/fop/events/EventProcessingTestCase.java b/test/java/org/apache/fop/events/EventProcessingTestCase.java
new file mode 100644
index 000000000..cf23c1dab
--- /dev/null
+++ b/test/java/org/apache/fop/events/EventProcessingTestCase.java
@@ -0,0 +1,117 @@
+/*
+ * 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.events;
+
+import java.io.File;
+
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.stream.StreamSource;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.apache.commons.io.output.NullOutputStream;
+
+import org.apache.xmlgraphics.util.MimeConstants;
+
+import org.apache.fop.apps.FOPException;
+import org.apache.fop.apps.Fop;
+import org.apache.fop.apps.FopFactory;
+import org.apache.fop.area.AreaEventProducer;
+import org.apache.fop.fo.FOValidationEventProducer;
+import org.apache.fop.fo.flow.table.TableEventProducer;
+import org.apache.fop.layoutmgr.BlockLevelEventProducer;
+import org.apache.fop.layoutmgr.inline.InlineLevelEventProducer;
+
+/**
+ * Tests that the event notification system runs smoothly.
+ */
+public class EventProcessingTestCase extends TestCase {
+
+ private final FopFactory fopFactory = FopFactory.newInstance();
+
+ private final TransformerFactory tFactory = TransformerFactory.newInstance();
+
+ private final File basedir;
+
+ public EventProcessingTestCase(String name) {
+ super(name);
+ String base = System.getProperty("basedir");
+ if (base != null) {
+ basedir = new File(base);
+ } else {
+ basedir = new File(".");
+ }
+ }
+
+ private void doTest(String filename, String expectedEventID)
+ throws FOPException, TransformerException {
+ Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, new NullOutputStream());
+ EventChecker eventChecker = new EventChecker(expectedEventID);
+ fop.getUserAgent().getEventBroadcaster().addEventListener(eventChecker);
+ Transformer transformer = tFactory.newTransformer();
+ Source src = new StreamSource(new File(basedir, filename));
+ Result res = new SAXResult(fop.getDefaultHandler());
+ transformer.transform(src, res);
+ eventChecker.end();
+ }
+
+ public void testArea() throws FOPException, TransformerException {
+ doTest("area.fo",
+ AreaEventProducer.class.getName() + ".unresolvedIDReferenceOnPage");
+ }
+
+ public void testResource() throws FOPException, TransformerException {
+ doTest("resource.fo",
+ ResourceEventProducer.class.getName() + ".imageNotFound");
+ }
+
+ public void testValidation() throws FOPException, TransformerException {
+ doTest("validation.fo",
+ FOValidationEventProducer.class.getName() + ".invalidPropertyValue");
+ }
+
+ public void testTable() throws FOPException, TransformerException {
+ doTest("table.fo",
+ TableEventProducer.class.getName() + ".noTablePaddingWithCollapsingBorderModel");
+ }
+
+ public void testBlockLevel() throws FOPException, TransformerException {
+ doTest("block-level.fo",
+ BlockLevelEventProducer.class.getName() + ".overconstrainedAdjustEndIndent");
+ }
+
+ public void testInlineLevel() throws FOPException, TransformerException {
+ doTest("inline-level.fo",
+ InlineLevelEventProducer.class.getName() + ".lineOverflows");
+ }
+
+ public static Test suite() {
+ TestSuite suite = new TestSuite();
+ suite.addTestSuite(EventProcessingTestCase.class);
+ return suite;
+ }
+}