aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremias Maerki <jeremias@apache.org>2005-06-29 13:20:16 +0000
committerJeremias Maerki <jeremias@apache.org>2005-06-29 13:20:16 +0000
commit5d2ba96530eff8c8cb7a0f70b30104a603dd895b (patch)
treee9bb099d142ec02ae6b999e38e374b86fad52409
parentf384710ff92f06f51f86b22ce3ec91fd3d3c8fea (diff)
downloadxmlgraphics-fop-5d2ba96530eff8c8cb7a0f70b30104a603dd895b.tar.gz
xmlgraphics-fop-5d2ba96530eff8c8cb7a0f70b30104a603dd895b.zip
More extensive multi-column layout testing.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@202372 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--test/layoutengine/disabled-testcases.txt2
-rw-r--r--test/layoutengine/testcases/multi-column1.xml75
-rw-r--r--test/layoutengine/testcases/multi-column1a.xml98
-rw-r--r--test/layoutengine/testcases/multi-column2.xml36
-rw-r--r--test/layoutengine/testcases/multi-column3.xml67
5 files changed, 246 insertions, 32 deletions
diff --git a/test/layoutengine/disabled-testcases.txt b/test/layoutengine/disabled-testcases.txt
index d3f3703b1..a5146d8cd 100644
--- a/test/layoutengine/disabled-testcases.txt
+++ b/test/layoutengine/disabled-testcases.txt
@@ -6,6 +6,8 @@ keep-with-previous3.xml
keep-with-previous4.xml
keep-with-previous5.xml
list4.xml
+multi-column2.xml
+multi-column3.xml
normal-breaking4.xml
table-border-collapse1.xml
table-border-collapse2.xml
diff --git a/test/layoutengine/testcases/multi-column1.xml b/test/layoutengine/testcases/multi-column1.xml
index af1741210..451d7141c 100644
--- a/test/layoutengine/testcases/multi-column1.xml
+++ b/test/layoutengine/testcases/multi-column1.xml
@@ -30,43 +30,54 @@
</fo:layout-master-set>
<fo:page-sequence master-reference="normal" white-space-collapse="true">
<fo:flow flow-name="xsl-region-body">
- <fo:block>
- <fo:block>line1</fo:block>
- <fo:block>line2</fo:block>
- <fo:block background-color="orange">line3</fo:block>
- <fo:block>line4</fo:block>
- <fo:block>line5</fo:block>
- <fo:block>line6</fo:block>
- <fo:block>line7</fo:block>
- <fo:block>line8</fo:block>
- <fo:block>line9</fo:block>
- <fo:block>line10</fo:block>
- <fo:block>line11</fo:block>
- <fo:block>line12</fo:block>
- <fo:block>line13</fo:block>
- <fo:block>line14</fo:block>
- <fo:block>line15</fo:block>
- <fo:block>line16</fo:block>
- <fo:block>line17</fo:block>
- <fo:block>line18</fo:block>
- <fo:block>line19</fo:block>
- <fo:block>line20</fo:block>
- <fo:block>line21</fo:block>
- <fo:block>line22</fo:block>
- <fo:block>line23</fo:block>
- <fo:block>line24</fo:block>
- <fo:block>line25</fo:block>
- <fo:block>line26</fo:block>
- <fo:block>line27</fo:block>
- <fo:block>line28</fo:block>
- <fo:block>line29</fo:block>
- <fo:block>line30</fo:block>
- </fo:block>
+ <fo:block>line1</fo:block>
+ <fo:block>line2</fo:block>
+ <fo:block background-color="orange">line3</fo:block>
+ <fo:block>line4</fo:block>
+ <fo:block>line5</fo:block>
+ <fo:block>line6</fo:block>
+ <fo:block>line7</fo:block>
+ <fo:block>line8</fo:block>
+ <fo:block>line9</fo:block>
+ <fo:block>line10</fo:block>
+ <fo:block>line11</fo:block>
+ <fo:block>line12</fo:block>
+ <fo:block>line13</fo:block>
+ <fo:block>line14</fo:block>
+ <fo:block>line15</fo:block>
+ <fo:block>line16</fo:block>
+ <fo:block>line17</fo:block>
+ <fo:block>line18</fo:block>
+ <fo:block>line19</fo:block>
+ <fo:block>line20</fo:block>
+ <fo:block>line21</fo:block>
+ <fo:block>line22</fo:block>
+ <fo:block>line23</fo:block>
+ <fo:block>line24</fo:block>
+ <fo:block>line25</fo:block>
+ <fo:block>line26</fo:block>
+ <fo:block>line27</fo:block>
+ <fo:block>line28</fo:block>
+ <fo:block>line29</fo:block>
+ <fo:block>line30</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</fo>
<checks>
<eval expected="1" xpath="count(//pageViewport)"/>
+
+ <eval expected="1" xpath="count(//regionBody/mainReference/span)"/>
+ <!-- room for 20 lines -->
+ <eval expected="20" xpath="//regionBody/mainReference/span/@bpd div 14400"/>
+
+ <!-- 2 columns -->
+ <eval expected="2" xpath="count(//regionBody/mainReference/span/flow)"/>
+ <!-- 20 lines in first column -->
+ <eval expected="20" xpath="count(//regionBody/mainReference/span/flow[1]/block)"/>
+ <eval expected="20" xpath="//regionBody/mainReference/span/flow[1]/@bpd div 14400"/>
+ <!-- 10 lines in second column -->
+ <eval expected="10" xpath="count(//regionBody/mainReference/span/flow[2]/block)"/>
+ <eval expected="10" xpath="//regionBody/mainReference/span/flow[2]/@bpd div 14400"/>
</checks>
</testcase>
diff --git a/test/layoutengine/testcases/multi-column1a.xml b/test/layoutengine/testcases/multi-column1a.xml
new file mode 100644
index 000000000..3c7b48137
--- /dev/null
+++ b/test/layoutengine/testcases/multi-column1a.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2005 The Apache Software Foundation
+
+ Licensed 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 multi-column documents. Normal multi-column document breaking over more than one page.
+ </p>
+ </info>
+ <fo>
+ <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="normal" page-width="360pt" page-height="2in">
+ <fo:region-body column-count="2" column-gap="20pt"/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+ <fo:page-sequence master-reference="normal" white-space-collapse="true">
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>line1</fo:block>
+ <fo:block>line2</fo:block>
+ <fo:block background-color="orange">line3</fo:block>
+ <fo:block>line4</fo:block>
+ <fo:block>line5</fo:block>
+ <fo:block>line6</fo:block>
+ <fo:block>line7</fo:block>
+ <fo:block>line8</fo:block>
+ <fo:block>line9</fo:block>
+ <fo:block>line10</fo:block>
+ <fo:block>line11</fo:block>
+ <fo:block>line12</fo:block>
+ <fo:block>line13</fo:block>
+ <fo:block>line14</fo:block>
+ <fo:block>line15</fo:block>
+ <fo:block>line16</fo:block>
+ <fo:block>line17</fo:block>
+ <fo:block>line18</fo:block>
+ <fo:block>line19</fo:block>
+ <fo:block>line20</fo:block>
+ <fo:block>line21</fo:block>
+ <fo:block>line22</fo:block>
+ <fo:block>line23</fo:block>
+ <fo:block>line24</fo:block>
+ <fo:block>line25</fo:block>
+ <fo:block>line26</fo:block>
+ <fo:block>line27</fo:block>
+ <fo:block>line28</fo:block>
+ <fo:block>line29</fo:block>
+ <fo:block>line30</fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ </fo:root>
+ </fo>
+ <checks>
+ <eval expected="2" xpath="count(//pageViewport)"/>
+
+ <!-- *** page 1 *** -->
+ <eval expected="1" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span)"/>
+ <!-- room for 10 lines -->
+ <eval expected="10" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span/@bpd div 14400"/>
+
+ <!-- 2 columns -->
+ <eval expected="2" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span/flow)"/>
+ <!-- 10 lines in first column -->
+ <eval expected="10" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span/flow[1]/block)"/>
+ <eval expected="10" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span/flow[1]/@bpd div 14400"/>
+ <!-- 10 lines in second column -->
+ <eval expected="10" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span/flow[2]/block)"/>
+ <eval expected="10" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span/flow[2]/@bpd div 14400"/>
+
+ <!-- *** page 2 *** -->
+ <eval expected="1" xpath="count(//pageViewport[@nr=2]/page/regionViewport/regionBody/mainReference/span)"/>
+ <!-- room for 10 lines -->
+ <eval expected="10" xpath="//pageViewport[@nr=2]/page/regionViewport/regionBody/mainReference/span/@bpd div 14400"/>
+
+ <!-- 2 columns -->
+ <eval expected="2" xpath="count(//pageViewport[@nr=2]/page/regionViewport/regionBody/mainReference/span/flow)"/>
+ <!-- 10 lines in first column -->
+ <eval expected="10" xpath="count(//pageViewport[@nr=2]/page/regionViewport/regionBody/mainReference/span/flow[1]/block)"/>
+ <eval expected="10" xpath="//pageViewport[@nr=2]/page/regionViewport/regionBody/mainReference/span/flow[1]/@bpd div 14400"/>
+ <!-- 0 lines in second column -->
+ <eval expected="0" xpath="count(//pageViewport[@nr=2]/page/regionViewport/regionBody/mainReference/span/flow[2]/block)"/>
+ <eval expected="0" xpath="//pageViewport[@nr=2]/page/regionViewport/regionBody/mainReference/span/flow[2]/@bpd div 14400"/>
+ </checks>
+</testcase>
diff --git a/test/layoutengine/testcases/multi-column2.xml b/test/layoutengine/testcases/multi-column2.xml
index a05d515e9..77f522a93 100644
--- a/test/layoutengine/testcases/multi-column2.xml
+++ b/test/layoutengine/testcases/multi-column2.xml
@@ -72,5 +72,41 @@
</fo>
<checks>
<eval expected="1" xpath="count(//pageViewport)"/>
+
+ <!-- *** page 1 *** -->
+ <eval expected="3" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span)"/>
+
+ <!-- column balancing should produce 5 lines (ceil(13 / 3)) -->
+ <eval expected="5" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/@bpd div 14400"/>
+ <!-- 3 columns in span 1 -->
+ <eval expected="3" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/flow)"/>
+ <!-- 5 lines in first column -->
+ <eval expected="5" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/flow[1]/block)"/>
+ <eval expected="5" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/flow[1]/@bpd div 14400"/>
+ <!-- 5 lines in second column -->
+ <eval expected="5" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/flow[2]/block)"/>
+ <eval expected="5" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/flow[2]/@bpd div 14400"/>
+ <!-- 3 lines in third column -->
+ <eval expected="3" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/flow[3]/block)"/>
+ <eval expected="3" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/flow[3]/@bpd div 14400"/>
+
+ <!-- second span should produce 4 lines -->
+ <eval expected="4" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[2]/@bpd div 14400"/>
+ <!-- 1 column in span 2 -->
+ <eval expected="1" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[2]/flow)"/>
+ <eval expected="4" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[2]/flow[1]/block)"/>
+ <eval expected="4" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[2]/flow[1]/@bpd div 14400"/>
+
+ <!-- no column balancing in the last span -->
+ <eval expected="3" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[3]/@bpd div 14400"/>
+ <!-- 3 columns in span 3 -->
+ <eval expected="3" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[3]/flow)"/>
+ <!-- 11 lines in first column -->
+ <eval expected="11" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[3]/flow[1]/block)"/>
+ <eval expected="11" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[3]/flow[1]/@bpd div 14400"/>
+ <!-- 2 lines in second column (no column balancing here)-->
+ <eval expected="2" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[3]/flow[2]/block)"/>
+ <eval expected="2" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[3]/flow[2]/@bpd div 14400"/>
+
</checks>
</testcase>
diff --git a/test/layoutengine/testcases/multi-column3.xml b/test/layoutengine/testcases/multi-column3.xml
new file mode 100644
index 000000000..255ef256b
--- /dev/null
+++ b/test/layoutengine/testcases/multi-column3.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2005 The Apache Software Foundation
+
+ Licensed 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 multi-column documents. This test: footnotes in multi-column documents (no spans).
+ </p>
+ </info>
+ <fo>
+ <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">
+ <fo:layout-master-set>
+ <fo:simple-page-master master-name="normal" page-width="360pt" page-height="2in">
+ <fo:region-body column-count="2" column-gap="20pt"/>
+ </fo:simple-page-master>
+ </fo:layout-master-set>
+ <fo:page-sequence master-reference="normal" white-space-collapse="true">
+ <fo:static-content flow-name="xsl-footnote-separator">
+ <fo:block border-top="solid 5pt red"/>
+ </fo:static-content>
+ <fo:flow flow-name="xsl-region-body">
+ <fo:block>line1</fo:block>
+ <fo:block>line2</fo:block>
+ <fo:block>line3</fo:block>
+ <fo:block>line4</fo:block>
+ <fo:block>line5<fo:footnote><fo:inline>x</fo:inline><fo:footnote-body><fo:block background-color="orange">A footnote</fo:block></fo:footnote-body></fo:footnote></fo:block>
+ <fo:block>line6</fo:block>
+ <fo:block>line7</fo:block>
+ <fo:block>line8</fo:block>
+ <fo:block>line9</fo:block>
+ <fo:block>line10</fo:block>
+ <fo:block>line11<fo:footnote><fo:inline>x</fo:inline><fo:footnote-body><fo:block background-color="orange">Another footnote on the second column</fo:block></fo:footnote-body></fo:footnote></fo:block>
+ </fo:flow>
+ </fo:page-sequence>
+ </fo:root>
+ </fo>
+ <checks>
+ <eval expected="1" xpath="count(//pageViewport)"/>
+
+ <eval expected="1" xpath="count(//regionBody/mainReference/span)"/>
+ <!-- room for 7 lines -->
+ <eval expected="7" xpath="//regionBody/mainReference/span/@bpd div 14400"/>
+
+ <!-- 2 columns -->
+ <eval expected="2" xpath="count(//regionBody/mainReference/span/flow)"/>
+ <!-- 7 lines in first column -->
+ <eval expected="7" xpath="count(//regionBody/mainReference/span/flow[1]/block)"/>
+ <eval expected="7" xpath="//regionBody/mainReference/span/flow[1]/@bpd div 14400"/>
+ <!-- 4 lines in second column -->
+ <eval expected="4" xpath="count(//regionBody/mainReference/span/flow[2]/block)"/>
+ <eval expected="4" xpath="//regionBody/mainReference/span/flow[2]/@bpd div 14400"/>
+ </checks>
+</testcase>