diff options
Diffstat (limited to 'test')
7 files changed, 384 insertions, 1 deletions
diff --git a/test/java/org/apache/fop/StandardTestSuite.java b/test/java/org/apache/fop/StandardTestSuite.java index 33e034de0..6399d3b09 100644 --- a/test/java/org/apache/fop/StandardTestSuite.java +++ b/test/java/org/apache/fop/StandardTestSuite.java @@ -22,6 +22,7 @@ package org.apache.fop; import junit.framework.Test; import junit.framework.TestSuite; +import org.apache.fop.fonts.TrueTypeAnsiTestCase; import org.apache.fop.render.pdf.PDFAConformanceTestCase; import org.apache.fop.render.pdf.PDFCMapTestCase; import org.apache.fop.render.pdf.PDFEncodingTestCase; @@ -47,6 +48,7 @@ public class StandardTestSuite { suite.addTest(new TestSuite(PDFEncodingTestCase.class)); suite.addTest(new TestSuite(PDFCMapTestCase.class)); suite.addTest(new TestSuite(PDFsRGBSettingsTestCase.class)); + suite.addTest(new TestSuite(TrueTypeAnsiTestCase.class)); suite.addTest(RichTextFormatTestSuite.suite()); //$JUnit-END$ return suite; diff --git a/test/java/org/apache/fop/fonts/TrueTypeAnsiTestCase.java b/test/java/org/apache/fop/fonts/TrueTypeAnsiTestCase.java new file mode 100644 index 000000000..dc9890167 --- /dev/null +++ b/test/java/org/apache/fop/fonts/TrueTypeAnsiTestCase.java @@ -0,0 +1,107 @@ +/* + * 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.fonts; + +import java.io.File; +import java.io.OutputStream; +import java.io.StringReader; +import java.net.URL; +import java.util.List; + +import javax.xml.transform.Result; +import javax.xml.transform.Source; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.sax.SAXResult; +import javax.xml.transform.stream.StreamSource; + +import junit.framework.TestCase; + +import org.apache.commons.io.output.NullOutputStream; + +import org.apache.fop.apps.FOUserAgent; +import org.apache.fop.apps.Fop; +import org.apache.fop.apps.FopFactory; +import org.apache.fop.fonts.apps.TTFReader; +import org.apache.fop.render.pdf.PDFRenderer; + +/** + * Tests XML font metrics file generation and usage for WinAnsi mode. + */ +public class TrueTypeAnsiTestCase extends TestCase { + + /** + * Tests a TrueType font in WinAnsi mode. + * @throws Exception if an error occurs + */ + public void testTrueTypeAnsi() throws Exception { + String fontFamily = "Gladiator Bold"; + File ttfFile = new File("./test/resources/fonts/glb12.ttf"); + File workDir = new File("./build/test-results"); + if (!workDir.isDirectory()) { + assertTrue(workDir.mkdirs()); + } + File metricsFile = new File(workDir, ttfFile.getName() + ".xml"); + if (metricsFile.isFile()) { + assertTrue(metricsFile.delete()); + } + + String[] args = new String[] {"-enc", "ansi", + ttfFile.getCanonicalPath(), metricsFile.getCanonicalPath()}; + TTFReader.main(args); + assertTrue(metricsFile.isFile()); + + FopFactory fopFactory = FopFactory.newInstance(); + FOUserAgent ua = fopFactory.newFOUserAgent(); + PDFRenderer renderer = new PDFRenderer(); + renderer.setUserAgent(ua); + List fontList = new java.util.ArrayList(); + List triplets = new java.util.ArrayList(); + triplets.add(new FontTriplet(fontFamily, "normal", Font.WEIGHT_NORMAL)); + EmbedFontInfo font = new EmbedFontInfo( + metricsFile.toURI().toASCIIString(), + true, triplets, + ttfFile.toURI().toASCIIString(), null); + fontList.add(font); + renderer.addFontList(fontList); + + ua.setRendererOverride(renderer); + OutputStream out = new NullOutputStream(); + + Fop fop = fopFactory.newFop(null, ua, out); + + TransformerFactory tFactory = TransformerFactory.newInstance(); + Source src = new StreamSource(new StringReader( + "<root font-family='" + fontFamily + "'>Test!</root>")); + Result res = new SAXResult(fop.getDefaultHandler()); + Transformer transformer = tFactory.newTransformer( + getSourceForResource(this, "fonttest.xsl")); + transformer.transform(src, res); + } + + private static Source getSourceForResource(Object reference, String name) { + URL url = reference.getClass().getResource(name); + if (url == null) { + throw new NullPointerException("Resource not found: " + name); + } + return new StreamSource(url.toExternalForm()); + } + +} diff --git a/test/java/org/apache/fop/fonts/fonttest.xsl b/test/java/org/apache/fop/fonts/fonttest.xsl new file mode 100644 index 000000000..26c7d72a5 --- /dev/null +++ b/test/java/org/apache/fop/fonts/fonttest.xsl @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:fo="http://www.w3.org/1999/XSL/Format"> + + <xsl:output method="xml" indent="yes"/> + + <xsl:template match="root"> + <fo:root> + <fo:layout-master-set> + <fo:simple-page-master master-name="A4" page-height="29.7cm" page-width="21cm" + margin="2cm"> + <fo:region-body/> + </fo:simple-page-master> + </fo:layout-master-set> + <fo:page-sequence master-reference="A4"> + <fo:flow flow-name="xsl-region-body"> + <fo:block font-family="{@font-family}"> + <xsl:value-of select="."/> + </fo:block> + </fo:flow> + </fo:page-sequence> + </fo:root> + </xsl:template> +</xsl:stylesheet> diff --git a/test/layoutengine/standard-testcases/block-container_absolute-position_multi-column.xml b/test/layoutengine/standard-testcases/block-container_absolute-position_multi-column.xml new file mode 100644 index 000000000..e3b6fb4f8 --- /dev/null +++ b/test/layoutengine/standard-testcases/block-container_absolute-position_multi-column.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + 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$ --> +<testcase> + <info> + <p> + This test checks absolutely positioned block-containers in multi-column documents. + </p> + </info> + <fo> + <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <fo:layout-master-set> + <fo:simple-page-master master-name="normal" page-width="5in" page-height="5in" margin="0.1in"> + <fo:region-body column-count="2" column-gap="0.2in"/> + </fo:simple-page-master> + </fo:layout-master-set> + <fo:page-sequence master-reference="normal"> + <fo:flow flow-name="xsl-region-body" text-align="justify"> + <fo:block background-color="yellow"> + This should not have any line floating over it! This should not have any + line floating over it! This should not have any line floating over it! This + should not have any line floating over it! + </fo:block> + <fo:block span="all" background-color="orange"> + <fo:block padding-top="0.5em" padding-bottom="0.5em"> + This should not have any line floating over it! This should not have any + line floating over it! This should not have any line floating over + it!<fo:block /> + </fo:block> + </fo:block> + <fo:block background-color="yellow"> + This should not have any line floating over it! This should not have any + line floating over it! This should not have any line floating over it! This + should not have any line floating over it! + </fo:block> + <fo:block-container absolute-position="absolute" + left="2.5in - 0.1in - 0.025in" top="auto" width="0.05in" height="100%" background-color="red"> + <fo:block/> + </fo:block-container> + <fo:block-container absolute-position="absolute" left="2.5in - 0.1in" top="auto" + reference-orientation="90"> + <fo:block width="100%" line-height="1pt" background-color="black" + height="1pt"> </fo:block> + </fo:block-container> + </fo:flow> + </fo:page-sequence> + </fo:root> + </fo> + <checks> + <!-- + This test is only visually interesting! Visually check that the block container begins + directly under the spanned block! + --> + <eval expected="1" xpath="count(//pageViewport)"/> + </checks> +</testcase> diff --git a/test/layoutengine/standard-testcases/table-cell_bc-child.xml b/test/layoutengine/standard-testcases/table-cell_bc-child.xml new file mode 100644 index 000000000..eb199c73b --- /dev/null +++ b/test/layoutengine/standard-testcases/table-cell_bc-child.xml @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + 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$ --> +<testcase visual="only"> + <info> + <p> + This test checks the rendering of block viewports in reference areas generated + by table-cells. This does not test the layout engine, only the renderer. + </p> + </info> + <fo> + <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <fo:layout-master-set> + <fo:simple-page-master master-name="normal" page-width="5in" page-height="5in" margin="20pt"> + <fo:region-body/> + </fo:simple-page-master> + </fo:layout-master-set> + <fo:page-sequence master-reference="normal"> + <fo:flow flow-name="xsl-region-body"> + <fo:table table-layout="fixed" width="4in" background-color="lightgray" + space-before="2in" space-before.conditionality="retain"> + <fo:table-column column-width="100%"/> + <fo:table-body> + <fo:table-row> + <fo:table-cell background-color="rgb(230, 230, 255)"> + <fo:block-container absolute-position="absolute" width="100%" height="2em"> + <fo:block color="red">No red text should be visible!</fo:block> + </fo:block-container> + <fo:block color="green">No red text should be visible!</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row> + <fo:table-cell padding="10pt" background-color="rgb(230, 255, 230)"> + <fo:block-container absolute-position="absolute" width="100%" height="2em" top="10pt"> + <fo:block color="red">No red text should be visible!</fo:block> + </fo:block-container> + <fo:block color="green">No red text should be visible!</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + </fo:flow> + </fo:page-sequence> + </fo:root> + </fo> + <checks> + <!-- Dummy test. This test is only useful with BatchDiffer. --> + <eval expected="1" xpath="count(//pageViewport)"/> + </checks> +</testcase> diff --git a/test/layoutengine/standard-testcases/table_border-collapse_collapse_spans_3.xml b/test/layoutengine/standard-testcases/table_border-collapse_collapse_spans_3.xml new file mode 100644 index 000000000..8d4f42c16 --- /dev/null +++ b/test/layoutengine/standard-testcases/table_border-collapse_collapse_spans_3.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + 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$ --> +<testcase> + <info> + <p> + This test checks tables with collapsing-border model and complex spanning cells. + </p> + </info> + <fo> + <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <fo:layout-master-set> + <fo:simple-page-master master-name="normal" page-width="5in" page-height="4in" margin="0.5in"> + <fo:region-body margin="0pt"/> + </fo:simple-page-master> + </fo:layout-master-set> + <fo:page-sequence master-reference="normal"> + <fo:flow flow-name="xsl-region-body"> + <fo:table table-layout="fixed" width="100%"> + <fo:table-column number-columns-repeated="2" column-width="proportional-column-width(1)"/> + <fo:table-header border-bottom="1pt solid black"> + <fo:table-cell> + <fo:block>Header 1.1</fo:block> + </fo:table-cell> + <fo:table-cell> + <fo:block>Header 1.2</fo:block> + </fo:table-cell> + </fo:table-header> + <fo:table-body> + <fo:table-row> + <fo:table-cell number-columns-spanned="2"> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row> + <fo:table-cell> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + </fo:flow> + </fo:page-sequence> + </fo:root> + </fo> + + <checks> + <eval expected="" xpath="//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#000000,1000,collapse-inner)" xpath="//flow/block[1]/block[1]/@border-after"/> + <eval expected="" xpath="//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#000000,1000,collapse-inner)" xpath="//flow/block[1]/block[2]/@border-after"/> + <eval expected="(solid,#000000,1000,collapse-inner)" xpath="//flow/block[1]/block[3]/@border-before"/> + <eval expected="" xpath="//flow/block[1]/block[3]/@border-after"/> + <eval expected="(solid,#000000,1000,collapse-inner)" xpath="//flow/block[1]/block[4]/@border-before"/> + <eval expected="" xpath="//flow/block[1]/block[4]/@border-after"/> + <eval expected="" xpath="//flow/block[1]/block[6]/@border-before"/> + <eval expected="" xpath="//flow/block[1]/block[6]/@border-after"/> + <eval expected="" xpath="//flow/block[1]/block[7]/@border-before"/> + <eval expected="" xpath="//flow/block[1]/block[7]/@border-after"/> + </checks> +</testcase> diff --git a/test/layoutengine/standard-testcases/table_bug44621.xml b/test/layoutengine/standard-testcases/table_bug44621.xml index b4b9edbd0..ae04d1903 100644 --- a/test/layoutengine/standard-testcases/table_bug44621.xml +++ b/test/layoutengine/standard-testcases/table_bug44621.xml @@ -66,12 +66,32 @@ </fo:table-row> </fo:table-body> </fo:table> + + <fo:block space-before="20pt" space-after="10pt">The after border of cell 1, in the normal + case, is thicker than in the trailing case.</fo:block> + <fo:table width="100%" table-layout="fixed" + font-size="8pt" line-height="10pt"> + <fo:table-body> + <fo:table-row> + <fo:table-cell border="1pt solid black"> + <fo:block>Cell 1</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row> + <fo:table-cell border="2pt solid black"> + <fo:block>Cell 2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + </fo:flow> </fo:page-sequence> </fo:root> </fo> <checks> + <!-- table 1 --> <eval expected="39000" xpath="//pageViewport//flow/block[2]/@bpd"/> <eval expected="39000" xpath="//pageViewport//flow/block[2]/@bpda"/> <!-- cell 1.1 --> @@ -93,12 +113,27 @@ <eval expected="10000" xpath="//pageViewport//flow/block[2]/block[6]/@bpd"/> <eval expected="18000" xpath="//pageViewport//flow/block[2]/block[6]/@bpda"/> + <!-- table 2 --> + <eval expected="23500" xpath="//pageViewport//flow/block[4]/@bpd"/> + <eval expected="23500" xpath="//pageViewport//flow/block[4]/@bpda"/> + <!-- cell 1 --> + <eval expected="10000" xpath="//pageViewport//flow/block[4]/block[1]/@bpd"/> + <eval expected="13000" xpath="//pageViewport//flow/block[4]/block[1]/@bpda"/> + <!-- cell 2 --> + <eval expected="10000" xpath="//pageViewport//flow/block[4]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport//flow/block[4]/block[2]/@bpda"/> + <element-list category="breaker"> <skip>4</skip> <box w="12000"/> - <penalty w="14000" p="0"/><!-- should be 15000 --> + <penalty w="15000" p="0"/> <box w="13000"/> <box w="14000"/> + <skip>6</skip> + <box w="11000"/> + <penalty w="0" p="0"/> + <glue w="500"/> + <box w="12000"/> <skip>3</skip> </element-list> </checks> |